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

问题描述 投票:0回答:1

当我使用我创建的两个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,它在我的情况下不起作用。

android gradle
1个回答
1
投票

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

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.