Open yanjunhui2014 opened 10 months ago
确定了,系混淆开关导致。目前release混淆关闭,补丁就能正常加载。ext.tinkerApplyMappingPath 确认配置无误。请问这种情况和android.enableR8的修改有关吗?
解决了,我解决的办法是在proguard-rules.pro中加入 -dontoptimize (根目录gradle.properties中android.enableR8被注释之后,需要添加-dontoptimize,否则开启混淆后补丁即使加载成功,app也会奔溃)
目前tinker补丁已经可以正常使用了,总结一下吧。 如果希望tinker可以正常使用,且修复率保持在99%+的水准,需要保证android.enableR8=false
projectDir/gradle.properties
android.enableR8.libraries=false
android.enableR8=false
如果你的工程在开启混淆后编译时提示你
Please correct the above warnings first.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:minifyDebugWithProguard'.
......
Caused by: org.gradle.api.UncheckedIOException: java.io.IOException: Please correct the above warnings
......
Caused by: java.io.IOException: Please correct the above warnings first.
at proguard.InputReader.execute(InputReader.java:149)
at proguard.ProGuard.readInput(ProGuard.java:255)
at proguard.ProGuard.execute(ProGuard.java:96)
......
那么你只需要在你的混淆文件projectDir/proguard-rules.pro中加入
-dontoptimize
-ignorewarnings
然后就可以通过编译了,而且打出来的补丁修复率极高。
当然,如果你不得不注释
android.enableR8.libraries=false
android.enableR8=false
那么混淆文件中配置
-dontoptimize
也可以保证你补丁正常生成,只不过补丁的成功率智能维持在95%左右。
PS -dontoptimize 作用:忽略字节码优化
👍
异常类型:应用启动奔溃(debug包正常,release则出现奔溃),奔溃3次后补丁被清理
手机型号:红米k40s、华为nova11
手机系统版本:Android13、鸿蒙OS4.0.0
tinker版本:1.9.14.26
gradle版本:4.1.3
compileSdkVersion - 32 targetSdkVersion - 32
是否使用热更新SDK: 使用,接入方式借鉴于tinker-sample-android
系统:Mac
gradle.properties配置如图(我以前android.enableR8=false没有注释之前,补丁是正常的)
堆栈/日志:
而后,我把com.facebook.android移除,相同类型的异常还存在
提问题时若使用
不能用/没效果/有问题/报错
此类模糊表达,但又没给出任何代码截图报错的,将绝对不会有任何反馈。这种issue也是一律直接关闭的,大家可以参阅提问的智慧。Tinker是一个开源项目,希望大家遇到问题时要学会先思考,看看sample与Tinker的源码,更鼓励大家给我们提pr.