bug1: loader classes are found in old secondary dex
实际开发过程中,大部分应用都会遇到64k限制的问题,解决方案也很简单,就是使用MultiDex,MultiDex会分成几个小的dex,于是这个问题就出现了。
看到网上的解决方案总结为两种:
- minSdkVersion 设置小于21,然后加入google的mulityDex方案。
- 在tinkerSupport中开启这两个命令
allowLoaderInAnyDex = true removeLoaderForAllDex = true
bug2: No such property: variant for class: com.tencent.tinker.build.gradle.TinkerPatchPlugin
这个问题其实是因为当前的Tinker版本,不支持Gradle过高的插件版本。
经测试版本gradle:3.6.0 以上出现的问题,目前考虑可以降级到3.5或者3.4。(我的tinker版本:tinker-android-lib:1.9.14.7)
bug3: unexpected element <queries> found in <manifest>
Android 11作为清单元素引入,而旧版本的Android Gradle插件不知道该元素。Google发布了一系列的Android Gradle插件补丁版本来解决此问题:
老版本 | 对应版本 |
---|---|
3.3.x | 3.3.3 |
3.4.x | 3.4.3 |
3.5.x | 3.5.4 |
5.6.x | 3.6.4 |
4.0.x | 4.0.1 |
4.1.x | 不需要升级 |
bug4: Invalid Gradle JDK configuration found. Open Gradle Settings
这个问题,原来在github上下代码经常碰到,清一下studio的缓存,重新打开就好了。但是这次没有 = =。
于是我发现问题没有那么简单。又是一通操作,最后发现需要升级java11。我的studio版本是4.2.1,但是我问我的同事,同样的studio版本,他们就没有遇到这个问题,所以只是提供一个思路,我的这个问题,确实是升级了jdk到11好的。emmmm
最后在记录一下tinker需要注意的一些问题
- 修复的补丁是覆盖的
比如A+补丁B,会换成A+补丁C,而不是A+B+C
- 每次发版都要保留基准包、混淆配置文件、资源Id文件
- bugly补丁下发是按照tinkerid下发。 多个基准包使用了同一个tinkerid那说明这几个基准包都能收到你当前上传的补丁。
- Tinker不支持修改AndroidManifest.xml,Tinker不支持新增四大组件(1.9.0支持新增非export的Activity);
- 由于Google Play的开发者条款限制,不建议在GP渠道动态更新代码;
- 在Android N上,补丁对应用启动时间有轻微的影响;
- 不支持部分三星android-21机型,加载补丁时会主动抛出`"TinkerRuntimeException:checkDexInstall failed"`;
- 对于资源替换,不支持修改remoteView。例如transition动画,notification icon以及桌面图标。
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END