升级Android Gradle Plugin至7.4.2后卡在minifyReleaseWithR8
解决Android发布构建中的R8签名验证错误
错误分析
你遇到的R8签名错误来自Ktor 1.5.4版本的ktor-client-core-jvm库,是旧版本Ktor的泛型方法签名不符合R8验证规范导致的。后面的AAPT2守护进程关闭日志是构建完成后的正常收尾操作,不属于错误,无需处理。
你的构建输出错误信息:
.gradle\caches\modules-2\files-2.1\io.ktor\ktor-client-core-jvm\1.5.4\81e8f8bb9622b96661c739ca18146e4079191c20\ktor-client-core-jvm-1.5.4.jar: R8: 方法void io.ktor.client.HttpClientConfig$install$1.invoke(java.lang.Object)的签名'(TTBuilder;)V'无效。 验证错误:类型变量不在作用域内。 签名将被忽略,不会出现在输出中。
解决方案
优先方案:升级Ktor版本
Ktor官方在1.6.0版本修复了这个泛型签名问题,直接将项目中Ktor相关依赖升级到1.6.0或更高版本,就能彻底解决这个错误。临时方案:添加R8混淆规则
如果暂时无法升级Ktor,在项目的proguard-rules.pro文件中添加以下规则,让R8忽略该类的签名验证:-dontwarn io.ktor.client.HttpClientConfig$install$1若需要保留该类的所有成员,可改用:
-keep class io.ktor.client.HttpClientConfig$install$1 { *; }确认构建配置
确保Module级build.gradle中开启混淆的同时,正确引用了混淆规则文件:android { buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
内容的提问来源于stack exchange,提问作者km11
相关产品推荐
相关产品推荐

