Skip to content

Releases: Tencent/tinker

v1.9.14.14

25 Mar 06:04
Compare
Choose a tag to compare

Bugfix & ChangeLog

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

v1.9.14.13

17 Mar 03:19
Compare
Choose a tag to compare

Bugfix & ChangeLog

  1. Fix: #1498 (兼容 bugly 的封装逻辑)
  2. 恢复abi splits apk模式下对 TinkerId 自动追加的后缀内容。

v1.9.14.12

10 Mar 04:10
Compare
Choose a tag to compare

Bugfix & ChangeLog

  1. 兼容 AGP 3.x ~ AGP 4.1(HotFix: 1.9.14.11 版本在 AGP 4.1 环境下 MultiDex 主 Dex Keep 规则 Hack 会失败)
  2. 修改反复 crash 后回退策略:修改后只有主进程能触发回退,其他进程在启动时若闪退次数超限,则只标记移除 patch,不直接回退,这样回退操作会延迟到主进程重启,以避免主副进程版本不一致的问题。
  3. 将反射移除字段 final 标志的逻辑改为 Unsafe 直接获取字段值,以支持 JDK 12+ 环境。(感谢 @fengdai )
  4. oldApk 配置为目录的情况下若 newApk 配置的目录中 apk 与 oldApk 配置的目录中的 apk 不匹配(数量、名称不匹配),则报错中断编译。

v1.9.14.11

08 Mar 07:35
Compare
Choose a tag to compare
v1.9.14.11 Pre-release
Pre-release

已知问题

AGP 4.1 环境下 MultiDex 主 Dex Keep 规则 Hack 会失败,AGP 版本为 4.1 且 minSdkVersion < 21 的项目请先不要接入此版本。

Bugfix & ChangeLog

  1. 兼容 AGP 3.x ~ AGP 4.1
  2. 修改反复 crash 后回退策略:修改后只有主进程能触发回退,其他进程在启动时若闪退次数超限,则只标记移除 patch,不直接回退,这样回退操作会延迟到主进程重启,以避免主副进程版本不一致的问题。
  3. 将反射移除字段 final 标志的逻辑改为 Unsafe 直接获取字段值,以支持 JDK 12+ 环境。(感谢 @fengdai )
  4. oldApk 配置为目录的情况下若 newApk 配置的目录中 apk 与 oldApk 配置的目录中的 apk 不匹配(数量、名称不匹配),则报错中断编译。

v1.9.14.10

09 Dec 03:54
Compare
Choose a tag to compare

Bugfix & ChangeLog

  1. 解决了编译阶段补丁生成时误判 loader 类被修改的问题。
  2. 解决了 BSDiff 导致 StackOverflow 的问题。
  3. 将 TinkerClassLoader 的父类改成了 PathClassLoader,避免 getClassLoader 时的 ClassCastException。
  4. 编译阶段增加对 manifest 里除了四大组件外其他节点修改的校验,如不允许修改 versionCode 等。
  5. 编译阶段增加对 abi 变化的校验,若新包新增了 abi,编译会被中断。

v1.9.14.9

20 Oct 06:21
Compare
Choose a tag to compare

Bugfix & ChangeLog

  1. 适配AGP3.6.0 mapping.txt和R.txt路径。(感谢 @colton.liang )
  2. 修改useDelegateLastClassLoaderOnAPI29AndAbove开关为useDelegateLastClassLoader,修改后此开关将控制 Android 8.0 及以上的系统是否使用 DelegateLastClassLoader 加载 patch。
  3. 修复 base Context 的 ClassLoader 未替换的问题。

v1.9.14.8

28 Sep 06:24
Compare
Choose a tag to compare

Bugfix & ChangeLog

  1. 修改 applicationid 获取的方式,避免设置 flavors 后 applicationid 不对。(感谢 @liuling07 )
  2. 当新包 dex 数量多于旧包的dex数量时编译补丁时会NPE。
  3. 同步 nop 版本和普通版本间的部分差异。(感谢 @simpleton )
  4. 部分编译环境会生成乱序的 catch block,导致误判新包有修改。
  5. 在 API 29 的机器上尝试一些 hack 操作主动触发 dex2oat。
  6. 在 ApplicationLike 中增加接口适配魅族的夜间模式开关。
  7. 修复 nop 版本启动时可能产生的 NPE 问题。

v1.9.14.7

10 May 11:05
Compare
Choose a tag to compare

Bugfix & ChangeLog

  1. 彻底消除对 Android Support Library / AndroidX Library 的依赖。
  2. 继续修复 Android Q 上卡顿的问题,理论上此版本加载 patch 后会引入约 800ms ~ 1000ms 的额外开销,暂时没想到好办法规避。
  3. 修复 #1391 中提到的问题。
  4. 修复热修后 SharedLibrary R 类中的资源 ID 与 AssetManager 中 Package ID 不一致导致的资源找不到问题。(多谢 @wanglianbao)
  5. 在给 TinkerLog 设置实现类之前缓存 TinkerLog 打的日志,App 启动后可调用 TinkerLog.printPendingLogs() 将这些日志通过设置的实现类输出。
  6. 修复因魅族机器首次加载 dex 时不生成 oat 导致 patch 加载失败的问题。
  7. 尝试修复 APPLICATION_INFO_CHANGED 事件引起的 ClassLoader 检查异常。
  8. 修复 OTA 之后主副进程状态不一致的问题。

v1.9.14.6

11 Mar 09:38
Compare
Choose a tag to compare

注意:

如果接入此版本后编译时报如下错误:

More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro'

在 app 工程的 build.gradle 中加入以下内容即可解决问题:

android {
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
}

Bugfix & ChangeLog

  1. 修复漏传 dexOptDir 导致 Android N 上卡顿,以及 ClassLoader Hack 新方案导致的部分 Android Q 机型卡顿的问题。
  2. 使用新方法解决 Android Q 上 Verify Class 导致的卡顿问题,不再引入 parent PathClassLoader,避免部分框架出现问题。( 这样一来 @yuany 的变更就没机会起作用了,不过还是感谢提交 ci 哇)
  3. 修复了华为方舟补丁接口 isArkHotRuning 总是返回 false 的问题。
  4. 修复了 Gradle 6 和 AS 4.0 下的一些兼容性问题。(感谢 @fmoda3 )
  5. Tinker 运行时库改用 androidx 作为 support 库。(感谢 @fmoda3 )

v1.9.14.5

13 Dec 06:44
Compare
Choose a tag to compare

Bugfix & ChangeLog

  1. 修复 Tinker 在 Android Q 上导致启动和运行卡顿的问题。
  2. 修复已加载 patch 的情况下再次 Apply 一个新 patch 之后马上清除 patch 会导致主进程和其他进程的 patch 版本不一致的问题。