Releases
v6.0.0
Compare
Sorry, something went wrong.
No results found
新增 (Added)
保活兼容层(定向模式核心)
保活决策引擎 :新增 RetentionCompat(纯 JVM 决策引擎)、RetentionConfig(libxposed 远程首选项桥接与变更监听)、RetentionHooks(面向各 ROM hook 文件的条件挂载入口),以及 RetentionMode / RetentionPrefsKeys / RetentionProcess 值类型。
失效安全规则:空列表时关闭过滤(R1);无法解析的目标进程绝不保护(R2);首选项读取失败时保持最后已知状态(R3);批量过滤遇空集合直接放行(K2);uid 缓存随每次状态更新失效。
全 ROM 杀后台钩子白名单管控 :
HyperV2 killPackage/killProcess:TARGETED 模式下仅拦截受保护进程,未列入白名单的应用恢复原生清理逻辑。
Android S/T/U/V killProcessesWhenImperceptible:从参数数组中剔除受保护 uid 后放行原方法。
MIUI V14 / HyperOS V1:镜像 HyperOS V2 的 RunningProcess 形态管控;cleanUpMemory 与 killProcessByMinAdj 在全局开关下保持全局策略。
One UI:将所有携带 ProcessRecord 的决策点条件化(activeLaunchKillCheck、killTimeOverEmptyProcess 等),并为 IsForceKillHeavyProcess 新增直接包名匹配。
adj 保护(框架侧) :ApplyAdjOpt 将白名单内后台进程的 adj 钳制至 BACKUP_APP_ADJ(250),未列出的进程维持 600–799 行为。
lmkd deepening level 参数 :新增 KEY_ADJ_PROTECT_LEVEL 首选项,合法取值 {250, 300},其他值归一化为 300;替代原先硬编码的 BACKUP_APP_ADJ 常量。
LMK_TARGET 白名单感知下限 :applyTargetBucketFloor 仅在包负载上将 adj==250 桶的 minfree 减半,不修改输入数组、不回写 ProcessList 字段,避免与上游 /3 折扣逻辑纠缠。
配置 UI 与子开关
配置界面 :新增 RetentionConfigActivity 启动器入口(含定向模式总开关与多选已安装应用列表,排除自身、主线程外加载,纯 android.widget 实现,无第三方依赖);配套 RetentionServiceBridge 经 XposedServiceHelper 提供模块侧写入通道,服务未绑定时拒绝写入以避免变更被静默丢弃。提供中英双语字符串资源。
adj.protect 子开关 :可独立关闭 adj 钳制(默认在 TARGETED 模式下开启),保留白名单以便随时重新启用。
filter.kill 子开关 :临时关闭时可回退全局拦截行为,同时保留白名单。
诊断与验收工具
审计日志开关 :retention.debug.audit 首选项控制逐决策审计日志行(保护命中、uid/名单过滤跳过、adj 钳制事件)走文件日志通道;默认关闭,关闭时热路径零开销。
设备验收脚本 :scripts/capture_oom_snapshot.sh 抓取带标签的 dumpsys activity oom 快照及存活检查,用于 LEGACY-vs-TARGETED 对比回归矩阵。
入口点诊断日志 :HCEntrance 新增 handleSystemServerStarting / handlePackageLoaded / handlePackageReady 日志,使设备验收期间的分发可见性可审计。
变更 (Changed)
模块入口迁移至 libxposed API :
HookTool :tool 纳入构建图并适配 AGP 8.5 构建脚本;新增 META-INF/xposed 入口元数据(java_init.list / module.prop / scope.list),移除旧的 assets/xposed_init。
通过同包 shim 转发到新的 CoreTool/AbsHook API,桥接被移除的旧符号(HCBase/HCEntrance/HCInit/HCData/IHook/ContextTool/InvokeTool 等)。
existsXxx 探测与静态工具类链式构建改为 CoreCompat 路由;compileSdk 提升至 36。
LSPosed system_server 作用域对齐 :scope.list 添加 'system' 条目(LSPosed 据此识别 system_server,缺失则框架不分发);module.prop 设置 staticScope=true 自动应用声明作用域,并启用 autoHotReload=true 支持热重载。
应用与构建产物更名 :显示名改为 AppRetentSel ,rootProject.name 改为 AppRetentSelHook,APK 输出文件名前缀同步更改。包名 com.hchen.appretention 与 applicationId 保持不变,LSPosed 模块身份不受影响。
日志器迁移 :内嵌旧版 com.hchen.hooktool.log.XposedLog 迁移为单一类定义 com.hchen.appretention.log.RetentionLog,完整承载原方法面(android.util.Log 输出 + SaveLog 文件日志集成)。
修复 (Fixed)
保活配置从未生效 :此前 RetentionConfig.init() 从未被调用,白名单与模式标志停留在首选项文件中,TARGETED 模式形同虚设;现于 HookInit.onLoadPackage 顶部、任何钩子注册之前调用(幂等,读取失败时保持 LEGACY 默认状态)。
release 构建 R8 冲突 :消除 app 内嵌副本与 HookTool 库中全限定名重复的 XposedLog 类导致的 R8 处理冲突(debug 构建因混淆仅在 release 运行而未暴露)。
Android 11+ 包可见性 :清单中声明 LAUNCHER intent 的 <queries>,使配置 UI 能枚举第三方应用;移除导致 LSPosed 模块类型探测器将 APK 误判为旧版的 xposedminversion / xposedsharedprefs 元数据。
版本控制遗漏 :修复 app/.gitignore 中模板自带的 /src/test 忽略规则,使单元测试源码(RetentionCompatTest)纳入追踪。
构建 / 杂项 (Build & Chore)
.gitignore 清理冗余 .idea 细粒度忽略规则,新增 /.omo/ 排除及 Eclipse Buildship 元数据(.project / .classpath / .settings/ / /bin/ 等)排除。
锁定 io.github.libxposed:service 至 101.0.0(102 版本强制消费方 compileSdk>=37,与本项目工具链锁定 36 冲突;所需 API 面自 101 起未变)。
将保活包名纳入 release minify keep 规则,作为诊断安全网。
质量 (Quality)
JUnit 单元测试基础设施:18 个单元测试全部通过,覆盖失效安全规则、子开关独立性、level 归一化与目标桶下限等契约。
assembleDebug 与 minifyReleaseWithR8 构建验证通过。
You can’t perform that action at this time.