更新AGP至8.5.0后Android R8报Type a.a重复定义错误求助
解决AGP 8.5.0升级后R8报重复类a.a的问题
问题详情
升级Android Gradle Plugin(AGP)到8.5.0后,构建触发R8错误:
ERROR: /Users/REDACT/.gradle/caches/transforms-4/8d2b49e30523efece47d2329e1531ac9/transformed/classes.jar: R8: Type a.a is defined multiple times: /Users/mgh01/.gradle/caches/transforms-4/8d2b49e30523efece47d2329e1531ac9/transformed/classes.jar:a/a.class, /Users/REDACT/.gradle/caches/transforms-4/196d8149ca78d42bf3bbca1f74e91807/transformed/classes.jar:a/a.class
经检查,重复的a.a是一个空接口public interface a {},切换R8至兼容模式、关闭混淆均无法解决问题。
解决方案
定位重复依赖来源
执行Gradle依赖分析命令,找出包含该空接口的依赖库:./gradlew app:dependencies --configuration releaseRuntimeClasspath若发现第三方库重复引入相同接口,通过
exclude语法排除其中一个:implementation('com.example:some-library:1.0.0') { exclude group: 'com.example.duplicate', module: 'duplicate-module' }调整R8重复类处理策略
在gradle.properties中添加参数,允许忽略重复的空接口:android.r8.ignoreDuplicateClasses=true或在
app/build.gradle的android块中配置:android { buildTypes { release { android.r8 { ignoreDuplicateClasses = true } } } }清理Gradle缓存并重构
缓存旧文件可能引发冲突,执行以下命令清理后重新构建:./gradlew clean build --refresh-dependencies临时降级AGP版本
若上述方法无效,可暂时降级到稳定版本(如8.4.2),在settings.gradle中修改:pluginManagement { plugins { id 'com.android.application' version '8.4.2' // 同步调整其他插件版本 } }自定义ProGuard规则排除重复类
在proguard-rules.pro中添加规则,保留其中一个类并忽略冲突:-keep class a.a { *; } -dontwarn a.a
内容的提问来源于stack exchange,提问作者user2739518
相关产品推荐
相关产品推荐

