移动开发AI 应用CLI开发工具【免费下载链接】openclaw-androidRun OpenClaw on Android with a single command — no proot, no Linux项目地址https://gitcode.com/gh_mirrors/op/openclaw-android点击查看免费下载OpenClaw on Android 让你不用安装任何 Linux 发行版就能在手机上运行标准 Linux 版的 Node.js 应用。它的核心只装一个glibc 动态链接器ld.so再配一个包装脚本就能把官方linux-arm64的 Node.js 跑起来——存储从 1~2GB 降到约200MB速度还保持原生级别。本文带你拆解这套方案背后的原理与实现。为什么 Android 上跑不了官方 Node.js先搞清楚问题的根源Android 用的是 Google 自家的Bionic libc而 Node.js、Claude Code 等工具发布的linux-arm64官方二进制文件全部是链接GNU glibc编译的。标准 Linux 二进制如 node.real │ ├─ ELF 头里写死解释器/lib/ld-linux-aarch64.so.1 │ └─ 内核执行时去加载这个 glibc 链接器 └─ Android 上没有 /lib/ld-linux-aarch64.so.1 → 直接报 No such file or directory直接双击运行就会失败因为 Android 文件系统里根本没有 glibc 那套路径。过去最省事的办法是用proot-distro装一整套 Debian/Ubuntu——代价是700MB~1GB 的空间、20~30 分钟的配置还要忍受 proot 中间层的性能损耗。OpenClaw on Android 走了另一条路只把 glibc 动态链接器搬进 Android整个发行版都不用装。方案核心只装 glibc 链接器不装整个发行版传统做法 vs 本项目的分层对比来自 README.md常规方法proot-distro 本项目glibc 链接器 ┌────────────────────────┐ ┌────────────────────────┐ │ Android · Bionic │ │ Android · Bionic │ │ ┌────────────────────┐ │ │ ┌────────────────────┐ │ │ │ proot-distro │ │ │ │ glibc ld.so仅链接器│ │ │ │ ┌────────────────┐ │ │ │ │ ld.so → Node.js │ │ │ │ │ Debian/Ubuntu │ │ │ │ │ → OpenClaw │ │ │ │ │ ┌────────────┐ │ │ │ │ └────────────────────┘ │ │ │ │ │ GNU glibc │ │ │ │ └────────────────────────┘ │ │ │ │ Node.js │ │ │ │ │ │ │ └────────────┘ │ │ │ │ │ └────────────────┘ │ │ │ └────────────────────┘ │ └────────────────────────┘安装流程由 install.sh 作为入口真正干活的是 scripts/install-glibc.sh。它通过 Termux 的pacman包管理器安装glibc-runner最终得到关键的链接器文件路径定义在 scripts/install-glibc.sh#L19GLIBC_LDSO$PREFIX/glibc/lib/ld-linux-aarch64.so.1装完链接器后脚本会创建~/.openclaw-android/.glibc-arch标记文件供后续更新判断当前是 glibc 还是 Bionic 架构。关键一步用 ld.so 包装 Node.js而不是 patchelf拿到 glibc 链接器后官方node二进制不能直接exec而是通过链接器手动加载。这个包装逻辑写在 scripts/install-nodejs.sh核心就是 install-nodejs.sh#L163 这一行exec $GLIBC_LDSO --library-path $PREFIX/glibc/lib $NODE_DIR/bin/node.real $翻译成人话每次运行node都先用 glibc 的ld.so指定库路径去加载真正的 Node.js 二进制。这里有两个绕不开的坑为什么不用 patchelf很多人第一反应是用patchelf直接改二进制的解释器路径。但 Android 的 seccomp 策略会导致被 patchelf 改过的程序段错误SIGSEGV。所以本项目完全弃用 patchelf改走ld.so显式加载。必须清掉LD_PRELOAD。Android 的 Bionic 会通过libtermux-exec.so注入路径转换一旦它被加载进 glibc 进程就会因版本不匹配直接崩溃因此包装脚本会先unset LD_PRELOAD。同时 install-nodejs.sh 会下载官方linux-arm64的 Node.js当前锁定 24.21.0用sha256校验完整性解压到临时目录试跑成功后才原子切换失败自动回滚。锁定版本声明在 platforms/openclaw/config.env#L30-L31PLATFORM_NPM_PACKAGE_VERSION2026.9.8 PLATFORM_NODE_VERSION24.21.0兼容性垫片glibc-compat.js 补上内核的坑glibc 解决了库加载问题但 Android内核层面的限制依然存在。于是项目用一份 patches/glibc-compat.js 在 Node.js 启动时注入专门补这些洞问题成因垫片做法os.cpus()返回空Android 8 的 SELinux 屏蔽/proc/stat返回至少 1 个虚拟 CPU避免make -j 0崩溃os.networkInterfaces()抛EACCES部分 Android 配置读网卡被拒try-catch兜底退回仅 loopbackdns.lookup(localhost)异常glibc 缺/etc/hosts拦截 localhost直接返回 127.0.0.1子进程找不到/bin/shAndroid 7~8 没有该路径用 Termux 的sh重写默认 shellnpm 装的原生 ELF 跑不起来解释器指向不存在的 glibc 路径读取 ELF 头自动改用ld.so加载其中ELF 自动包装是精髓垫片会读取二进制 ELF 头的PT_INTERP段一旦发现解释器含ld-linux即 glibc 程序就自动改写成ld.so --library-path ... 程序。这样Claude Code、Codex 等 glibc 原生二进制也无需手动处理就能跑。与 proot-distro 方案的对比维度常规方法proot-distroOpenClaw on Android存储开销1~2GBLinux 软件包~200MB安装时间20~30 分钟3~10 分钟性能较慢多一层 proot原生速度安装步骤装发行版、配 Linux、装 Node.js、修路径……一条命令一键安装3~10 分钟跑起来准备工作完成后在 Termux 里粘贴这一条命令安装器会自动搞定 glibc 环境、Node.js、路径转换、临时目录、服务管理绕过等全部差异详见 README.mdcurl -sL myopenclawhub.com/install | bash source ~/.bashrc安装完按提示执行openclaw onboard完成初始化再开一个新标签页运行openclaw gateway启动网关。用oa --update可以随时安全更新用oa --status查看各组件与 hard-link 补丁状态。网关跑起来后就能通过电脑 SSH 隧道访问http://127.0.0.1:18789/仪表盘远程管理你的 Node.js 应用。相关模块与文件路径想深入源码可以从这几个入口看起安装入口与编排install.sh、oa.shglibc 环境安装scripts/install-glibc.shNode.js glibc 包装scripts/install-nodejs.sh运行时兼容垫片patches/glibc-compat.js平台依赖声明PLATFORM_NEEDS_GLIBCtrueplatforms/openclaw/config.env安装后校验tests/verify-install.sh故障排查docs/troubleshooting.md一句话总结OpenClaw on Android 没有把整个 Linux 塞进手机而是只借用了一个 glibc 动态链接器 一个包装脚本 一份 JS 兼容垫片就让标准linux-arm64的 Node.js 应用以原生速度、约 200MB 的代价跑了起来——这就是不装发行版跑 Node.js的关键。赞分享移动开发AI 应用CLI开发工具【免费下载链接】openclaw-androidRun OpenClaw on Android with a single command — no proot, no Linux项目地址https://gitcode.com/gh_mirrors/op/openclaw-android点击查看免费下载相关推荐终极指南如何在Android设备上运行Node.js应用终极指南如何在Android设备上运行Node.js应用 想要在Android手机上运行Node.js应用吗Node on Android项目让这个梦想成为mandodb配置详解压缩算法选择与性能调优最佳实践mandodb配置详解压缩算法选择与性能调优最佳实践 mandodb是一个从零开始实现的轻量级时序数据库TSDB专为学习和实践时序数据存储设计。本文将详GXDE-OS/GXDEWaydroid运行器 - 在Linux桌面无缝运行Android应用GXDE OS/GXDEWaydroid运行器 在Linux桌面无缝运行Android应用 引言打破系统壁垒的Android容器技术 还在为无法在Linux操作系统创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?