Releases: Tencent/tinker
Releases · Tencent/tinker
v1.9.14.27
Bugfix & ChangeLog
- 将所有起回调作用的Service改为no-sticky方式启动,避免自动拉起进程以满足“App未经用户操作禁止自启动”的合规要求。
- 尝试修复部分机器上Tinker产物解压失败的问题。
- ApplicationLike中增加
getTheme()
方法以便全局替换Theme对象。
v1.9.14.26.3
Bugfix & ChangeLog
- 回退: 改用新的资源注入方式避免patch加载后多消耗两份resources.apk的虚拟内存。(此方法在部分机器上存在兼容性问题,会导致资源查找失败)
- 回退: 系统主题发生变化时避免接入的App自杀。(不自杀会导致App资源id和资源内容错配)
- 将Tinker的service改为no-sticky方式启动,避免自动拉起进程以满足“App未经用户操作禁止自启动”的合规要求。
- 编译时问题修复:避免当所有满足loader pattern的class都被分到了非主dex时编译失败。
v1.9.14.26
Bugfix & ChangeLog
- 改用新的资源注入方式避免patch加载后多消耗两份resources.apk的虚拟内存。
- 兼容 Android 14 对动态加载产物的强制只读要求。
- 在收到APPLICATIO_INFO_CHANGED消息后重新注入patch 资源,避免部分ROM上更换壁纸或主题后导致加载了patch的app自杀的问题。
- 修复了一些导致多进程间代码版本不一致的问题。
v1.9.14.25.3
Bugfix & ChangeLog
- 修复了App提前向LoadedApk 和 Application 中注入ApplicationContext的情况下在 API 28 机器上启动时卡死的问题。
- 修复了Patch资源在resources.apk中没有按四字节对齐,导致patch加载后内存开销变大的问题。
v1.9.14.25.2
Bugfix & ChangeLog
- 修复了部分机型上无法加载新增资源及修改资源不生效的问题(flutter加载asset时必现)。
- 新增了异步触发patched dex的dex2oat并且不等待其执行完毕的patch合成接口,以满足开启时长较短的App紧急修复问题时需要Patch能快速生效的需求。
v1.9.14.25.1
Bugfix & ChangeLog
- 修复了 anim 资源新增、修改检测逻辑,在 anim 资源发生新增或修改时会中断编译。
- 获取当前进程名的方法在 api level >= 18 的机器上优先使用反射 ActivityThread 的方式实现,若失败则改用 BufferedReader 读 proc 的方式实现。
v1.9.14.25
Bugfix & ChangeLog
- 增加了32位 Android N 及更旧的系统上使用解释模式触发 dexopt 的开关以帮助减少 32位上 VmSize 的开销。
- 修复部分机型上资源有变更时 patch 失败的问题。
- base包更新或有新 patch 合成成功后删除老 patch 的逻辑改为异步实现以降低启动耗时。
- dexopt 触发重试次数缩减到 10 次,避免部分机型 apply patch 耗时太长。
v1.9.14.24
Bugfix & ChangeLog
- 修复了 R8 生成的特殊 DebugInfo 导致编译失败的问题。
- 增加 performSecondaryDexOpt 的重试次数,在重试失败后再尝试 registerDexModule,以尽量减小 Android R 上 odex 没有生成导致的性能开销。
- 在 performSecondaryDexOpt 重试无效前不在 OPPO、VIVO、XIAOMI、REDMI 的 Android S 或更新的系统上调 registerDexModule,规避已知的性能问题。
- 更新 getProcessName 的实现,在 Android P 及更新的系统上优先尝试 Application.getProcessName() 方法。
v1.9.14.23.1
Bugfix & ChangeLog
- 修复了 Android 4.4 设备上 getCurrentInstructionSet() 失败的问题。
v1.9.14.23
Bugfix & ChangeLog
- 优化了判断 resources.apk 被意外修改导致资源 patch 失效的检测逻辑。
- 修复了连续两次 patch 中间更新了 base 包时可能导致最后一次 patch 失效的问题。
- 在 Patch 加载不成功时 installNativeLibraryABIWithoutTinkerInstalled() 方法不再注入 patch so 路径,避免 dex 和 so 不一致的问题。