如何解决由番石榴引起的错误:程序类型已存在:com.google.common.util.concurrent.internal.InternalFutures

Hon*_*ong 4 guava android-guava

AAR库已使用com.google.guava.

如果应用在其build.gradle中包含以下内容:

api 'com.google.guava:guava:27.0-android'
Run Code Online (Sandbox Code Playgroud)

构建应用程序会生成以下错误:

Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: ...
  Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
  Program type already present: com.google.common.util.concurrent.internal.InternalFutures
Run Code Online (Sandbox Code Playgroud)

如果我不包含"api'com.google.guava:guava:27.0-android'",则可以构建应用程序,但是当它到达使用Guava方法时,它会出现java.lang.NoClassDefFoundError的运行时错误: Iterables.find

Mos*_*ses 8

我不得不更新到版本27.0.1,在撰写本文时,他们仍未使用此新版本更新README.

implementation 'com.google.guava:guava:27.0.1-android'
Run Code Online (Sandbox Code Playgroud)


Xae*_*ess 5

由于Guava 27.0,ListenableFuture位于单独的神器中,请参阅公告.你可以尝试两件事(一次一件):

  1. 排除"listenablefuture"模块(组"com.google.guava")并再次构建项目.
  2. 我不知道AAR的具体细节,但它可能27.0-android不适用于AAR,所以你应该尝试26.0-android.