将Gradle从4.2.0升级至7.0.2时R8混淆报空指针错误如何解决
Gradle升级R8混淆空指针问题解决方案
根因说明
该问题是AGP 7.0.2绑定的R8 3.0.69版本的已知兼容bug,在Java 1.8运行环境下处理部分第三方依赖字节码或自定义混淆规则时,会触发该空指针异常。
可落地解决方法
- 优先升级Android Gradle Plugin到7.0.4及以上的7.0.x稳定版,该版本已经官方修复了此R8内部空指针问题,无需修改其他业务配置即可正常编译
- 若暂时无法升级AGP版本,可以在项目根目录
build.gradle的构建脚本依赖中手动指定更高版本的R8:
buildscript { repositories { mavenCentral() } dependencies { // 原有AGP依赖保留,额外添加R8版本声明,优先级高于AGP绑定的内置版本 classpath 'com.android.tools:r8:3.1.56' } }
- 临时兜底方案:如果上述方案暂时都无法执行,可以在项目的
gradle.properties中添加配置android.enableR8=false,关闭R8混淆改用ProGuard执行混淆逻辑,该方案仅适合临时验证使用,不建议长期保留。
验证注意事项
修改完配置后,先执行./gradlew clean清除原有构建缓存,再触发正式编译任务,避免旧缓存导致问题复现。
内容的提问来源于stack exchange,提问作者murthy10
相关产品推荐
相关产品推荐

