# OpenClaw on Android
[English](README.md) | [한국어](README.ko.md)





Android 也配拥有一个 Shell。
## 无需安装 Linux
在 Android 上运行 OpenClaw 的常规方法是通过 proot-distro 安装一个完整的 Linux 发行版,需要额外占用 700MB-1GB 的存储空间。OpenClaw on Android 只安装 glibc 动态链接器(ld.so),无需完整 Linux 发行版即可运行 OpenClaw。
**常规方法**:在 Termux 中通过 proot-distro 安装完整的 Linux 发行版。
```
┌───────────────────────────────────────────────────┐
│ Linux Kernel │
│ ┌───────────────────────────────────────────────┐ │
│ │ Android · Bionic libc · Termux │ │
│ │ ┌───────────────────────────────────────────┐ │ │
│ │ │ proot-distro · Debian/Ubuntu │ │ │
│ │ │ ┌───────────────────────────────────────┐ │ │ │
│ │ │ │ GNU glibc │ │ │ │
│ │ │ │ Node.js → OpenClaw │ │ │ │
│ │ │ └───────────────────────────────────────┘ │ │ │
│ │ └───────────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────────┘ │
└───────────────────────────────────────────────────┘
```
**本项目**:无需 proot-distro,只安装 glibc 动态链接器。
```
┌───────────────────────────────────────────────────┐
│ Linux Kernel │
│ ┌───────────────────────────────────────────────┐ │
│ │ Android · Bionic libc · Termux │ │
│ │ ┌───────────────────────────────────────────┐ │ │
│ │ │ glibc ld.so (linker only) │ │ │
│ │ │ ld.so → Node.js → OpenClaw │ │ │
│ │ └───────────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────────┘ │
└───────────────────────────────────────────────────┘
```
| | 常规方法 (proot-distro) | 本项目 |
|---|---|---|
| 存储开销 | 1-2GB(Linux + 软件包) | ~200MB |
| 安装时间 | 20-30 分钟 | 3-10 分钟 |
| 性能 | 较慢(proot 中间层) | 原生速度 |
| 安装步骤 | 安装发行版、配置 Linux、安装 Node.js、修复路径…… | 一条命令搞定 |
##
Claw App
还提供了独立的 Android 应用。它将终端模拟器和基于 WebView 的界面打包成一个 APK,无需 Termux。
- 一键安装:在应用内完成 bootstrap、Node.js 和 OpenClaw 的安装
- 内置仪表盘:控制网关、查看运行状态、管理工具
- 独立于 Termux 运行 — 安装此应用不会影响已有的 Termux + `oa` 环境
前往 [Releases](https://github.com/AidanPark/openclaw-android/releases) 页面下载 APK。
> **中国用户**:如果无法直接从 GitHub 下载,可使用镜像链接:
> [ghfast.top 镜像下载](https://ghfast.top/https://github.com/AidanPark/openclaw-android/releases/latest/download/app-release.apk)
## 系统要求
- Android 7.0 或更高版本(推荐 Android 10+)
- 约 1GB 可用存储空间
- Wi-Fi 或移动数据连接
## 安装内容
安装程序会自动处理 Termux 与标准 Linux 之间的差异。你无需手动操作——一条安装命令会完成以下所有工作:
1. **glibc 环境** — 安装 glibc 动态链接器(通过 pacman 的 glibc-runner),使标准 Linux 二进制文件无需修改即可运行
2. **Node.js (glibc)** — 下载官方 Node.js linux-arm64 版本,并通过 ld.so 加载脚本进行包装(不使用 patchelf,因为它会在 Android 上导致段错误)
3. **路径转换** — 自动将标准 Linux 路径(`/tmp`、`/bin/sh`、`/usr/bin/env`)转换为 Termux 路径
4. **临时目录配置** — 为 Android 配置可访问的临时文件夹
5. **服务管理绕过** — 在没有 systemd 的环境下配置正常运行
6. **OpenCode 集成** — 如果选择安装,会使用 proot + ld.so 拼接方式安装 OpenCode(用于 Bun 独立二进制文件)
## 从全新手机开始的详细步骤
1. [准备你的手机](#步骤一准备你的手机)
2. [安装 Termux](#步骤二安装-termux)
3. [Termux 初始设置](#步骤三termux-初始设置)
4. [安装 OpenClaw](#步骤四安装-openclaw) — 一条命令
5. [启动 OpenClaw 初始配置](#步骤五启动-openclaw-初始配置)
6. [启动 OpenClaw(网关)](#步骤六启动-openclaw网关)
### 步骤一:准备你的手机
配置开发者选项、保持唤醒、充电限制和电池优化。详细步骤请参阅 [保持进程存活指南](docs/disable-phantom-process-killer.md)。
### 步骤二:安装 Termux
> **重要提示**:Play Store 版本的 Termux 已停止维护,无法正常使用。必须从 F-Droid 安装。
1. 用手机浏览器打开 [f-droid.org](https://f-droid.org)
2. 搜索 `Termux`,然后点击 **Download APK** 下载并安装
- 提示时请允许"安装来自未知来源的应用"
### 步骤三:Termux 初始设置
打开 Termux 应用,粘贴以下命令安装 curl(下一步需要用到)。
```bash
pkg update -y && pkg install -y curl
```
> 首次运行时可能会要求你选择镜像源。随便选一个就行,选地理位置较近的会更快。
### 步骤四:安装 OpenClaw
> **提示:使用 SSH 输入更方便**
> 从这一步开始,你可以用电脑键盘输入命令,而不必在手机屏幕上打字。详见 [Termux SSH 设置指南](docs/termux-ssh-guide.md)。
在 Termux 中粘贴以下命令。
```bash
curl -sL myopenclawhub.com/install | bash && source ~/.bashrc
```
一条命令自动完成所有安装。根据网络速度和设备性能,大约需要 3-10 分钟。建议使用 Wi-Fi。
> **中国网络优化**:脚本会自动检测网络环境。如果 GitHub 访问较慢,会自动切换到镜像站点下载;如果 npm 安装速度较慢,会自动切换到 npmmirror.com 镜像。无需手动配置。
安装完成后,会显示 OpenClaw 版本以及运行 `openclaw onboard` 的提示。
### 步骤五:启动 OpenClaw 初始配置
按照安装输出中的提示,运行:
```bash
openclaw onboard
```
按照屏幕上的指引完成初始设置。

### 步骤六:启动 OpenClaw(网关)
初始设置完成后,启动网关:
> **重要提示**:请直接在手机上的 Termux 应用中运行 `openclaw gateway`,不要通过 SSH。如果通过 SSH 运行,当 SSH 会话断开时网关也会停止。
网关运行时会占用当前终端,因此需要新开一个标签页。点击底部菜单栏的 **汉堡菜单图标(☰)**,或从屏幕左侧边缘向右滑动(在底部菜单栏上方区域)打开侧边菜单,然后点击 **NEW SESSION**。
在新标签页中运行:
```bash
openclaw gateway
```
> 要停止网关,按 `Ctrl+C`。不要使用 `Ctrl+Z` — 它只会挂起进程而不会终止它。
## 保持进程存活
Android 可能会在屏幕关闭时杀死后台进程或对其进行限制。详细的推荐设置请参阅 [保持进程存活指南](docs/disable-phantom-process-killer.md)(开发者选项、保持唤醒、充电限制、电池优化和 Phantom Process Killer)。
## 从电脑访问仪表盘
请参阅 [Termux SSH 设置指南](docs/termux-ssh-guide.md) 了解 SSH 访问和仪表盘隧道设置。
## 管理多台设备
如果你在同一网络中的多台设备上运行 OpenClaw,可以使用 Dashboard Connect 工具从电脑统一管理。
- 为每台设备保存连接设置(IP、令牌、端口),并设置昵称
- 自动生成 SSH 隧道命令和仪表盘 URL
- **数据留在本地** — 连接设置(IP、令牌、端口)仅保存在浏览器的 localStorage 中,永远不会发送到任何服务器。
## CLI 参考
安装完成后,可以使用 `oa` 命令管理你的安装:
| 选项 | 说明 |
|--------|-------------|
| `oa --update` | 更新 OpenClaw 和 Android 补丁 |
| `oa --install` | 安装可选工具(tmux、code-server、AI CLI 等) |
| `oa --uninstall` | 卸载 OpenClaw on Android |
| `oa --backup` | 创建 OpenClaw 数据的完整备份 |
| `oa --restore` | 从备份恢复 |
| `oa --status` | 显示安装状态和所有已安装组件 |
| `oa --version` | 显示版本 |
| `oa --help` | 显示可用选项 |
## 更新
```bash
oa --update && source ~/.bashrc
```
一条命令更新所有已安装组件:
- **OpenClaw** — 核心包(`openclaw@latest`)
- **code-server** — 浏览器 IDE
- **OpenCode** — AI 编程助手
- **AI CLI 工具** — Claude Code、Gemini CLI、Codex CLI (Termux)
- **Android 补丁** — 本项目的兼容性补丁
已是最新的组件会被跳过。未安装的组件不会被触及——只更新设备上已有的内容。可以多次安全运行。
> 如果 `oa` 命令不可用(旧版安装),请使用 curl 运行:
> ```bash
> curl -sL myopenclawhub.com/update | bash && source ~/.bashrc
> ```
## 备份与恢复
OpenClaw 内置的备份命令(`openclaw backup create`)在 Android 上经常失败,因为它依赖硬链接,而 Android 的应用私有存储会阻止硬链接操作。`oa --backup` 命令通过直接使用 `tar` 来解决这个问题,同时完全兼容 OpenClaw 的备份规范。
创建备份:
```bash
oa --backup
```
备份存储在 `~/.openclaw-android/backup/` 目录下,文件名带有时间戳(例如 `2026-03-14T00-00-00.000Z-openclaw-backup.tar.gz`)。你也可以指定自定义路径:`oa --backup ~/my-backups/`。每次备份包含你的配置、状态、工作区和代理。
从备份恢复:
```bash
oa --restore
```
此命令会列出默认备份目录中所有可用的备份。只需选择你要恢复的备份编号即可。工具会自动从备份清单中检测平台并将数据恢复到 `~/.openclaw/`。注意这会覆盖现有数据,因此需要确认。
## 故障排除
请参阅 [故障排除指南](docs/troubleshooting.md) 获取详细解决方案。
## 性能
`openclaw status` 等 CLI 命令可能比在 PC 上运行时感觉更慢。这是因为每条命令需要读取大量文件,而手机存储比 PC 慢,加上 Android 安全机制带来的额外开销。
不过,**一旦网关启动后,就没有区别了**。进程驻留在内存中,无需重新读取文件,而 AI 响应由外部服务器处理——速度与 PC 上相同。
## Android 本地 LLM
OpenClaw 通过 [node-llama-cpp](https://github.com/withcatai/node-llama-cpp) 支持本地 LLM 推理。预构建的原生二进制文件(`@node-llama-cpp/linux-arm64`)已包含在安装中,并能在 glibc 环境下成功加载——**本地 LLM 在手机上技术上是可行的**。
但存在一些实际限制:
| 限制因素 | 详情 |
|------------|---------|
| 内存 | GGUF 模型至少需要 2-4GB 可用内存(7B 模型,Q4 量化)。手机内存与 Android 和其他应用共享 |
| 存储 | 模型文件大小从 4GB 到 70GB+ 不等。手机存储空间很快就会用完 |
| 速度 | ARM 上的纯 CPU 推理非常慢。Android 不支持 llama.cpp 的 GPU 加速 |
| 使用场景 | OpenClaw 主要调用云端 LLM API(OpenAI、Gemini 等),响应速度与 PC 上相同。本地推理是辅助功能 |
如需体验,可以在手机上运行 TinyLlama 1.1B(Q4,约 670MB)等小型模型。生产环境建议使用云端 LLM 服务。
> **为什么使用 `--ignore-scripts`?** 安装程序使用 `npm install -g openclaw@latest --ignore-scripts`,因为 node-llama-cpp 的 postinstall 脚本会尝试通过 cmake 从源码编译 llama.cpp——在手机上需要 30 分钟以上且会因工具链不兼容而失败。预构建的二进制文件无需此编译步骤即可工作,因此可以安全跳过 postinstall。
面向开发者的技术文档
## 已安装组件
安装程序会跨多个包管理器设置基础设施、平台包和可选工具。核心基础设施和平台依赖会自动安装;可选工具在安装过程中逐个提示。
### 核心基础设施
| 组件 | 作用 | 安装方式 |
|-----------|------|----------------|
| git | 版本控制,npm git 依赖 | `pkg install` |
### Agent 平台运行时依赖
这些由平台的 `config.env` 标志控制。对于 OpenClaw,全部安装:
| 组件 | 作用 | 安装方式 |
|-----------|------|----------------|
| [pacman](https://wiki.archlinux.org/title/Pacman) | glibc 包的包管理器 | `pkg install` |
| [glibc-runner](https://github.com/termux-pacman/glibc-packages) | glibc 动态链接器 — 使标准 Linux 二进制文件能在 Android 上运行 | `pacman -Sy` |
| [Node.js](https://nodejs.org/) v22 LTS (linux-arm64) | OpenClaw 的 JavaScript 运行时 | 从 nodejs.org 直接下载 |
| python | 原生 C/C++ 扩展的构建脚本 (node-gyp) | `pkg install` |
| make | 原生模块的 Makefile 执行 | `pkg install` |
| cmake | 基于 CMake 的原生模块构建 | `pkg install` |
| clang | 原生模块的 C/C++ 编译器 | `pkg install` |
| binutils | 原生构建的二进制工具 (llvm-ar) | `pkg install` |
### OpenClaw 平台
| 组件 | 作用 | 安装方式 |
|-----------|------|----------------|
| [OpenClaw](https://github.com/openclaw/openclaw) | AI Agent 平台(核心) | `npm install -g` |
| [clawdhub](https://github.com/AidanPark/clawdhub) | OpenClaw 的技能管理器 | `npm install -g` |
| [PyYAML](https://pyyaml.org/) | `.skill` 打包的 YAML 解析器 | `pip install` |
| libvips | sharp 构建所需的图像处理头文件 | `pkg install`(更新时) |
### 可选工具(安装时提示)
每个工具都会通过单独的 Y/n 提示。你可以选择安装哪些。
| 组件 | 作用 | 安装方式 |
|-----------|------|----------------|
| [tmux](https://github.com/tmux/tmux) | 终端复用器,用于后台会话 | `pkg install` |
| [ttyd](https://github.com/tsl0922/ttyd) | Web 终端 — 从浏览器访问 Termux | `pkg install` |
| [dufs](https://github.com/sigoden/dufs) | HTTP/WebDAV 文件服务器,用于浏览器文件传输 | `pkg install` |
| [android-tools](https://developer.android.com/tools/adb) | ADB,用于禁用 Phantom Process Killer | `pkg install` |
| [code-server](https://github.com/coder/code-server) | 基于浏览器的 VS Code IDE | 从 GitHub 直接下载 |
| [OpenCode](https://opencode.ai/) | AI 编程助手 (TUI)。自动安装 [Bun](https://bun.sh/) 和 [proot](https://proot-me.github.io/) 作为依赖 | `bun install -g` |
| [Chromium](https://www.chromium.org/) | OpenClaw 的浏览器自动化支持(约 400MB) | 自定义安装脚本 |
| [Playwright](https://playwright.dev/) | 浏览器自动化库(需要 Chromium)。自动配置 `PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH` | 自定义安装脚本 |
| [Claude Code](https://github.com/anthropics/claude-code) (Anthropic) | AI CLI 工具 | `npm install -g` |
| [Gemini CLI](https://github.com/google-gemini/gemini-cli) (Google) | AI CLI 工具 | `npm install -g` |
| [Codex CLI](https://github.com/DioNanos/codex-termux)(OpenAI Codex 的 Termux 分支) | AI CLI 工具 | `npm install -g` |
## 项目结构
```
openclaw-android/
├── bootstrap.sh # curl | bash 一行安装命令(下载器)
├── install.sh # 平台感知安装程序(入口点)
├── oa.sh # 统一 CLI(安装到 $PREFIX/bin/oa)
├── post-setup.sh # Claw App 引导后设置(OTA 分发)
├── update.sh # 薄包装器(下载并运行 update-core.sh)
├── update-core.sh # 轻量级更新程序(用于已有安装)
├── uninstall.sh # 完整卸载(编排器)
├── patches/
│ ├── glibc-compat.js # Node.js 运行时补丁(os.cpus、networkInterfaces)
│ ├── argon2-stub.js # argon2 原生模块的 JS 桩(code-server)
│ ├── termux-compat.h # Bionic 原生构建的 C 头文件(sharp)
│ ├── spawn.h # POSIX spawn 桩头文件
│ ├── systemctl # Termux 的 systemd 桩
│ ├── apply-patches.sh # 旧版补丁编排器(v1.0.2 兼容)
│ └── patch-paths.sh # 旧版路径修复器(v1.0.2 兼容)
├── scripts/
│ ├── lib.sh # 共享函数库(颜色、平台检测、提示)
│ ├── check-env.sh # 安装前环境检查
│ ├── install-infra-deps.sh # 核心基础设施包(L1)
│ ├── install-glibc.sh # glibc-runner 安装(L2 条件安装)
│ ├── install-nodejs.sh # Node.js glibc 包装器安装(L2 条件安装)
│ ├── install-build-tools.sh # 原生模块构建工具(L2 条件安装)
│ ├── backup.sh # 备份和恢复 OpenClaw 数据(oa --backup/--restore)
│ ├── build-sharp.sh # 构建 sharp 原生模块(图像处理)
│ ├── install-chromium.sh # 安装 Chromium 用于浏览器自动化
│ ├── install-playwright.sh # 安装 Playwright 浏览器自动化库
│ ├── install-code-server.sh # 安装/更新 code-server(浏览器 IDE)
│ ├── install-opencode.sh # 安装 OpenCode
│ ├── setup-env.sh # 配置环境变量
│ └── setup-paths.sh # 创建目录和符号链接
├── platforms/
│ ├── openclaw/ # OpenClaw 平台插件
│ │ ├── config.env # 平台元数据和依赖声明
│ │ ├── env.sh # 平台特定环境变量
│ │ ├── install.sh # 平台包安装(npm、补丁、clawdhub)
│ │ ├── update.sh # 平台包更新
│ │ ├── uninstall.sh # 平台包卸载
│ │ ├── status.sh # 平台状态显示
│ │ ├── verify.sh # 平台验证检查
│ │ └── patches/ # 平台特定补丁
│ │ ├── openclaw-apply-patches.sh
│ │ ├── openclaw-patch-paths.sh
│ │ └── openclaw-build-sharp.sh
├── tests/
│ └── verify-install.sh # 安装后验证(编排器 + 平台)
└── docs/
├── disable-phantom-process-killer.md # 保持进程存活指南(EN)
├── disable-phantom-process-killer.ko.md # 保持进程存活指南(KO)
├── termux-ssh-guide.md # Termux SSH 设置指南(EN)
├── termux-ssh-guide.ko.md # Termux SSH 设置指南(KO)
├── troubleshooting.md # 故障排除指南(EN)
├── troubleshooting.ko.md # 故障排除指南(KO)
└── images/ # 截图和图片
```
## 架构
本项目使用**平台插件架构**,将平台无关的基础设施与平台特定代码分离:
```
┌─────────────────────────────────────────────────────────────┐
│ 编排器 (install.sh, update-core.sh, uninstall.sh) │
│ ── 平台无关。读取 config.env 并委托执行。 │
├─────────────────────────────────────────────────────────────┤
│ 共享脚本 (scripts/) │
│ ── L1: install-infra-deps.sh(始终执行) │
│ ── L2: install-glibc.sh, install-nodejs.sh, │
│ install-build-tools.sh(根据 config.env 条件执行) │
│ ── L3: 可选工具(用户选择) │
├─────────────────────────────────────────────────────────────┤
│ 平台插件 (platforms//) │
│ ── config.env: 声明依赖 (PLATFORM_NEEDS_*) │
│ ── install.sh / update.sh / uninstall.sh / ... │
└─────────────────────────────────────────────────────────────┘
```
**依赖层级:**
| 层级 | 范围 | 示例 | 控制方式 |
|-------|-------|----------|---------------|
| L1 | 基础设施(始终安装) | git、`pkg update` | 编排器 |
| L2 | 平台运行时(条件安装) | glibc、Node.js、构建工具 | `config.env` 标志 |
| L3 | 可选工具(用户选择) | tmux、code-server、AI CLI | 用户提示 |
每个平台在 `config.env` 中声明其 L2 依赖:
```bash
# platforms/openclaw/config.env
PLATFORM_NEEDS_GLIBC=true
PLATFORM_NEEDS_NODEJS=true
PLATFORM_NEEDS_BUILD_TOOLS=true
```
编排器读取这些标志并有条件地运行相应的安装脚本。不需要某些依赖的平台只需将对应标志设为 `false`,那些重量级依赖就会被完全跳过。
## 详细安装流程
运行 `bash install.sh` 将按顺序执行以下 8 个步骤。
### [1/8] 环境检查 — `scripts/check-env.sh`
在开始安装前验证当前环境是否满足要求。
- **Termux 检测**:检查 `$PREFIX` 环境变量。如果不在 Termux 中则立即退出
- **架构检查**:运行 `uname -m` 验证 CPU 架构(推荐 aarch64,支持 armv7l,x86_64 视为模拟器)
- **磁盘空间**:确保 `$PREFIX` 分区至少有 1000MB 可用空间。不足时报错
- **已有安装**:如果 `openclaw` 命令已存在,显示当前版本并提示这是重新安装/升级
- **Node.js 预检**:如果 Node.js 已安装,显示版本,低于 22 时发出警告
- **Phantom Process Killer**(Android 12+):显示有关 Phantom Process Killer 的提示信息,附带 [禁用指南](docs/disable-phantom-process-killer.md) 链接
### [2/8] 平台选择
选择要安装的平台。目前硬编码为 `openclaw`。未来版本将在有多个平台可用时提供选择界面。
通过 `scripts/lib.sh` 中的 `load_platform_config()` 加载平台的 `config.env`,导出所有 `PLATFORM_*` 变量供后续步骤使用。
### [3/8] 可选工具选择(L3)
通过 `/dev/tty` 提供 11 个单独的 Y/n 提示,用于选择可选工具:
- tmux、ttyd、dufs、android-tools
- Chromium、Playwright
- code-server、OpenCode
- Claude Code、Gemini CLI、Codex CLI (Termux)
所有选择在安装开始前一次性完成。这样用户可以一次做完所有决定,然后在安装期间放手不管。
### [4/8] 核心基础设施(L1)— `scripts/install-infra-deps.sh` + `scripts/setup-paths.sh`
无论选择哪个平台都会执行。
**install-infra-deps.sh:**
- 运行 `pkg update -y && pkg upgrade -y` 刷新并升级软件包
- 安装 `git`(npm git 依赖和仓库克隆所需)
**setup-paths.sh:**
- 创建 `$PREFIX/tmp` 和 `$HOME/.openclaw-android/patches` 目录
- 显示标准 Linux 路径(`/bin/sh`、`/usr/bin/env`、`/tmp`)到 Termux 等效路径的映射
### [5/8] 平台运行时依赖(L2)
根据平台 `config.env` 标志有条件地安装运行时依赖:
| 标志 | 脚本 | 安装内容 |
|------|--------|-----------------|
| `PLATFORM_NEEDS_GLIBC=true` | `scripts/install-glibc.sh` | pacman、glibc-runner(提供 `ld-linux-aarch64.so.1`) |
| `PLATFORM_NEEDS_NODEJS=true` | `scripts/install-nodejs.sh` | Node.js v22 LTS linux-arm64、grun 风格的包装脚本 |
| `PLATFORM_NEEDS_BUILD_TOOLS=true` | `scripts/install-build-tools.sh` | python、make、cmake、clang、binutils |
每个脚本都是自包含的,具有预检查和幂等行为(如果已安装则跳过)。
### [6/8] 平台包安装(L2)— `platforms//install.sh`
委托给平台自身的安装脚本。对于 OpenClaw,此步骤:
1. 设置 `CPATH` 以获取 glib-2.0 头文件(原生模块构建所需)
2. 通过 pip 安装 PyYAML(`.skill` 打包所需)
3. 将 `glibc-compat.js` 复制到 `~/.openclaw-android/patches/`
4. 安装 `systemctl` 桩到 `$PREFIX/bin/`
5. 运行 `npm install -g openclaw@latest --ignore-scripts`
6. 通过 `openclaw-apply-patches.sh` 应用平台特定补丁
7. 安装 `clawdhub`(技能管理器)以及 `undici` 依赖(如需要)
8. 运行 `openclaw update`(包括构建 sharp 等原生模块)
**[6.5] 环境变量 + CLI + 标记文件:**
平台安装后,编排器会:
- 运行 `setup-env.sh` 写入 `.bashrc` 环境变量块
- 执行平台的 `env.sh` 获取平台特定变量
- 写入平台标记文件(`~/.openclaw-android/.platform`)
- 安装 `oa` CLI 和 `oaupdate` 包装器到 `$PREFIX/bin/`
- 将 `lib.sh`、`setup-env.sh` 和平台目录复制到 `~/.openclaw-android/` 供更新程序和卸载程序使用
### [7/8] 安装可选工具(L3)
安装步骤 3 中选择的工具:
- **Termux 包**:tmux、ttyd、dufs、android-tools — 通过 `pkg install` 安装
- **code-server**:基于浏览器的 VS Code IDE,带有 Termux 特定的解决方案(替换捆绑的 node、修补 argon2、处理硬链接失败)
- **OpenCode**:AI 编程助手,使用 proot + ld.so 拼接方式运行 Bun 独立二进制文件
- **Chromium**:OpenClaw 的浏览器自动化支持(约 400MB)
- **Playwright**:浏览器自动化库(通过 npm 安装 `playwright-core`)。自动设置 `PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH` 和 `PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD` 环境变量。如果未安装 Chromium 则自动安装
- **AI CLI 工具**:Claude Code、Gemini CLI、Codex CLI (Termux) — 通过 `npm install -g` 安装
### [8/8] 验证 — `tests/verify-install.sh`
运行两级验证:
**编排器检查(FAIL 级别):**
| 检查项 | 通过条件 |
|------------|---------------|
| Node.js 版本 | `node -v` >= 22 |
| npm | `npm` 命令存在 |
| TMPDIR | 环境变量已设置 |
| OA_GLIBC | 设为 `1` |
| glibc-compat.js | 文件存在于 `~/.openclaw-android/patches/` |
| .glibc-arch | 标记文件存在 |
| glibc 动态链接器 | `ld-linux-aarch64.so.1` 存在 |
| glibc node 包装器 | 包装脚本位于 `~/.openclaw-android/bin/node` |
| 目录 | `~/.openclaw-android`、`$PREFIX/tmp` 存在 |
| .bashrc | 包含环境变量块 |
**编排器检查(WARN 级别,非关键):**
| 检查项 | 通过条件 |
|------------|---------------|
| code-server | `code-server --version` 成功 |
| opencode | `opencode` 命令可用 |
**平台验证** — 委托给 `platforms//verify.sh`:
| 检查项 | 通过条件 |
|------------|---------------|
| openclaw | `openclaw --version` 成功 |
| CONTAINER | 设为 `1` |
| clawdhub | 命令可用 |
| ~/.openclaw | 目录存在 |
所有 FAIL 级别项通过 → PASSED。任何 FAIL → 显示重新安装说明。WARN 项不会导致失败。
## 轻量级更新流程 — `oa --update`
运行 `oa --update`(或 `oaupdate`,用于向后兼容)会从 GitHub 下载最新的发行版 tarball,然后执行以下 5 个步骤。
### [1/5] 预检查
验证更新所需的最低条件。
- 检查 `$PREFIX` 存在(Termux 环境)
- 检查 `curl` 可用
- 从 `~/.openclaw-android/.platform` 标记文件检测平台
- 检测架构:glibc(`.glibc-arch` 标记)或 Bionic(旧版)
- 如需要,迁移旧目录名(`.openclaw-lite` → `.openclaw-android` — 旧版兼容)
- **Phantom Process Killer**(Android 12+):显示提示信息,附带 [禁用指南](docs/disable-phantom-process-killer.md) 链接
### [2/5] 下载最新版本
从 GitHub 下载完整仓库 tarball 并解压到临时目录。验证所有必需文件存在:
- `scripts/lib.sh`
- `scripts/setup-env.sh`
- `platforms//config.env`
- `platforms//update.sh`
### [3/5] 更新核心基础设施
更新更新程序、卸载程序和 CLI 使用的共享文件:
- 将最新的平台目录复制到 `~/.openclaw-android/platforms/`
- 更新 `~/.openclaw-android/scripts/` 中的 `lib.sh` 和 `setup-env.sh`
- 更新补丁文件(`glibc-compat.js`、`argon2-stub.js`、`spawn.h`、`systemctl`)
- 更新 `$PREFIX/bin/` 中的 `oa` CLI 和 `oaupdate` 包装器
- 更新 `~/.openclaw-android/` 中的 `uninstall.sh`
- 如果检测到 Bionic 架构,执行自动 glibc 迁移
- 运行 `setup-env.sh` 刷新 `.bashrc` 环境变量块
### [4/5] 更新平台
委托给 `platforms//update.sh`。对于 OpenClaw,此步骤:
- 安装构建依赖(`libvips`、`binutils`)
- 将 `openclaw` npm 包更新到最新版本
- 重新应用平台特定补丁
- 如果 openclaw 已更新,重新构建 sharp 原生模块
- 更新/安装 `clawdhub`(技能管理器)
- 如需要,为 clawdhub 安装 `undici`(Node.js v24+)
- 如需要,将技能从 `~/skills/` 迁移到 `~/.openclaw/workspace/skills/`
- 如缺失则安装 PyYAML
### [5/5] 更新可选工具
更新已安装的工具:
- **code-server**:以更新模式运行 `install-code-server.sh`。未安装则跳过
- **OpenCode**:已安装则更新;未安装则提供安装选项。需要 glibc 架构
- **Chromium**:已安装则更新。未安装则跳过
- **AI CLI 工具**(Claude Code、Gemini CLI、Codex CLI (Termux)):比较已安装版本与最新 npm 版本,需要时更新。未安装的工具不会提供安装选项
## 许可证
MIT