tinker

Tinker is a hot-fix solution library for Android, it supports dex, library and resources update without reinstall apk.

OTHER License

Stars
17.1K
Committers
44

Bot releases are hidden (Show)

tinker - v1.9.14.27

Published by tys282000 about 2 months ago

Bugfix & ChangeLog

  1. 将所有起回调作用的Service改为no-sticky方式启动,避免自动拉起进程以满足“App未经用户操作禁止自启动”的合规要求。
  2. 尝试修复部分机器上Tinker产物解压失败的问题。
  3. ApplicationLike中增加getTheme()方法以便全局替换Theme对象。
tinker - v1.9.14.26.3 Latest Release

Published by tys282000 9 months ago

Bugfix & ChangeLog

  1. 回退: 改用新的资源注入方式避免patch加载后多消耗两份resources.apk的虚拟内存。(此方法在部分机器上存在兼容性问题,会导致资源查找失败)
  2. 回退: 系统主题发生变化时避免接入的App自杀。(不自杀会导致App资源id和资源内容错配)
  3. 将Tinker的service改为no-sticky方式启动,避免自动拉起进程以满足“App未经用户操作禁止自启动”的合规要求。
  4. 编译时问题修复:避免当所有满足loader pattern的class都被分到了非主dex时编译失败。
tinker - v1.9.14.26

Published by tys282000 12 months ago

Bugfix & ChangeLog

  1. 改用新的资源注入方式避免patch加载后多消耗两份resources.apk的虚拟内存。
  2. 兼容 Android 14 对动态加载产物的强制只读要求。
  3. 在收到APPLICATIO_INFO_CHANGED消息后重新注入patch 资源,避免部分ROM上更换壁纸或主题后导致加载了patch的app自杀的问题。
  4. 修复了一些导致多进程间代码版本不一致的问题。
tinker - v1.9.14.25.3

Published by tys282000 about 1 year ago

Bugfix & ChangeLog

  1. 修复了App提前向LoadedApk 和 Application 中注入ApplicationContext的情况下在 API 28 机器上启动时卡死的问题。
  2. 修复了Patch资源在resources.apk中没有按四字节对齐,导致patch加载后内存开销变大的问题。
tinker - v1.9.14.25.2

Published by tys282000 over 1 year ago

Bugfix & ChangeLog

  1. 修复了部分机型上无法加载新增资源及修改资源不生效的问题(flutter加载asset时必现)。
  2. 新增了异步触发patched dex的dex2oat并且不等待其执行完毕的patch合成接口,以满足开启时长较短的App紧急修复问题时需要Patch能快速生效的需求。
tinker - v1.9.14.25.1

Published by tys282000 about 2 years ago

Bugfix & ChangeLog

  1. 修复了 anim 资源新增、修改检测逻辑,在 anim 资源发生新增或修改时会中断编译。
  2. 获取当前进程名的方法在 api level >= 18 的机器上优先使用反射 ActivityThread 的方式实现,若失败则改用 BufferedReader 读 proc 的方式实现。
tinker - v1.9.14.25

Published by tys282000 about 2 years ago

Bugfix & ChangeLog

  1. 增加了32位 Android N 及更旧的系统上使用解释模式触发 dexopt 的开关以帮助减少 32位上 VmSize 的开销。
  2. 修复部分机型上资源有变更时 patch 失败的问题。
  3. base包更新或有新 patch 合成成功后删除老 patch 的逻辑改为异步实现以降低启动耗时。
  4. dexopt 触发重试次数缩减到 10 次,避免部分机型 apply patch 耗时太长。
tinker - v1.9.14.24

Published by tys282000 about 2 years ago

Bugfix & ChangeLog

  1. 修复了 R8 生成的特殊 DebugInfo 导致编译失败的问题。
  2. 增加 performSecondaryDexOpt 的重试次数,在重试失败后再尝试 registerDexModule,以尽量减小 Android R 上 odex 没有生成导致的性能开销。
  3. 在 performSecondaryDexOpt 重试无效前不在 OPPO、VIVO、XIAOMI、REDMI 的 Android S 或更新的系统上调 registerDexModule,规避已知的性能问题。
  4. 更新 getProcessName 的实现,在 Android P 及更新的系统上优先尝试 Application.getProcessName() 方法。
tinker - v1.9.14.23.1

Published by tys282000 about 2 years ago

Bugfix & ChangeLog

  1. 修复了 Android 4.4 设备上 getCurrentInstructionSet() 失败的问题。
tinker - v1.9.14.23

Published by tys282000 about 2 years ago

Bugfix & ChangeLog

  1. 优化了判断 resources.apk 被意外修改导致资源 patch 失效的检测逻辑。
  2. 修复了连续两次 patch 中间更新了 base 包时可能导致最后一次 patch 失效的问题。
  3. 在 Patch 加载不成功时 installNativeLibraryABIWithoutTinkerInstalled() 方法不再注入 patch so 路径,避免 dex 和 so 不一致的问题。
tinker - v1.9.14.22

Published by tys282000 over 2 years ago

Bugfix & ChangeLog

  1. 修复了偶现的 Tinker ID 注入失败导致 Patch 包编译失败的问题。
tinker - v1.9.14.21

Published by tys282000 over 2 years ago

Bugfix & ChangeLog

  1. 尝试修复极少数情况下因为 resources.apk 被意外修改导致 patch 后的资源找不到或失效的问题。
tinker - v1.9.14.20

Published by tys282000 over 2 years ago

Bugfix & ChangeLog

  1. 修复了 OPPO & VIVO 部分机型加载 Tinker 时偶现的闪退问题。
  2. 增加了 Patch Dex 的 Dex2Oat 重试次数,以降低解释模式加载 Patch Dex 的概率。
tinker -

Published by tys282000 almost 3 years ago

Bugfix & ChangeLog

  1. 修复了资源文件名中含有 % 时导致编译失败的问题。
  2. 修复了 OPPO、三星 Android S 机器上加载 patch 可能会导致 crash 的问题。
  3. Secondary dex2oat 触发方式和使用的 compile-filter 综合了字节分享的文章、 OPPO、三星方面给出的建议进行了调整,调整后理论上能同时解决 Android R 的卡顿和 Android S 上的部分 crash 问题。
  4. 重新支持了 AGP 7.0 和 R8。
tinker - v1.9.14.18

Published by tys282000 about 3 years ago

Bugfix & ChangeLog

  1. 修复了 Patch 合成阶段在 Android O 之前的系统上可能会导致被 Patch 类和旧类同时被加载的问题。
  2. 在 secondary dexopt hack 时将 compile filter 改成 speed 以避免 Android R 机型加载 Patch 后启动慢的问题。
  3. 在 Android S 上不做 secondary dexopt hack 以避免重启后 Patch Dex 加载失败。
  4. 若 app 手动指定了 aapt2 stableIds 文件路径,则 Tinker 不再自动注入生成的 stableIds 文件路径。
  5. 以更精准的方式判断 Patch Service 是否正在运行,并开启 Patch Service 意外退出后自动重启,以提高 Patch 成功率。
tinker - v1.9.14.17

Published by tys282000 over 3 years ago

注意

因 Bintray 和 JCenter 已停止服务,Tinker 已将包含此版本在内的所有版本迁移到了 MavenCentral。若升级后编译失败,请在项目根目录的 build.gradle 中增加 mavenCentral() 这个 Repo 后重新编译一次。

Bugfix & ChangeLog

  1. Fix: TinkerInlineFence 中可能出现的 Message 泄漏。
  2. 在 Android R 上开启 secondary dexopt hack 以解决部分 Android R 机型加载 patch 后启动慢的问题。
tinker -

Published by tys282000 over 3 years ago

注意

从此版本开始 Tinker 将不再发布到 bintray,如升级后编译提示找不到 1.9.14.16 版本,请在项目根目录的 build.gradle 中增加 mavenCentral() 这个 Repo 后重新编译一次。

Bugfix & ChangeLog

  1. Fix: Windows 下编译 Patch 失败。
  2. 修改编译脚本和 POM 信息,以支持发布到 MavenCentral。
tinker -

Published by tys282000 over 3 years ago

Bugfix & ChangeLog

  1. Fix: ShareTinkerLog 输出 PendingLog 时可能抛出 ConcurrentModificationException.
tinker -

Published by tys282000 over 3 years ago

Bugfix & ChangeLog

  1. Fix:AGP 3.5.x 中资源 Id keep 失效。
tinker -

Published by tys282000 over 3 years ago

Bugfix & ChangeLog

  1. Fix: #1498 (兼容 bugly 的封装逻辑)
  2. 恢复abi splits apk模式下对 TinkerId 自动追加的后缀内容。
Package Rankings
Top 3.71% on Proxy.golang.org
Top 5.71% on Repo1.maven.org
Badges
Extracted from project README
license Release Version PRs Welcome WeChat Approved