Tencent / tinker

Tinker is a hot-fix solution library for Android, it supports dex, library and resources update without reinstall apk.
Other
17.1k stars 3.33k forks source link

[tinker] Update the way to inject stable-ids #1603

Closed littleCrash closed 2 years ago

littleCrash commented 2 years ago

Tinker原来的插件因为在升级AGP4.1是无法Hook修改processXXXResource任务的aaptOptions,从而更换了注入--stable-ids的方案

修改后的方案存在一些兼容性的问题,如:

  1. ./gradlew clean assembleRelease这样的组合命令会出现编译失败
  2. 提前触发processXXXResource的初始化,参数注入会失败,导致无法应用资源ID的Keep规则

目前使用的方案回退到了Tinker在AGP4.1之前的实现逻辑,在processXXXResource开始执行时才决定是否要进行资源ID的Keep注入; 同时找到了一个有效的Hook路径来保证AGP4.1以上的兼容性。

tys282000 commented 2 years ago

thx~