在Android设备上面用Termux安装CC和Codex--首页文章大图
软件调试

手机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自带了不少,但是都装一下吧,防止谁的有问题

Bash
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
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

Error
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,你就知道为啥了

Error
$ 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了,直接执行一个替换就行了

Bash
$ cp --remove-destination "$PREFIX/bin/rg" "$codex_dir/codex-path/rg"
$ "$codex_dir/codex-path/rg" --version

接下来,应该行了吧?直接codex启动!

你会发现,还是不行。不过很快了。已经到了最后一个阶段就是修复后台服务。

Bash
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后面追加上这个就行了。嫌麻烦?有两个办法:

Bash
codex features disable daemon_auto_start

这个是直接干掉自动启动。没有了后台服务那自然不会卡我了对吧?
当然,也可以写一个别名,就像这样

~/.bashrc
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会咋样?
Bash
$ 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.

那么,开始动手吧。

先在 Termux 装 Alpine
pkg install proot-distro
proot-distro install alpine:latest --name alpine
proot-distro login alpine
在 Alpine 里面执行
apk 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里面,所以打开它需要这样

Bash
proot-distro login alpine
claude

这样见到正常的页面了,就可以 exit退出cc,再exit退出proot回到Termux了。
每次这么开肯定也不舒服对吧?那还是写一个别名吧:

~/.bashrc
claude() {
  proot-distro login alpine -- env USE_BUILTIN_RIPGREP=0 claude "$@"
}

保存完执行下面这个刷新一下:

Bash
source ~/.bashrc
claude

接着,就进去CC了,尽情享受吧

坑

这里的大坑主要有2个:

1.手机关掉梯子后,CC和Codex无法联网

一篇文章写太长了也不好,这里就另开一个页面来写吧。

占位符

2.Claude Code特别卡顿

占位符

  1. GNU C Library,Linux 系统中最基础、最常用的 C 标准库。功能全,但体积大。
  2. 一种轻量级的 C 标准库。相比常见的 glibc,它体积更小,常用于极简的 Linux 系统。
  3. PRoot 是一个用户空间的 chroot 工具。正常 Linux 下切换系统环境需要 Root 权限,但在未 Root 的 Android(Termux)里,PRoot 利用系统调用拦截(ptrace)技术,“欺骗”程序以为自己在一个独立的 Linux 环境里(即 Alpine),从而让普通用户也能在手机上跑各种 Linux 发行版。
  4. 一款追求极致轻量化的 Linux 发行版,默认自带 musl 环境,常用于容器和嵌入式设备。

留言

您的邮箱地址不会被公开。 必填项已用 * 标注