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

升级com.android.tools.build:gradle:3.5.0遇classes.jar冲突构建错误

解决AGP 3.5.0升级后mergeDebugJavaResource多classes.jar冲突问题

遇到这个问题我太熟了!之前升级Android Gradle插件到3.5.0时,我也踩过一模一样的坑——只要库模块依赖本地.aar文件,就会触发mergeDebugJavaResource任务失败,提示多个文件共享classes.jar路径,但3.4.2版本完全正常。这其实是AGP 3.5.0对资源合并的校验逻辑变严格了,本地aar和fileTree的组合依赖会导致重复扫描到classes.jar(有些aar本身打包时就包含了同名的jar文件)。

下面给你几个亲测有效的解决方案:

方案1:拆分本地依赖(最稳妥)

把原来的fileTree拆成单独的aar和jar依赖,避免重复匹配:

dependencies {
    // 单独引入本地aar文件
    api fileTree(include: ['*.aar'], dir: 'libs')
    // 单独引入本地jar文件
    api fileTree(include: ['*.jar'], dir: 'libs')
    
    // 其他依赖保持不变
    implementation 'androidx.appcompat:appcompat:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

这样Gradle会分别处理aar和jar,不会把aar内部的classes.jar和外部jar重复合并。

方案2:直接排除重复的classes.jar

如果拆分后还是有冲突,可以直接在依赖配置里排除重复的classes.jar,不过要确认这个jar确实是重复冗余的,别误删了必要的类:

dependencies {
    api fileTree(include: ['*.aar', '*.jar'], dir: 'libs') {
        exclude 'classes.jar'
    }
    
    // 其他依赖不变...
}

方案3:升级到更高版本的AGP(可选)

AGP后续的3.6.x及以上版本修复了不少这类资源合并的问题,如果你能升级的话,可以试试把插件版本升到3.6.4这类稳定版:

buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.4'
    }
}

记得同步Gradle后,把Gradle wrapper版本也对应更新到5.6.4(比如修改gradle/wrapper/gradle-wrapper.properties里的distributionUrl为https\://services.gradle.org/distributions/gradle-5.6.4-all.zip)。

最后记得先执行「Clean Project」,再重新Build,一般就能解决问题了!

内容的提问来源于stack exchange,提问作者庄 鹏

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:18:23