【问题标题】:Android Studio 3.4 Multiple dex files defineAndroid Studio 3.4 多个dex文件定义
【发布时间】:2019-08-03 08:53:38
【问题描述】:

我正在使用两个不同的库,但它们都有相同的基础(webrtc)。因此,在许多类中存在重复性。因此,android studio 不允许我创建 apk。

我尝试了以下不起作用的解决方案。

dexOptions {
    preDexLibraries = false
}

另外,我在 build.gradle 文件中有 multiDexEnabled true

谁能提供解决方案?

编辑: 这是我得到的错误。

AGPBI: {"kind":"error","text":"\tat java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)","sources":[{}]}
:app:transformDexArchiveWithDexMergerForBonumHealthDebug FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:transformDexArchiveWithDexMergerForBonumHealthDebug'.
> com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Lorg/webrtc/NetworkMonitor;

【问题讨论】:

标签: java android android-studio build.gradle android-multidex


【解决方案1】:
【解决方案2】:

不是多 dex 问题(尽管它说多个 dex 文件定义 X)。

这是因为您的依赖项中有重复项。 根据错误,有一个类org.webrtc.NetworkMonitor 存在多个地方。

检查您的代码,看看为什么它被再次定义。有什么图书馆会导致这种情况吗?

你可以搜索你为这个类添加的所有库来找到问题的根源。

可能导致重复的一种情况是,两个库都包含一个或多个具有相同类的库,而 dex maker 无法决定使用哪一个。在这种情况下,您可以使用排除一个库的依赖。

假设我已经制作了一个自定义的 RxJava 库,并且还有一个使用 RxJava 的库。
同步 Gradle 时,这将导致重复。为了解决这个问题,我可以排除该库使用的 RxJava,因此它不会包含在 classPath 中,并且我可以使用我的,而不会出现重复问题。

implementation("android.arch.work:work-rxjava2:${versions.workManager}")
  { 
     exclude group: 'io.reactivex.rxjava2', module: 'rxjava'
  }

这些方法不包括来自工作管理器库的io.reactivex.rxjava2:rxjava,在依赖关系树中(因此您将自己添加一个)

所以您可以从其中一个库中排除该库,以便另一个库添加它,或者您可以从这两个库中排除并自己添加该库。

【讨论】:

  • 是的。我正在使用 2 个不同的库。两者都指向同一个类。我无法编辑这些库。
  • 我没有测试过这个:但看看这是否适合你:stackoverflow.com/a/38886815/6678991
  • 你不能使用另一个库来解决重复问题吗?还有一个问题:这些类是否与库捆绑在一起?或者他们将它们用作图书馆?我的意思是他们是否使用了导致重复的其他库?
  • 1:我不能使用其他库。 2:是的。两个库都使用同一个库,这就是类重复的原因。
  • 好吧,对不起。我不能帮你解决你的问题。
猜你喜欢
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-24
  • 1970-01-01
  • 1970-01-01
  • 2015-02-25
相关资源
最近更新 更多