在 Android 上通过 proot 运行 Alpine Linux 环境,打开应用默认进入 RSXM 原生 GUI 会话界面(Reasonix AI 编码助手,可切换回 CLI 终端)的 APK 工程。
无需 root,无需安装 Termux。仅支持 arm64 (arm64-v8a) 设备。
- 一键进入 RSXM(GUI 默认):打开 APK → 自动解压 Alpine Linux → 启动 reasonix 交互会话,默认进入原生 GUI 会话视图(字段映射气泡 + 原生输入框);快捷栏「视图」或返回键可切回 CLI 终端;退出 reasonix 后落到 Alpine shell。
- 完整 proot 环境:
proot -0免 root 运行 Alpine 3.20(arm64),可apk add安装任意工具。 - 真实 TTY:内置自编译
pty-bridge(静态 musl)创建 PTY,reasonix 的 TUI 完整可用(含鼠标滚轮滚动)。 - 屏幕自适应:终端按手机视口自动计算行列并实时同步 PTY(旋转/软键盘自动重排)。
- 触摸滚动:reasonix TUI 内滑动 → 模拟 SGR 滚轮事件滚动历史输出;shell 主屏滑动 → 滚动终端 scrollback;侧滑菜单内置滑动调速(档位 1~10,默认 5),档位越低滑动越慢越精细,可随时调整。
- 纯黑主题(顶边栏仅菜单):全局纯黑界面——顶部仅保留「☰ 菜单」入口(其余功能收进侧滑栏/高级设置);GUI 输入框、新会话、回终端等控件均为黑底白字。
- 顶边栏(仅菜单):顶部快捷栏仅保留「☰ 菜单」一个入口,所有功能经侧滑栏进入(ADB / API Key / GitHub / DS2API / 更新 / 项目 / 会话 / 视图切换 / 高级设置)。
- 侧边栏精简 + 高级设置二级菜单:侧滑栏仅保留高频项(ADB / API Key / GitHub / DS2API / 更新 / 项目 / 会话 / 高级设置);ROOT、开发环境、SKILL、MCP、后台运行、YOLO 免审批、滑动速度、快捷键等收进「高级设置」二级面板(点按对应行进入功能页,返回箭头关闭)。
- 双视图切换(终端 / GUI 对话):侧滑栏「视图切换」在 xterm.js 终端与原生会话视图间切换——原生视图以 PTY 实时流(剥离 ANSI 的终端输出气泡,保证回显不依赖会话文件)为主通道,同时把 reasonix 会话 jsonl(
role/content/model/usage等字段)映射为结构化气泡补充;- 破甲环境(Guardian 已禁用):内置 reasonix Guardian 高风险审查会 deny 破甲任务,v2.0.5 起在~/.reasonix/config.toml写入guardian_model = ""(Guardian 因模型缺失自动禁用):user 消息靠右蓝色气泡、assistant 靠左(带模型标签与 token 统计)、tool 灰色等宽体(含工具名),顶部信息条显示当前会话文件;配原生输入框(Enter/发送按钮,发送即映射为 user 气泡)。相比整屏文本渲染,字段映射按角色/时间/模型结构化展示,规避 WebView 黑屏与排版错乱;同时修复了环境输出按 8KB 块解码导致中文乱码的根因(CharsetDecoder 增量解码)。 - 手机操作逻辑优化:视图模式记忆(重启恢复上次终端/对话视图);返回键三级逻辑(先关面板 → 原生视图先收键盘再回终端 → 才退出);原生视图头部「新会话 / 回终端」快捷按钮;输入发送后保持焦点(多轮连续输入);软键盘弹出时原生消息列表自动滚到底部。
- GitHub 登录与自动打包:主屏快捷栏与侧滑栏「GitHub」面板支持输入/保存 GitHub Personal Access Token(仅存本机
SharedPreferences,不写入 Linux 环境),GET /user验证登录态并显示账户;一键触发仓库 RSXM 的build-release.ymlworkflow(workflow_dispatch,云端assembleRelease),轮询构建状态,完成后下载构建产物 APK 并经系统安装器安装(token 需repo+actions权限)。 - 左侧侧滑配置菜单(DrawerLayout):
- ADB 无线调试:guest 内自动安装 adb(国内镜像 + 国内 DNS),填写配对码/端口后一键发送配对连接命令到终端,或复制命令、直接跳转无线调试设置。
- API Key 配置:随时查看/修改 DeepSeek API Key(写入
~/.reasonix/.env,保存后自动重启环境)。 - DS2API 网关(内置):应用启动时自动在 Linux 环境后台运行内置的 DS2API 服务(上游 CJackHwang/ds2api AGPL-3.0,v4.6.1),管理台
http://127.0.0.1:5001/admin(初始管理密钥rsxm-ds2api-admin,首次保存配置后持久化到/root/ds2api/config.json);若旧版 DS2API App 已占用 5001 端口则内置服务不重复启动。 - 快捷键:侧滑栏「快捷键」弹出 reasonix 常用按键面板(Enter / Ctrl+A / Ctrl+E / Ctrl+W / Ctrl+U、↑↓、PgUp / PgDn、End、Tab / Shift+Tab、Esc、Ctrl+C、编辑门 y / n / u 等),点击条目即把对应按键序列发送到 reasonix 终端(不追加换行,面板保持打开可连续点按翻页)。
- MCP 服务器:管理当前项目
.mcp.json(reasonix 按项目根.mcp.json的mcpServers发现 MCP 服务器):列出已配置服务器(名称/类型/摘要),表单添加/编辑/删除——本地命令型选 stdio(command + args + env),远程选 http/sse(url + headers),支持auto_start开关(关闭则需在终端手动reasonix mcp start);${VAR}环境变量按 CLI 原生规则展开;保存后重启环境生效。 - 更新 resonix:从官方 npm 包(
@reasonix/cli-linux-arm64,npmmirror 国内镜像)下载 tgz 解压更新,或从手机选择新版文件、恢复内置版本。
- 离线打包:Alpine rootfs、proot、reasonix、xterm.js 与 DS2API 全部内置,首次启动解压后无需网络(reasonix 调用 API / DS2API 连接 DeepSeek 时才需联网)。
- 手机存储访问:guest 内
/sdcard直接映射手机共享存储;首次启动引导"所有文件访问"授权(授权后自动重启环境生效),并可读写宿主 app 私有数据(/host-data)与只读系统分区(/host/system等)。 - bash 兼容:Alpine 无 bash,内置
bash → busybox ash(sh)包装,reasonix 的 shell 命令可直接执行;同时关闭 reasonix 的 OS 沙箱(Android 无 bubblewrap)。 - 破甲环境(内置):应用启动时自动把 infinite-gen-3 v0.5.0 破甲系统提示词注入 reasonix 的
~/.reasonix/config.toml(system_prompt键,幂等标记rsxm-break-armor-v0.5.0),并同步为全局 skillrsxm-break-armor(~/.reasonix/skills/)与全局指令(AGENTS.md追加说明)——任何项目/任何会话下 AI 都携带该行为框架(来源assets/break-armor-prompt.md,每次启动自动刷新)。 - 手机 Root 权限:检测 KernelSU/Magisk,侧滑菜单可查看/测试授权状态;reasonix(AI)内直接执行
root <命令>即通过 app 以 su 获取手机 root 权限(如root id、root 'pm list packages')。
┌──────────────────────────────────────────────────────┐
│ Android App (com.rxproot.app) │
│ DrawerLayout(侧滑配置菜单) │
│ WebView ── xterm.js 终端模拟器(自适应 + 触摸滚动) │
│ │ JS <-> Java 桥(键盘/尺寸/滚轮) │
│ proot.so(termux fork 5.1.107.89,静态 musl PIE) │
│ -0 -r <rootfs> -b /dev -b /proc -b /sys │
│ -b /sdcard -b /host-data -b /host/* │
│ │ PROOT_LOADER=<nativeLibDir>/loader.so │
│ Alpine Linux 3.20 (arm64 minirootfs) │
│ /usr/bin/pty-bridge ── 创建 PTY │
│ └── entry.sh ── 自动启动 reasonix │
└──────────────────────────────────────────────────────┘
| 组件 | 说明 |
|---|---|
lib/arm64-v8a/proot.so |
termux 维护的 proot 5.1.107.89(zig 交叉编译,musl 静态 PIE),修复 Android app 环境 accept/accept4 被 seccomp 拦截的问题 |
lib/arm64-v8a/loader.so |
termux proot 配套 loader(静态,链接脚本固定 0x2000000000),由 PROOT_LOADER 指定,绕过 SELinux execve 限制 |
assets/rootfs.tar |
Alpine 3.20 arm64 minirootfs(gzip,首次启动用系统 toybox tar 解压) |
assets/ds2api/ds2api-bundle.tgz |
内置 DS2API 网关(上游 CJackHwang/ds2api v4.6.1,AGPL-3.0:静态 arm64 二进制 + WebUI 管理台 + LICENSE/README),随环境启动自动后台运行(127.0.0.1:5001) |
assets/usr/bin/pty-bridge |
自编译静态 musl PIE,guest 内创建 PTY(posix_openpt+fork) |
assets/usr/bin/reasonix |
静态链接 Go 二进制(来自官方 npm 平台包 @reasonix/cli-linux-arm64,可在应用内一键更新) |
assets/web/* |
xterm.js 5.3.0 + fit addon(离线终端渲染) |
前置:JDK 17 + Android SDK(platforms;android-34、build-tools;34.0.0)。
cd android-app
set JAVA_HOME=C:\path\to\jdk-17
set ANDROID_HOME=C:\path\to\android-sdk
call gradlew.bat assembleRelease产物:android-app/app/build/outputs/apk/release/app-release.apk(R8 混淆 + 资源压缩,约 16MB)。
android-app/local.properties需指向本机 SDK(未入库)。重编译 proot/pty-bridge 需要 zig(详见android-app/README.md)。
adb install reasonix-proot.apk- 首次打开:自动解压 Linux 环境(约 30 秒)→ 弹出 API Key 配置对话框,填入 DeepSeek API Key(platform.deepseek.com 获取)点击"保存并启动",即可直接进入 reasonix 会话。
- 已配置过则直接进入;随时可在 侧滑菜单 → API Key 配置 修改。
- 退出 reasonix 后自动回到 Alpine shell;输入
exit关闭。
- 手机:设置 → 开发者选项 → 无线调试 → 打开,记下配对码与配对/连接端口。
- 侧滑菜单 → ADB 无线调试 → 填入配对码/端口 → 点「配对并连接」或「自动连接」 (由应用直接驱动容器内 adb 执行并回显结果,不依赖 reasonix 会话)。
- 连接成功(状态变「已连接」)后,在 reasonix 终端里即可
adb shell/adb install。
侧滑菜单 → 更新 resonix → 网络更新(默认官方 npm 源,可改 URL 指定版本)或从手机选择新版文件。
- 仅 arm64 设备;x86 模拟器无法运行。
- DNS 使用国内公共 DNS(223.5.5.5 / 119.29.29.29)。
- 应用私有目录(
files/rootfs)在卸载时清除。 - TUI 内滑动滚动依赖 reasonix 的 SGR 鼠标追踪(已启用)。
- Android 11+ 无法访问其他应用的
Android/data目录(系统硬限制)。
MIT。第三方组件版权归其各自作者所有: Reasonix(MIT)、proot(GPL-2.0)、Alpine Linux(GPL)、xterm.js(MIT)。