当我使用我创建的两个Android库时,我偶然发现了这个问题:
implementation 'me.aflak.libraries:freesmsapi:1.0'
implementation 'me.aflak.libraries:fingerprint:2.5.2'
我收到以下错误:
错误:任务':app:transformDexArchiveWithExternalLibsDexMergerForDebug'的执行失败。 java.lang.RuntimeException:com.android.builder.dexing.DexArchiveMergerException:无法合并dex
如果我使用stacktrace选项运行构建,我会得到以下附加信息:
多个dex文件定义Lme / aflak / libraries / BuildConfig;
所以我觉得这种情况正在发生,因为这两个库具有相同的包名。但是,谷歌的一些图书馆(例如Firebase)是如何拥有相同的包名,一切顺利的呢?
你知道我如何修复我的库,所以我可以在同一个项目中包含几个库吗?或者如何使用gradle修复此特定错误?
谢谢 !
附:我已经尝试过multiDexEnabled true
,它在我的情况下不起作用。
所以我觉得这种情况正在发生,因为这两个库具有相同的包名。
你是对的。字面原因是同一Java包中的两个BuildConfig
类。这来自拥有相同的包名称。
但是,谷歌的一些图书馆(例如Firebase)是如何拥有相同的软件包名称,一切顺利的呢?
它们可能没有相同的包名(在清单的根package
元素中定义为<manifest>
)。即使他们这样做,他们也不会发货BuildConfig
。
你知道我如何修复我的库,所以我可以在同一个项目中包含几个库吗?
最简单的解决方案是更改其中一个库的包名称。