Tinker Versions Save

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

v1.9.13.1

4 years ago

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

5 years ago

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

5 years ago

Bugfix:

Fix了Tinker Build SDK的一些问题:

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

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

Tinker Android Runtime部分没有变更。

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

v1.9.11

5 years ago

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

5 years ago

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

5 years ago

主要修复了以下问题:

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

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

v1.9.6

6 years ago

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

v1.9.5

6 years ago

Bugfix: issue #801, #784, #781, #763, #757, #735

主要解决了Android O、P后台服务权限导致的问题和部分机器上apply patch时失败的问题。 使用bugly接入的同学,请等待bugly同步后更新bugly版本。

v1.9.2

6 years ago
  1. 修复与keepDexApply有关的编译失败问题;
  2. 适配keepDexApply使其支持Android Gradle Plugin 3.0;
  3. 修复了一些coverity扫出的bug;
  4. 修复manifest中tinker_id变化导致无法打出patch包的bug。

v1.9.1

6 years ago
  1. TinkerMultidexConfigTask: FileNotFoundException(manifest_keep.txt) #649
  2. 资源合成时需要保持原来的压缩方式 #646
  3. 修改判断是否为主进程的方式 #653