手机Termux安装claude code & Codex教程
注:这篇文章只讲了安装到能用,但是部分手机会出现无法联网的问题,或者CC卡顿。详情看看坑1,2
前言
想必大家在电脑上都已经爽蹬ai编程了,但是在手机上呢?你说远控,那确实。各家都有一些远程访问的功能,但是和手机配合不好。如果是ssh连接Tui,那就很棒了。但是,这也只是远控
如果能让agent直接操控手机那不是更好?特别是对于pro用户来说,有了adb权限甚至root,可以让agent自己写模块,查日志,排障和干活。再也不用托着个电脑到处跑了。
那么,harness那么多,安卓移植的和原生的都有。但是为啥选这两个?
其实也很简单😂用的多罢了。
1.用的多,上手快
2.Tui非常强大,不依赖web管理
3.和Termux这种linux环境配合极强
那别的也不说了,直接开始吧
前期准备
1. Termux
先简单介绍一下Termux吧。你可以理解成安卓手机上面的一个虚拟终端。提供了一个”Linux”环境。它不需要adb或者root就能提供基本的linux功能,可以随便装大多数的arm64的linux软件,包括但不限于python,Node.js,git和各种杂七杂八玩意。不过么,兼容性还是会有一点的问题,需要我们额外处理,那么亿点点…
其实,你用termux打linux游戏甚至跑各种大型软件都是没问题的,限制只是在于手机这个载体太拉跨了点。极客湾各种手机玩pc游戏的视频,基本都是在Termux里面操作的。可玩性极高。
这里肯定直接下最新版好了(虽然但是最新版也是25年5月的了)。可以去github下载最新release或者Fdroid都行。
官网:Termux | The main termux site and help pages.
Github: termux/termux-app: Termux – a terminal emulator application for Android OS extendible by variety of packages.
Fdroid: Termux | F-Droid – Free and Open Source Android App Repository
下载安装完了之后,进入Termux,执行以下命令:
注:Termux自带了不少,但是都装一下吧,防止谁的有问题
termux-setup-storage
pkg update
pkg upgrade
pkg install git curl nodejs-lts npm ripgrep termux-setup-storage: 让Termux申请安卓的文件访问权限,方便以后使用。这里弹窗点始终允许。
pkg update pkg upgrade: 更新一下索引和软件
pkg install git curl ca-certificates nodejs-lts npm ripgrep 安装我们要的这些包。
注:如果有问你是否安装,输入y或者yes回车就行
| 包 | 用途 |
|---|---|
| git | 操作代码仓库 |
| curl | 下载和排查 HTTP 连接 |
| nodejs-lts | 本文采用的 npm 安装路线所需的 Node 环境 |
| npm | 安装 npm 软件包;目前在 Termux 中与 Node 分开打包 |
| ripgrep | 提供 Termux 原生 rg,也用于 Codex 包内搜索工具的兼容处理 |
2. Codex和CC的文件/梯子
可以手动准备,但是命令装更好。不过…你大概需要一些魔法。
基本上开了代理就行。实在不行就在梯子软件里面打开“对局域网开放” ,然后设置好一个端口备用。
开始安装
1.Codex
我不听教程我就要硬装
Error: Missing optional dependency @openai/codex-linux-arm64. Reinstall Codex: npm install -g @openai/codex@latest可是这是个安卓设备啊😅Codex官方没有提供安卓包,所以直接炸飞
Codex 直接装在 Termux 里。不过这里要把主包和 ARM64 包一起装:
codex_version=$(npm view @openai/codex@latest version)
npm install -g --force \
"@openai/codex@${codex_version}" \
"@openai/codex-linux-arm64@npm:@openai/codex@${codex_version}-linux-arm64"npm install -g --force \
@openai/codex@0.160.0 \
'@openai/codex-linux-arm64@npm:@openai/codex@0.160.0-linux-arm64'为啥要加–force 来强制指定?
因为系统默认安卓和linux东西不兼容,会直接报错,like this
npm error code EBADPLATFORM
npm error notsup Unsupported platform for @openai/codex@0.166.0-linux-arm64: wanted {"os":"linux","cpu":"arm64"} (current: {"os":"android","cpu":"arm64"})所以这里手动补齐平台包,用 --force 跳过平台检查。它只管让 npm 安装,后面运行上的兼容问题还得处理。
这里就是单独装codex。装好之后肯定命令行直接codex回车启动,然后你会发现,欸他还是跑不了…
单独测一下rg,你就知道为啥了
$ codex_dir="$(npm root -g)/@openai/codex-linux-arm64/vendor/aarch64-unknown-linux-musl"
$ "$codex_dir/codex-path/rg" --version
cannot execute: required file not found
但是其实Codex自带了一份rg。不过可惜的是,他不能直接在termux里面运行。它需要/lib/ld-linux-aarch64.so.1,不过Termux 里没有这个加载器。
虽说如此,不过也好解决。我们前面已经装了termux自己的rg了,直接执行一个替换就行了
$ cp --remove-destination "$PREFIX/bin/rg" "$codex_dir/codex-path/rg"
$ "$codex_dir/codex-path/rg" --version接下来,应该行了吧?直接codex启动!
你会发现,还是不行。不过很快了。已经到了最后一个阶段就是修复后台服务。
Error: app server did not become ready on …/app-server-control.sock
Error: Permission denied (os error 13): failed to connect to …/app-server-control.sock: No such file or directory (os error 2)
To work without the background server, rerun the same command with --no-daemon (including resume or fork and its arguments).OAI已经给我们写好了这个的解决方法。你看这个 –no-daemon,每次启动的时候在codex后面追加上这个就行了。嫌麻烦?有两个办法:
codex features disable daemon_auto_start这个是直接干掉自动启动。没有了后台服务那自然不会卡我了对吧?
当然,也可以写一个别名,就像这样
alias codex='codex --no-daemon'接下来,Codex的主页应该能正常打开了。开始爽玩吧。
2.Claude code
CC这里要多绕一步。虽然说前面的 Codex 也是借用 Linux ARM64 包,但是Linux软件能不能跑除了要对上ARM64这些CPU架构,还要看运行库。常见的有glibc1和musl2。CC 这份 Linux musl 程序还需要对应的加载器和运行库,Termux 里面没有现成的,表示无能为力了。
所以我们用PRoot3在Termux里面搭一个Alpine4环境,再把CC装进去。Alpine自带了它需要的musl环境,剩下的依赖也可以直接用包管理器补上。
再来介绍一下PRoot和Alpine吧。前面的Termux已经提供了一个“Linux”环境,不过有些软件需要的运行库、目录结构和它对不上,这时候就可以借PRoot”装”个Linux发行版进来。
直接安装CC会咋样?
$ npm install @anthropic-ai/claude-code@2.1.218
$ claude --version
Error: claude native binary not installed.
# 要是我们手动执行 node install.cjs 会咋样?
$ node install.cjs
[@anthropic-ai/claude-code postinstall] Native binaries for linux-arm64-android are not available on this release channel.那么,开始动手吧。
pkg install proot-distro
proot-distro install alpine:latest --name alpine
proot-distro login alpineapk add --no-cache nodejs npm bash git ca-certificates libgcc libstdc++ ripgrep
npm install -g @anthropic-ai/claude-code@latest
claude --version注:这里的npm,bash,git这些都要另外装,毕竟这是一个新的Alpine环境而非我们之前用的Termux自己的环境了。
这是安装最新版的命令。如果要固定版本,可以把里面替换成这两个
proot-distro install alpine:3.24 –name alpine
npm install -g @anthropic-ai/claude-code@2.1.218
然后啊,我们这个装的cc在Alpine里面,所以打开它需要这样
proot-distro login alpine
claude这样见到正常的页面了,就可以 exit退出cc,再exit退出proot回到Termux了。
每次这么开肯定也不舒服对吧?那还是写一个别名吧:
claude() {
proot-distro login alpine -- env USE_BUILTIN_RIPGREP=0 claude "$@"
}保存完执行下面这个刷新一下:
source ~/.bashrc
claude接着,就进去CC了,尽情享受吧
坑
这里的大坑主要有2个:
1.手机关掉梯子后,CC和Codex无法联网
一篇文章写太长了也不好,这里就另开一个页面来写吧。
占位符
2.Claude Code特别卡顿
占位符
- GNU C Library,Linux 系统中最基础、最常用的 C 标准库。功能全,但体积大。
- 一种轻量级的 C 标准库。相比常见的 glibc,它体积更小,常用于极简的 Linux 系统。
- PRoot 是一个用户空间的
chroot工具。正常 Linux 下切换系统环境需要 Root 权限,但在未 Root 的 Android(Termux)里,PRoot 利用系统调用拦截(ptrace)技术,“欺骗”程序以为自己在一个独立的 Linux 环境里(即 Alpine),从而让普通用户也能在手机上跑各种 Linux 发行版。 - 一款追求极致轻量化的 Linux 发行版,默认自带 musl 环境,常用于容器和嵌入式设备。