Android自定义库Dex合并失败求助:包名重复引发冲突
解决 Android 库 BuildConfig 重复导致的 Dex 合并冲突
你猜的完全没错!这个Unable to merge dex报错,根源就是两个自定义库的包名完全相同——每个Android库在编译时都会自动生成BuildConfig类,路径是[包名]/BuildConfig,当两个库包名一致时,就会出现Multiple dex files define Lme/aflak/libraries/BuildConfig;的冲突。
下面是几个靠谱的解决方法:
修改其中一个库的包名(最彻底的方案)
这是解决这类冲突的标准做法,步骤很清晰:- 打开冲突库的
AndroidManifest.xml,修改根节点的package属性为新的唯一包名; - 右键库模块 →
Refactor→Rename→ 选择Rename Package,按照向导完成包名重命名,IDE会自动帮你更新所有Java/Kotlin文件的包声明、import语句; - 重新编译库和主项目,冲突就会消失。
- 打开冲突库的
禁用其中一个库的 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
相关产品推荐
相关产品推荐

