You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更新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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 00:45:12