添加第三方 .aar 文件后无法合并 dex

Unable to merge dex after adding a third party .aar file

我 运行 陷入许多帖子似乎抱怨的 unable to merge dex 问题。经过一些研究,我想我找到了问题的根源,但我不知道如何着手解决它。

我目前正在组合各种第三方组件来创建一个 Android 应用程序。它由以下部分组成:

我按照以下步骤集成了它们:

查看 Gradle 堆栈跟踪,我发现它抱怨多个 dex 文件定义 Lcom.google.common.io.ByteSink,这似乎是 Google 的 Guava 库。

使用 Android Studio 中的项目视图,B.aar 似乎实际上 包含 Guava 18.0 版(在 'classes.jar'部分)。我认为这与 base 在其 build.gradle 中 guava 20.0 的 implementation 依赖行冲突。

因此,我想我找到了冲突的根源(2 个不同版本的番石榴碰撞),但我不确定如何进行。第三方将 guava 打包到 .aar 中是错误的吗?如果是这样,除了要求第三方删除它之外,我还有什么办法解决这个问题吗?

我们尝试过但没有奏效的事情:

我更喜欢 C++/C,所以我可能需要掌握一些 Java 特定的概念。提前感谢您的帮助。

我们找到的唯一解决方案是对第三方 AAR 执行以下操作:

  • 使用 .zip 文件编辑器(例如:7-zip)打开 AAR 文件
  • 在 AAR
  • 中打开 classes.jar
  • 导航到 com 目录
  • 删除 google 子目录

然后我们在 gradle 文件中添加了 guava 作为依赖项 它有效,这是正确的做法,我们正在等待第三方提供商的同意。