当我使用我创建的两个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
,但我的情况并不正常。
答案 0 :(得分:1)
所以我觉得这种情况正在发生,因为这两个库具有相同的包名。
你是对的。字面原因是同一Java包中的两个BuildConfig
类。这来自拥有相同的包名。
但是,谷歌的一些图书馆(例如Firebase)是如何拥有相同的软件包名称的呢?一切顺利吗?
它们可能没有相同的包名称(在清单的根package
元素中定义为<manifest>
)。即使他们这样做,也不会发送BuildConfig
。
你知道我如何修复我的库,所以我可以在同一个项目中包含几个库吗?
最简单的解决方案是更改其中一个库的包名称。