Skip to content

Releases: Tencent/tinker

v1.9.14.3

16 Oct 07:32
Compare
Choose a tag to compare

Bugfix & ChangeLog

  1. 修复 TinkerApplicationInlineFence 类没有被自动 keep 到主 dex 的 bug。
  2. 保护 BindService 提高 patch 进程优先级的逻辑偶尔在 unbind 的时候产生的 crash。
  3. 四字节对齐 patch 中的 dex,避免加载时产生 mmap 放大的问题。
  4. 使用 PathClassLoader 触发合成 patch 后的 dex2oat,避免因 patch 失去 jit 支持导致性能问题。(多谢华为的建议)
  5. 修改 maindex keep 规则,避免主 dex 中引入过多的类。

v1.9.14

30 Aug 16:22
Compare
Choose a tag to compare

Bugfix & ChangeLog

  1. 改用Try-catch+特殊方法名隔离Application和ApplicationLike以阻止AOT/JIT内联,避免部分ClassCastException等问题。
  2. 修复补丁在乐固和360加固宝环境下加载失败导致闪退的问题。
  3. 通过BindService提高patch进程优先级,加快补丁合成速度。(感谢 @dodola !)
  4. 继续修复在最新AGP上的部分兼容问题。(感谢 @lizhangqu !)
  5. 增加华为方舟环境补丁支持(作为Tinker的旁路逻辑接入,方舟化补丁的具体使用流程将在华为提交的文档中说明。)

v1.9.13.2

17 Jun 08:08
Compare
Choose a tag to compare

Bugfix & ChangeLog

  1. Fix AGP 3.5.0 上MultiDex Task查找失败。 ( 感谢 @lizhangqu !)
  2. Fix #1127

v1.9.13.1

11 Jun 12:18
Compare
Choose a tag to compare

Bugfix & ChangeLog

  1. Fix #1074 ( 感谢 @noproxy !)
  2. Fix Android Q上因为App的默认ClassLoader可能不为PathClassLoader导致补丁加载失败。
  3. Fix #1084 ( 感谢 @noproxy !这里他提供了一个临时方案,即对每个Dex都尝试移除loader pattern中指定的class,并忽略关于loader class变化的警告。切记不要在minSDK < 21的情况下开启此方案!!)
  4. 增加对AGP 3.4+上R8的支持。(感谢 @lizhangqu !)
  5. 暂时回退为使用startService来启动Patch进程,解决部分系统禁用JobScheduler的问题。
  6. Fix #1093

v1.9.13

26 Apr 12:28
Compare
Choose a tag to compare

Bugfix & ChangeLog

  • 将Patch Apply的重试次数增加到20;
  • 将Tinker运行时库对support-annotations的依赖改为compileOnly,避免接入时引入整个appcompat包;
  • 修复加固模式下patch无法加载成功的问题;
  • 修复Android P下patch无法加载成功的问题;
  • 修复后台进程在patch加载时偶尔发生ANR的问题(主进程对patch.info的更新改为先做oat再更新);
  • 修复P中因apache类被内联导致的crash;(感谢@lizhangqu)
  • 引入shadowJar插件,彻底解决生成的Tinker CLI工具报ClassNotFound的问题。

注意,对于主dex中的类数量莫名变大的问题,目前已确定是minSDK=21时AGP启用了native-multidex,导致gradle中配置的maindex list参数被忽略引起的。在找到通用的规避方案之前暂时只能通过给dx附加参数指定main dex class file的方式规避了。

v1.9.12

21 Feb 06:52
Compare
Choose a tag to compare

Bugfix:

Fix了Tinker Build SDK的一些问题:

  • ZipEntry目录穿透漏洞
  • buildTinkerSdk task无法生成完整的jar包

删除了Tinker Build SDK中的一些无用代码

Tinker Android Runtime部分没有变更。

没有对外提供补丁生成服务,只在本地编译环境里使用Tinker的用户请继续等待1.9.13版本。

v1.9.11

11 Jan 09:34
Compare
Choose a tag to compare

2019年2月23日 更新:

JobIntentService在部分机型上并不可靠,导致补丁合成大量失败,最近打算回退这部分变更。使用独立SDK Jar对外提供补丁生成服务的用户请更新代码到1.9.12再运行buildTinkerSdk生成新版本jar修复一个安全漏洞,其他用户请暂时回退到1.9.9,等待1.9.13版本发布。


Bugfix

  • 引入JobSchedulerService重新实现了TinkerPatchService和TinkerPatchResultService。
  • 修复加固模式下崩溃的问题。
  • Demo和插件的Android Gradle Plugin版本统一改成了3.2.1,gradle version统一改为了4.6。建议App将gradle wrapper配置中的版本也改成4.6或4.7,Android Gradle Plugin版本改为3.2.1。
  • TinkerApplication中对ApplicationLike的反射调用增加了Method缓存,避免性能问题。

!!注意!!

  • 覆盖率偏低时请检查App中实现TinkerPatchResultService的类在manifest中是否有声明android.permission.BIND_JOB_SERVICE权限。

v1.9.9

26 Sep 07:17
Compare
Choose a tag to compare

Bugfix

  • 彻底隔离了Application和ApplicationLike,避免内联导致的各种问题。
  • 修复了华为反馈的apache legacy引起inline ClassLoader check失败的问题。
  • 修复了资源中的tools:前缀导致patch生成失败的问题。
  • 修改了JobScheduler的task id,避免与app业务中使用的task id冲突导致在SDK >= 26的机器上补丁生成失败的问题。
  • 加固模式下拆分了包含变更类的Dex,避免变更过多导致65536错误。

Enhancement

  • 新增aapt2支持。(由@lizhangqu贡献实现,非常感谢!!)

!!注意!!

  • 由于ApplicationLike已彻底与Application隔离,为了避免AndroidNClassLoader继续将相关的类当成loader类而回滚到系统ClassLoader去加载,ApplicationLike、DefaultApplicationLike、ApplicationLifeCycle的包名也做了修改。升级到此版本后请将代码中对这三个类的全名引用中的包名从“com.tencent.tinker.loader.app.XXX”改成“com.tencent.tinker.entry.XXX"

v1.9.8

25 Jun 03:12
Compare
Choose a tag to compare

主要修复了以下问题:

  • OPPO、VIVO机型上patch加载失败。
  • MIUI上JobScheduler被禁用导致补丁无法合成。
  • 某些ROM上mStringBlock字段不存在导致加载资源补丁时crash。

另外,为了避免进程间状态不一致导致的各种ClassCastException、ResourceNotFound之类的问题,此版本在主进程加载补丁后会马上kill掉其他进程。

v1.9.6 (Bugfix for 1.9.5)

09 Apr 04:52
Compare
Choose a tag to compare

#802 #804
修复1.9.5在MIUI机器上无法启动JobScheduler导致无法合成补丁的问题。