无法合并dex:库具有相同的包名称

时间:2018-02-28 21:59:25

标签: android gradle

当我使用我创建的两个Android库时,我偶然发现了这个问题:

implementation 'me.aflak.libraries:freesmsapi:1.0'
implementation 'me.aflak.libraries:fingerprint:2.5.2'

我收到以下错误:

  

错误:任务执行失败   ':应用程序:transformDexArchiveWithExternalLibsDexMergerForDebug'。   java.lang.RuntimeException:com.android.builder.dexing.DexArchiveMergerException:无法合并dex

如果我使用stacktrace选项运行构建,我会收到以下附加信息:

  

多个dex文件定义Lme / aflak / libraries / BuildConfig;

所以我觉得这种情况正在发生,因为这两个库的包名相同。但是,谷歌的某些图书馆(例如Firebase)是否拥有相同的套餐名称,一切顺利?

您知道我如何修复我的库,以便我可以在同一个项目中包含其中的几个库吗?或者我如何使用gradle修复此特定错误?

谢谢!

P.S。我已经尝试过multiDexEnabled true,但我的情况并不正常。

1 个答案:

答案 0 :(得分:1)

  

所以我觉得这种情况正在发生,因为这两个库具有相同的包名。

你是对的。字面原因是同一Java包中的两个BuildConfig类。这来自拥有相同的包名。

  

但是,谷歌的一些图书馆(例如Firebase)是如何拥有相同的软件包名称的呢?一切顺利吗?

它们可能没有相同的包名称(在清单的根package元素中定义为<manifest>)。即使他们这样做,也不会发送BuildConfig

  

你知道我如何修复我的库,所以我可以在同一个项目中包含几个库吗?

最简单的解决方案是更改其中一个库的包名称。