Repository navigation
Releases
2.4.2
🚀 v2.4.2 - 性能优化与核心修复
本次更新对底层执行逻辑进行了大幅优化和修复,提升稳定性和兼容性。
🔧 主要改动
- 安全执行:新增 safe_run 函数,执行系统命令前先检查命令是否存在,避免因缺少组件导致崩溃
- 性能提升:命令缓存构建改用 shell 参数替换替代外部命令(basename),减少 fork/exec 开销
- Linker 检测修复:新增 APEX 路径支持,消除对 bash 的递归依赖,linker 未找到时降级为直接执行
- 按键竞态修复:音量键检测改为先锁后写,消除多设备场景下的竞态条件
- 目录自动创建:wrapper 创建前确保目标目录存在
- 配置健壮性:加载列表时自动 trim 空白字符,防止空格导致匹配失败
- 版本号显示:手动扫描入口显示当前 wrapper 版本号,便于排查问题
📦 升级说明
从 v2.4.1 升级后重启即可,主脚本将自动更新。
2.4.1
2.4.0
🚀 v2.4.0 - 目录兼容性修复
本次更新将默认挂载目录改为 /system/vendor/bin,适配现代安卓系统。
🔧 主要改动
- 普通命令目录从 /system/xbin 改为 /system/vendor/bin
现代安卓系统不再保证 /system/xbin 存在,改用 vendor/bin 更安全、兼容性更好 - 白名单目录仍然为 /system/bin,优先覆盖系统命令
- 环境初始化、扫描、清理逻辑同步适配新目录
📦 升级说明
从旧版本升级后重启手机即可,模块会自动将 wrapper 创建到新目录。
如之前存在 /system/xbin 下的旧 wrapper,本次扫描不会自动清理,
可手动删除或刷入模块时由 Magisk 清除挂载残留。
🔗 完整提交历史
Compare v2.3.1...v2.4.0
2.3.1
2.3.0
🚀 v2.3.0 - 多模块兼容与架构优化
本次更新大幅提升了与其他 Magisk 模块的共存能力,并优化了错误日志和主脚本可靠性。
🆕 新功能:智能躲避其他模块
- 扫描阶段会自动检测其他 Magisk 模块提供的命令
- 避免创建重复 wrapper,防止模块间相互覆盖
- 若其他模块新装了同名命令,本模块的旧 wrapper 也会被自动清理
🔧 架构优化
-
全局错误日志重定向
从脚本开头就把 stderr 指向日志文件,所有错误全量记录,不再需要 debug 文件 -
主脚本 ELF 检测更可靠
用 dd 直接读 ELF 文件头,不再依赖 file 命令,兼容性更好 -
模块路径解析更健壮
使用 readlink -f 获取真实路径,避免符号链接层级问题 -
通用缓存构建函数
scan_dirs_to_cache 统一了系统命令和其他模块命令的扫描逻辑
📦 升级说明
从任意旧版本升级后重启即可,无需手动操作。
若之前使用白名单,配置会无缝继承。
🔗 完整提交历史
Compare v2.2.1...v2.3.0
2.2.1
🔧 v2.2.1 - 修复脚本类命令执行
本次发布修复了通过 pkg install 安装的脚本类命令在 Android 10+ 系统上无法正常执行的问题,并优化了内部实现。
🛠️ 主要改动
-
移除 SELinux 规则文件写入
- 不再依赖 sepolicy.rule 文件
- 减少对系统的干预
-
动态执行方式选择
- ELF 64-bit → linker64 执行
- ELF 32-bit → linker 执行
- 非 ELF(脚本)→ Termux bash 执行
- 无 bash 时降级为直接执行
-
内部版本号修正
- wrapper 版本号更新为 4.0
📦 升级说明
从 v2.2.0 或更早版本升级后重启手机即可。主脚本将自动更新到新版。
🔗 完整提交历史
Compare v2.2.0...v2.2.1
2.2.0
🚀 v2.2.0 - 移除 SELinux 规则依赖,动态 linker 选择
本次发布移除了对 sepolicy.rule 文件的依赖,改为在主脚本中动态判断系统版本和二进制位数,选择合适的 linker 执行 Termux 程序。
✨ 重大改进
-
移除 SELinux 规则文件写入
不再需要在模块目录生成 sepolicy.rule,减少对系统的干预 -
动态 linker 选择
在 Android 10+ 系统中,通过 file 命令检测 Termux 二进制是 32 位还是 64 位
自动选择 linker 或 linker64 执行,确保程序正常运行 -
代码精简
移除 SEPOLICY_FILE 常量及相关写入逻辑
generate_main_wrapper 使用单引号 EOF,避免变量转义
🔧 技术细节
旧版:模块启动时写入 sepolicy.rule,依赖 Magisk 加载规则
新版:主脚本运行时动态判断并选择正确的 linker 执行
这一改动使模块更加自包含,减少对外部文件的依赖。
📦 升级说明
从 v2.1.0 升级后重启手机即可。主脚本将自动更新到新版,无需手动干预。
🔗 完整提交历史
Compare v2.1.0...v2.2.0
2.1.0
🔧 v2.1.0 - 调试模式与交互优化
本次发布新增调试模式并优化了手动扫描的交互体验。
🆕 新增功能
-
调试模式
- 在模块根目录创建 debug 文件即可启用
- 所有原本被静默丢弃的 stderr 错误信息将写入独立日志
- 便于遇到问题时提供更完整的诊断信息
-
扫描完成重启提示
- 手动扫描后若有 wrapper 变更,提示是否立即重启生效
- 5 秒等待,输入 Y 重启,否则取消
🔧 优化改进
- 清理流程增加终端输出,直观显示「清理白名单移除」「清理黑名单命令」「清理已卸载命令」
- 修复手动扫描时未执行环境初始化的问题
- 新增 run_quiet() 函数统一处理命令静默执行
📝 调试模式使用方法
遇到问题时:
- touch /data/adb/modules/termux_path/debug
- 手动执行一次扫描
- 提交 Issue 时附上:
- /data/local/tmp/termux_path.log
- /data/local/tmp/termux_path-debug.log
📦 升级说明
从 v2.0.0 升级后重启即可。调试功能默认关闭,不影响正常使用。
🔗 完整提交历史
Compare v2.0.0...v2.1.0
v2.0.0
🚀 v2.0.0 - 架构重构 + 白名单完善 + 日志轮转
本次发布合并了多项重要改进,以全新架构呈现。
🆕 功能完善
- 修复从白名单移除单个命令时,对应 /system/bin 下的 wrapper 未被清理的问题
- 白名单非空时逐项检查并清理不再属于白名单的 wrapper
- 日志文件自动轮转,上限 1MB,避免长期占用空间
🏗️ 底层重构
- 消除所有全局状态变量,改为纯函数 + 数据流水线设计
- 新增通用列表处理函数 load_list() 和 in_list(),统一白/黑名单及系统缓存管理
- bin 目录按需创建,仅在白名单非空时生成
- 代码风格统一:$(...) 替代反引号,变量加引号保护
- 整体可读性、可测试性、可维护性全面提升
📦 升级说明
从任意旧版本升级至 v2.0.0 无需额外操作,重启手机或手动执行扫描即可。所有现有配置和行为保持不变。
1.5.0
✨ 新功能:白名单强制覆盖
允许用户指定某些 Termux 命令强制覆盖系统同名命令。白名单中的命令将被放置到 /system/bin 目录,由于系统 PATH 中 /system/bin 优先于 /system/xbin,这些命令将优先于系统原生命令被执行。
典型场景:
- Termux 中的 awk 比系统自带版本更新,希望优先使用
- Termux 中的 grep 支持更多选项,希望替代系统版本
- 需要使用 Termux 版本的 find 替代系统 busybox 版本
🔧 技术实现
新增双目录架构:
- /system/xbin:存放普通 Termux 命令(跳过系统命令)
- /system/bin:存放白名单命令(强制覆盖系统命令)
白名单文件位置:/data/adb/modules/termux_path/whitelist
格式与黑名单相同,每行一个命令名,支持 # 注释。
📦 升级说明
从旧版本升级后重启手机即可。如需使用白名单功能,手动创建 whitelist 文件并添加命令名,然后执行一次手动扫描。