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

Android自定义库Dex合并失败求助:包名重复引发冲突

解决 Android 库 BuildConfig 重复导致的 Dex 合并冲突

你猜的完全没错!这个Unable to merge dex报错,根源就是两个自定义库的包名完全相同——每个Android库在编译时都会自动生成BuildConfig类,路径是[包名]/BuildConfig,当两个库包名一致时,就会出现Multiple dex files define Lme/aflak/libraries/BuildConfig;的冲突。

下面是几个靠谱的解决方法:

  • 修改其中一个库的包名(最彻底的方案)
    这是解决这类冲突的标准做法,步骤很清晰:

    1. 打开冲突库的AndroidManifest.xml,修改根节点的package属性为新的唯一包名;
    2. 右键库模块 → Refactor → Rename → 选择Rename Package,按照向导完成包名重命名,IDE会自动帮你更新所有Java/Kotlin文件的包声明、import语句;
    3. 重新编译库和主项目,冲突就会消失。
  • 禁用其中一个库的 BuildConfig 生成(适合不需要该类的场景)
    如果某个库不需要使用BuildConfig(比如没有动态配置的编译参数),可以直接在它的模块级build.gradle里关闭生成:

    android {
        defaultConfig {
            // AGP 4.0+ 支持直接禁用
            buildConfig = false
        }
    }
    

    低版本AGP可以用另一种方式:不定义任何buildConfigField,同时确保库没有依赖BuildConfig的逻辑,这样编译时就不会生成这个类。

  • 额外排查:确认是否有重复依赖
    虽然你的问题明确是BuildConfig冲突,但也可以用这个命令检查主项目的依赖树,排除其他潜在重复:

    ./gradlew app:dependencies
    

    查看输出里有没有重复引入的库,尤其是和me.aflak.libraries相关的依赖。

注意事项

  • 修改包名后,要仔细检查库中的资源引用、跨模块调用路径是否更新正确,避免出现找不到类或资源的报错;
  • 如果库是发布到本地Maven或远程仓库的,修改包名后记得重新发布,确保主项目引用的是最新版本。

内容的提问来源于stack exchange,提问作者Omar Aflak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:35:54