在 Termux (Android arm64) 上安装 pi 扩展 context-mode 的懒人包。
context-mode 依赖原生模块 better-sqlite3。在 Termux 上直接 pi install npm:context-mode 会失败,原因有二:
-
官方没有为
android/arm64提供预编译二进制,只能本地编译; -
本地编译时 node-gyp 检测到
OS=="android"后引用未定义的android_ndk_path变量(common.gypi),配置阶段直接报错:gyp: Undefined variable android_ndk_path in binding.gyp while trying to load binding.gyp
本仓库提供了在 Termux 上编译好的 better_sqlite3.node,安装时直接放入即可,免去编译。
git clone https://github.com/lide4144/context-mode-termux.git
cd context-mode-termux
sh install.sh脚本会:
npm install context-mode@1.0.169到 pi 的扩展目录(--ignore-scripts,跳过编译);- 把预编译的
better_sqlite3.node放到node_modules/better-sqlite3/build/Release/; - 验证模块可以正常加载;
- 在
~/.pi/agent/settings.json的packages中注册npm:context-mode。
预编译二进制适用环境:
| 项目 | 值 |
|---|---|
| 平台 | Android (Termux) |
| 架构 | arm64 |
| Node | 26.x(ABI 147) |
| better-sqlite3 | 12.11.1 |
如果你的 Node 大版本不同(ABI 不是 147),install.sh 会自动退回到本地编译。
不想用预编译二进制的话,关键是给 node-gyp 一个占位的 android_ndk_path(node-gyp 会把 npm_config_* 环境变量转成 gyp 的 -D 定义):
pkg install make clang python
npm_config_android_ndk_path=$PREFIX pi install npm:context-mode编译过程约 4 分钟。
prebuilds/better_sqlite3.node # 编译产物(better-sqlite3@12.11.1, Node ABI 147, android-arm64)
install.sh # 一键安装脚本
better-sqlite3 与 context-mode 均为 MIT 许可,二进制按其各自许可证再分发。