📋 核心变更摘要
本版新增本地日志缓冲(解决 logcat 记录一会儿就没了的问题),并完成一轮工程整理(换行符统一为 LF、CI 增加语法检查、.gitignore 精简、README 增加徽章与下载入口、提交历史压缩)。功能逻辑沿用 v2.2.19.4-yuzu 的四项修复,模块行为与现有配置无需改动。
从
v2.2.19.4-yuzu升级:只有日志缓冲是新增内容,覆盖刷入即可。
从更早版本升级:会一并获得下节列出的四项修复。
✨ 本版新增
📜 本地日志缓冲
- 除写入
logcat(tag 为TS-AUTO)外,日志还会写入/data/adb/ts_auto.log,每行带月-日 时:分:秒时间戳。 - 缓冲有固定上限:超过 64KB 时自动只保留末尾 200 行,不会无限增长;裁剪采用「先写临时文件、成功后再覆盖」的方式,不会因裁剪失败而丢日志。
- 文件权限为
600,且位于0700的/data/adb下,仅 root 可读,其它应用无法访问(旧版本放在/data/local/tmp,该目录所有应用可读)。 - 之所以要加缓冲:
logcat是内存环形缓冲(默认几百 KB,且由全系统共用),系统繁忙时旧记录很快被挤掉、重启即清空,事后排查往往已经看不到;缓冲文件则可跨重启保留。 - 缓冲文件不可写时静默退化为只写
logcat,不影响同步流程。 - 管理器的“操作”按钮优先展示缓冲内容,安装完成时会打印日志路径;卸载时缓冲文件随模块一并删除。
⚡ 本版优化
➕ 日志读取方式
-
点管理器“操作”按钮即可查看:
action.sh会同步一次,并附带打印最近 15 条日志(管理器以 root 运行,无需自己su),缓冲不存在时回退到logcat。 -
设备上手动查看(
/data/adb为0700,需要 root;在终端 App 里先su,或把命令写成su -c '...'):tail -n 50 /data/adb/ts_auto.log # 本地缓冲,跨重启保留(推荐) grep -E '后端|同步|失败|停止' /data/adb/ts_auto.log # 只看关键行 logcat -d -s TS-AUTO | tail -n 30 # 系统日志(重启即清空) logcat -s TS-AUTO # 实时跟随
-
电脑上查看(用
adb读logcat不需要 root,读/data/adb下的文件则需要):adb logcat -s TS-AUTO # 实时查看系统日志 adb shell su -c 'tail -n 50 /data/adb/ts_auto.log' # 读本地缓冲 adb shell su -c 'cat /data/adb/ts_auto.log' > ts_auto_log.txt # 导出到电脑
🧹 工程整理
- 换行符统一为 LF:新增
.gitattributes,对*.sh/*.awk/*.prop/*.json/*.md/*.yml等固定 LF,避免因 CRLF 导致 Android 上 shebang 解析失败(/system/bin/sh^M: not found);LICENSE一并由 CRLF 转为 LF。 - CI 增加语法检查:构建前对入口脚本、
lib/、backends/与META-INF内的脚本执行sh -n,语法不通过的代码不进包。 .gitignore精简:由 111 行压缩为 26 行,并修正原先会误忽略module/META-INF/下新增文件的规则。- README:增加 CI / Release / License 徽章与下载入口,区分正式发行版与带时间戳的 CI 测试包。
- 提交历史压缩:由 281 个提交(其中 236 个 merge 提交)压缩为单一提交,各历史版本仍可通过 tag(
v1.4.31.5~v2.2.19.5)查看。
🧹 模块结构分类(沿用)
- 文件分为三类:入口脚本(模块根目录)、
lib/共享库、backends/后端实现。 lib/按功能拆分:core(常量/状态/日志)、lock、tools、applist、backend、props,由common.sh统一加载;后端实现各自独立成文件(backends/tricky.sh写target.txt、backends/teesim.awk改config.json)。
🔋 省电与稳定(沿用)
- 无任何后台联网轮询;单进程同时监听
packages.list与rules.txt;2 秒防抖合并短时触发;通过内容指纹比对,仅在数据真实变化时同步。 - 日志只在开机与文件变化时写入(无事件不写),缓冲裁剪也只在超限时发生,不引入常驻开销。
🐛 沿用的修复(v2.2.19.4-yuzu 引入)
- 常驻列表末行无换行导致粘连:用
echo 包名 >> rules.txt追加的包名不再与上一行粘连(同步前自动补齐末行换行);文件开头的 UTF-8 BOM 也会被清除。 - 写入失败被误报成功:
target.txt替换失败(目录只读、文件被占用等)时如实返回失败 —— 描述标注⚠️、手动同步退出码1。 - inotify 探测方式错误:原先探测 busybox 时执行的是
busybox --help(不含 applet 帮助),导致仅装有 busybox 的设备被误判为“无 inotify 工具”而直接退出;现改为实际执行 applet 的--help。 inotifyd监听失效:inotifyd PROG FILE:mask会把PROG当作程序执行,原先传-不会产生任何输出;现改用echo打印事件,再由管道读取。
⚙️ 运行机制(沿用,未变)
- 后端判定按模块 id:
/data/adb/modules/tricky_store(Tricky Store / OSS)与/data/adb/modules/teesim(TEE Simulator);带disable标记的模块不计入,两个后端同时启用时模块直接停止(不做优先级选择)。 - TEE Simulator 只改
profiles.default.apps:keybox/mode/patchLevel/ 设备信息等字段,以及其它 profile(如ccc)均逐字节保留;无法可靠定位数组时放弃写入。 rules.txt支持#注释与空行,同步前自动补齐末行换行、清除 UTF-8 BOM。- 属性伪装在开机早期执行:
apply_resetprop位于post-fs-data.sh(Zygote 启动前),在Build.TYPE/Build.TAGS等静态字段取值前生效。 - 事件驱动:单进程 inotify 监听
packages.list与rules.txt,2 秒防抖,内容指纹比对;无联网、无定时轮询。
🗑️ 移除
- 全局可读的临时日志:不再产生
/data/local/tmp/ts_auto.log(该目录所有应用可读,存在被检测的风险);升级与卸载时会清理遗留文件。 - 安全补丁功能:不读取、不生成、不修改
security_patch.txt。 - 周期联网任务:无后台定时拉取。
📥 安装与操作指南
| 项目 | 说明 |
|---|---|
| 支持环境 | Tricky Store / Tricky Store OSS / TEE Simulator,配合 Magisk / KernelSU / APatch |
| 部署 | 刷入 ZIP 后重启 |
| 手动同步 | sh /data/adb/modules/ts-auto-add/action.sh
|
| 状态查看 | 模块描述:✅ [后端 | 应用: X | 更新: HH:MM]
|
| 日志 | 管理器“操作”按钮;tail -n 50 /data/adb/ts_auto.log(需 root)或 logcat -d -s TS-AUTO(电脑 adb logcat -s TS-AUTO)
|
📁 数据文件路径
| 后端 | 判定(模块 id) | 维护目标 | 常驻列表 |
|---|---|---|---|
| TEE Simulator | teesim
| /data/adb/teesim/config.json(仅 profiles.default.apps)
| /data/adb/teesim/rules.txt
|
| Tricky Store / OSS | tricky_store
| /data/adb/tricky_store/target.txt
| /data/adb/tricky_store/rules.txt
|
运行文件(位于当前后端目录下):
| 文件 | 说明 |
|---|---|
.ts_daemon_pids.list
| 后台子进程 PID 列表 |
.ts_fingerprint
| 变更检测指纹缓存 |
.ts_lock / .ts_debounce / .ts_tmp
| 运行时锁 / 临时文件 |
日志缓冲固定存放在 /data/adb/ts_auto.log(不在后端目录;权限 600、仅 root 可读,超过 64KB 时只保留末尾 200 行,卸载时删除)。
⚠️ 注意事项
- 两个后端不要同时启用:同时启用时模块直接停止,描述显示
⛔ [模块已停止 …];停用或卸载其中一个后重启即可恢复。 - TEE Simulator 模式需要
awk(系统自带或框架 busybox);缺失时模块会放弃写入配置并记录日志,装上 busybox 后会在下次同步时自动重试。 - 首次安装后请重启设备;编辑
rules.txt会自动触发同步,无需重启。 - 排查问题请优先查看本地缓冲
/data/adb/ts_auto.log:logcat中的记录可能已经被系统挤掉。 - 如需禁用属性重置:编辑
post-fs-data.sh,注释掉apply_resetprop后重启。 - 卸载时只删除本模块自身的文件(含日志缓冲),
target.txt/config.json保持不动。
💡 提示:本版以新增日志缓冲与工程整理为主,功能行为无变化;升级后无需改动任何现有配置。
版本:v2.2.19.5-yuzu | 更新日期:2026-09-14