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

AGP 8.1.0发布MavenCentral遇sources.jar冲突错误求助

解决AGP 8.1.0发布MavenCentral时sources.jar冲突问题

问题根源

AGP 8.0+版本开始,会自动为release变体生成包含未混淆源码的sources.jar并添加到发布组件中,这和你自定义的androidSourcesJar任务生成的同classifier的jar包冲突,导致发布失败。

解决办法

办法1:禁用AGP自动生成的Sources Jar

在模块的build.gradle中配置发布变体,关闭自动生成sources jar的功能,这样就能继续使用你自定义的任务:

android {
    publishing {
        singleVariant("envProdRelease") {
            withSourcesJar = false // 关闭自动生成的sources jar
        }
    }
}

配置完成后,原发布配置里的artifact androidSourcesJar可以保留,不会再出现冲突。

办法2:复用AGP自动生成的Sources任务并修改逻辑

AGP会为envProdRelease变体自动生成名为envProdReleaseSourcesJar的任务,你可以直接修改这个任务的配置,替换成你需要的混淆后源码逻辑,无需再自定义任务:

// 找到自动生成的sources任务并修改其配置
tasks.named('envProdReleaseSourcesJar', Jar) {
    archiveClassifier.set('sources')
    // 在这里添加你原来androidSourcesJar任务中的所有逻辑
    // 比如指定源码目录、过滤文件等
}

之后发布配置中只需保留from components.envProdRelease,删除artifact androidSourcesJar即可,因为自动生成的任务已经输出你需要的源码包。

办法3:移除自定义任务,直接修改自动任务的输出

如果不想保留自定义任务,直接调整AGP自动生成的任务,让它输出符合要求的源码:

tasks.named("envProdReleaseSourcesJar") {
    // 覆盖默认的源码目录,替换为你需要的混淆后源码路径
    from android.sourceSets.main.java.srcDirs
    // 添加你需要的其他过滤、打包逻辑
}

同样,发布时直接依赖components.envProdRelease即可,无需额外添加artifact。

验证

配置完成后,执行publishToMavenLocal任务测试,确认冲突消失,且发布的sources.jar是你需要的版本。

内容的提问来源于stack exchange,提问作者Evgeniy Mishustin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:43:14