最近,Bun 官方宣布了一项重大更新:下一个版本的 Bun 将实验性地支持 Android 平台。当然,官方也特别强调,别把“能在 Android 上跑 Bun”误解成“能用 Bun 开发 Android App”,那并没有实际意义。它真正的定位,与 Node.js 对 Android 的支持类似,本质上是把这个高性能的 JavaScript 运行时移植到了安卓系统上。

简单来说,今后你可以在安卓手机的 Termux 环境里直接安装 Bun,然后跑各种 JS/TS 项目,其中就包括 Claude Code。这背后的逻辑很清晰:Bun 此前已被 Anthropic 收购,而 Claude Code 目前正是基于 Bun 构建的 CLI Agent 工具。
其实,在官方支持之前,开源实战社区就有人搞定了这件事。比如 Termux 社区推出的 bun-termux-loader,通过 proot-distro 装个 Ubuntu 再跑 Bun,并打上各种补丁,硬是让 Claude Code、OpenCode、Amp 这些由 Bun 打包的 AI Agent 在手机上跑了起来。
曲折的移动端之路
事情的发展并非一帆风顺。Claude Code 自 v2.1.113 版本起,从纯 Node.js 入口切换到了原生的可执行二进制文件,不再依赖打包好的 JavaScript。这直接导致它之前在 Termux/Android 上的那套玩法彻底失效。


针对这个问题,官方在 GitHub 的 #50270 Issue 中回应称,Android 场景需要等待 Bun 的后续支持才能恢复。

那退回到旧版本的 Claude Code 先凑合用行不行?恐怕不行。旧版本里有好几个大坑,覆盖了三到四月的多个版本,具体可以参考这篇分析:《Claude Code 自己把自己写降智》。
所以,解铃还须系铃人,全村的希望又回到了 Bun 身上。而现在,随着 Bun 官方正式开启对 Android 的支持,之前那些费时费力的折腾步骤全都可以省了。一旦官方支持落地,你只需在 Termux 里装上 Bun,就能丝滑地运行 Claude Code。 更进一步,你还可以通过 adb 让手机控制自己。比如,首次用电脑开启 adb tcpip 5555 并配对无线调试,之后手机就能自行连接 localhost。这时,Claude Code 便能通过 adb 指令操控你的手机,实现一种类似“手机 Agent”的有趣场景。

不止是 Claude Code,其他所有兼容 Bun 的项目都能受益。官方支持后,你只需在 Termux 里执行 pkg install bun,就能在手机上跑比 Node.js 更快的 JS/TS 脚本或服务了。
嵌入与原生支持
另一个令人兴奋的玩法是动态库嵌入。这意味着,开发者可以通过动态库的形式,直接把 Bun 运行时加载到自己的 Android App 里,从而为应用内置一套高性能的 JS/TS 脚本和服务能力。

此次 Bun 的 PR 实现,是通过交叉编译来完成的,新增了 aarch64-linux-android 和 x86_64-linux-android 两个目标平台。
- 用主机 clang 21 + Android NDK r27c(API 28)的 sysroot
- Zig 负责处理 Bionic libc(这是安卓的 libc)的头文件
- 强制输出 PIE(Position Independent Executable),因为安卓禁止执行非 PIE 的二进制文件
使用方式类似于:bun build --compile --target=bun-linux-arm64-android your-script.ts
看得出来,Bun 基本上把 Android 当作一个特殊的 Linux 发行版来对待,只是需要兼容 Bionic libc 和 SELinux 等限制。通过 NDK sysroot 进行交叉编译,并辅以大量兼容性补丁,让 Bun 能在安卓上顺畅地跑起来。
无论如何,这都是一件大好事。更原生、更快的选择出现了,至少我们的骚操作空间又大了不少。作为一种高性能的 Runtime,Bun 在移动端作为 Node.js 的本地替代品是个不错的选择,启动和运行速度上的优势非常明显,许多 TS 类 Agent 工具也能直接迁移过来用。
相关 PR 地址:
|