Skip to content

Releases

2.4.2

Choose a tag to compare

@Klein-ops Klein-ops released this 08 Jul 13:23
26f4182

🚀 v2.4.2 - 性能优化与核心修复

本次更新对底层执行逻辑进行了大幅优化和修复,提升稳定性和兼容性。

🔧 主要改动

  1. 安全执行:新增 safe_run 函数,执行系统命令前先检查命令是否存在,避免因缺少组件导致崩溃
  2. 性能提升:命令缓存构建改用 shell 参数替换替代外部命令(basename),减少 fork/exec 开销
  3. Linker 检测修复:新增 APEX 路径支持,消除对 bash 的递归依赖,linker 未找到时降级为直接执行
  4. 按键竞态修复:音量键检测改为先锁后写,消除多设备场景下的竞态条件
  5. 目录自动创建:wrapper 创建前确保目标目录存在
  6. 配置健壮性:加载列表时自动 trim 空白字符,防止空格导致匹配失败
  7. 版本号显示:手动扫描入口显示当前 wrapper 版本号,便于排查问题

📦 升级说明

从 v2.4.1 升级后重启即可,主脚本将自动更新。

2.4.1

Choose a tag to compare

@Klein-ops Klein-ops released this 19 May 13:30
26a3d78

🔧 v2.4.1 - 音量键交互重启

本次更新将手动扫描后的重启确认方式从键盘输入改为音量键选择。

🛠️ 改动说明

  • 扫描完成后如有变更,5秒内按音量加重启,音量减取消
  • 无需键盘输入,更方便在手机上操作
  • 未检测到音量键设备时降级为提示信息,不阻塞流程

📦 升级说明

从 v2.4.0 升级后重启即可。

2.4.0

Choose a tag to compare

@Klein-ops Klein-ops released this 04 May 09:13
5fe042f

🚀 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

Choose a tag to compare

@Klein-ops Klein-ops released this 03 May 09:33
3007867

🔧 v2.3.1

  • 同步流程中增加 Termux 应用安装状态的日志记录

📦 升级说明

从 v2.3.0 升级后重启即可,功能行为无变化。

2.3.0

Choose a tag to compare

@Klein-ops Klein-ops released this 30 Apr 02:53
d0bf806

🚀 v2.3.0 - 多模块兼容与架构优化

本次更新大幅提升了与其他 Magisk 模块的共存能力,并优化了错误日志和主脚本可靠性。

🆕 新功能:智能躲避其他模块

  • 扫描阶段会自动检测其他 Magisk 模块提供的命令
  • 避免创建重复 wrapper,防止模块间相互覆盖
  • 若其他模块新装了同名命令,本模块的旧 wrapper 也会被自动清理

🔧 架构优化

  1. 全局错误日志重定向
    从脚本开头就把 stderr 指向日志文件,所有错误全量记录,不再需要 debug 文件

  2. 主脚本 ELF 检测更可靠
    用 dd 直接读 ELF 文件头,不再依赖 file 命令,兼容性更好

  3. 模块路径解析更健壮
    使用 readlink -f 获取真实路径,避免符号链接层级问题

  4. 通用缓存构建函数
    scan_dirs_to_cache 统一了系统命令和其他模块命令的扫描逻辑

📦 升级说明

从任意旧版本升级后重启即可,无需手动操作。
若之前使用白名单,配置会无缝继承。

🔗 完整提交历史
Compare v2.2.1...v2.3.0

2.2.1

Choose a tag to compare

@Klein-ops Klein-ops released this 19 Apr 09:10
b7f7960

🔧 v2.2.1 - 修复脚本类命令执行

本次发布修复了通过 pkg install 安装的脚本类命令在 Android 10+ 系统上无法正常执行的问题,并优化了内部实现。

🛠️ 主要改动

  1. 移除 SELinux 规则文件写入

    • 不再依赖 sepolicy.rule 文件
    • 减少对系统的干预
  2. 动态执行方式选择

    • ELF 64-bit → linker64 执行
    • ELF 32-bit → linker 执行
    • 非 ELF(脚本)→ Termux bash 执行
    • 无 bash 时降级为直接执行
  3. 内部版本号修正

    • wrapper 版本号更新为 4.0

📦 升级说明

从 v2.2.0 或更早版本升级后重启手机即可。主脚本将自动更新到新版。

🔗 完整提交历史
Compare v2.2.0...v2.2.1

2.2.0

Choose a tag to compare

@Klein-ops Klein-ops released this 18 Apr 02:58
85a6223

🚀 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

Choose a tag to compare

@Klein-ops Klein-ops released this 17 Apr 12:09
c237697

🔧 v2.1.0 - 调试模式与交互优化

本次发布新增调试模式并优化了手动扫描的交互体验。

🆕 新增功能

  1. 调试模式

    • 在模块根目录创建 debug 文件即可启用
    • 所有原本被静默丢弃的 stderr 错误信息将写入独立日志
    • 便于遇到问题时提供更完整的诊断信息
  2. 扫描完成重启提示

    • 手动扫描后若有 wrapper 变更,提示是否立即重启生效
    • 5 秒等待,输入 Y 重启,否则取消

🔧 优化改进

  • 清理流程增加终端输出,直观显示「清理白名单移除」「清理黑名单命令」「清理已卸载命令」
  • 修复手动扫描时未执行环境初始化的问题
  • 新增 run_quiet() 函数统一处理命令静默执行

📝 调试模式使用方法

遇到问题时:

  1. touch /data/adb/modules/termux_path/debug
  2. 手动执行一次扫描
  3. 提交 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

Choose a tag to compare

@Klein-ops Klein-ops released this 15 Apr 10:47
3f8b0e9

🚀 v2.0.0 - 架构重构 + 白名单完善 + 日志轮转

本次发布合并了多项重要改进,以全新架构呈现。

🆕 功能完善

  • 修复从白名单移除单个命令时,对应 /system/bin 下的 wrapper 未被清理的问题
  • 白名单非空时逐项检查并清理不再属于白名单的 wrapper
  • 日志文件自动轮转,上限 1MB,避免长期占用空间

🏗️ 底层重构

  • 消除所有全局状态变量,改为纯函数 + 数据流水线设计
  • 新增通用列表处理函数 load_list() 和 in_list(),统一白/黑名单及系统缓存管理
  • bin 目录按需创建,仅在白名单非空时生成
  • 代码风格统一:$(...) 替代反引号,变量加引号保护
  • 整体可读性、可测试性、可维护性全面提升

📦 升级说明
从任意旧版本升级至 v2.0.0 无需额外操作,重启手机或手动执行扫描即可。所有现有配置和行为保持不变。

1.5.0

Choose a tag to compare

@Klein-ops Klein-ops released this 13 Apr 05:44
6356543

✨ 新功能:白名单强制覆盖

允许用户指定某些 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 文件并添加命令名,然后执行一次手动扫描。