错误:com.android.builder.dexing.DexArchiveBuilderException:处理guava-21.0.jar失败 Android 3.1 Dev Channel

71

在更新依赖版本后,我在AndroidStudio3.1中开始收到以下错误:

Translated version:

在更新依赖版本后,在AndroidStudio3.1中我开始收到以下错误:

    Information:Gradle tasks [:app:assembleDebug]
Error:com.android.builder.dexing.DexArchiveBuilderException: Failed to process C:\Users\Blabla\.gradle\caches\modules-2\files-2.1\com.google.guava\guava\21.0\3a3d111be1be1b745edfa7d91678a12d7ed38709\guava-21.0.jar
Error:com.android.builder.dexing.DexArchiveBuilderException: Error while dexing.
Error:com.android.tools.r8.ApiLevelException: Default interface methods are only supported starting with Android N (--min-api 24): java.util.Collection com.google.common.collect.BiMap.values()
Error:Execution failed for task ':app:transformClassesWithDexBuilderForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.dexing.DexArchiveBuilderException: com.android.builder.dexing.DexArchiveBuilderException: Failed to process C:\Users\Blabla\.gradle\caches\modules-2\files-2.1\com.google.guava\guava\21.0\3a3d111be1be1b745edfa7d91678a12d7ed38709\guava-21.0.jar
Information:BUILD FAILED in 6s
Information:4 errors
Information:0 warnings
Information:See complete output in console

我已经清理并重新构建了项目。检查了我的"multiDexEnabled true"并添加了 'compile 'com.android.support:multidex:1.0.2'

还能做什么?

编辑:添加build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    buildToolsVersion '26.0.2'
    defaultConfig {
        applicationId "com.blabla"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    configurations.all {
        resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
    }

}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:27.0.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.android.support:multidex:1.0.2'
    compile 'com.android.support:design:27.0.0'
    compile 'com.android.support:cardview-v7:27.0.0'
    compile 'com.jakewharton:butterknife:8.7.0'
    compile 'com.google.code.gson:gson:2.8.0'
    compile 'com.google.guava:guava:21.0'
    compile 'com.microsoft.azure:azure-mobile-android:3.2.0@aar'
    compile 'com.microsoft.azure:notification-hubs-android-sdk:0.4@aar'
    compile 'com.microsoft.azure:azure-notifications-handler:1.0.1@aar'
    compile 'com.squareup.okhttp:okhttp:2.5.0'
    compile 'com.google.firebase:firebase-core:11.4.2'
    compile 'com.google.firebase:firebase-crash:11.4.2'
    compile 'com.google.firebase:firebase-auth:11.4.2'
    compile 'com.google.firebase:firebase-database:11.4.2'
    compile 'com.google.firebase:firebase-storage:11.4.2'
    testCompile 'junit:junit:4.12'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.7.0'
    compile 'com.google.android.gms:play-services-maps:11.4.2'
    compile 'com.google.android.gms:play-services-location:11.4.2'
    compile 'com.google.maps.android:android-maps-utils:0.5+'
}
apply plugin: 'com.google.gms.google-services'

刚发完这篇帖子后,我尝试回到了“com.google.guava:guava:20.0”,这样就可以工作了。只有当我更新到21.0时才会出现错误。 - Atak
发布你的 gradle - Vishal Yadav
展示你的 build.gradle 文件。 - IntelliJ Amiya
添加了 build.gradle 文件。 - Atak
1
Guava 21.0 需要 Java 8。Guava 21.0 可能不兼容。 - IntelliJ Amiya
6个回答

99

我在react-native项目中遇到了同样的问题,

以下几行代码对我有帮助,

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
} 

8
这应该是正确的答案。错误与一个依赖项有关,它需要比你尝试使用的Java版本更高的版本。因此,请使用最新版本编译您的项目,而不是相反,并将混乱的配置添加到您的项目中。 - rmpt
我无法使用这个,因为我没有直接访问它的权限,所以我不能将其附加到“编译”任务中。相反,这个链接对我有用。 - olfek
1
这应该添加在哪个文件中? - Jeffrey van Rossum
4
搞定了,谢谢。你需要在build.gradle(模块:app)中进行更改,然后在android属性内进行修改。 - Jeffrey van Rossum
构建时这只会导致空指针异常。 - K..
这应该是被接受的答案,因为它解决了实际问题。更改不需要Java 8的库版本只是消除问题。 - alireza easazade

42

更新你的Guava版本

Guava 21只支持Java 8。

将你的gradle更新到与Android兼容的Guava版本27.0.1-android

Gradle 4.6+:

dependencies {
  implementation 'com.google.guava:guava:27.0.1-android'
}

之前的 Gradle 版本:

dependencies {
  compile 'com.google.guava:guava:27.0.1-android'
}

2
就这样。但是在添加了你的依赖之后,我还不得不添加以下内容来解决另一个错误: android { configurations.all { resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9' } } - Atak
@Atak,你把这个加在哪里了? - Crime_Master_GoGo
@Crime_Master_GoGo "android { } "是app build.gradle的一部分。将其添加到答案中供您参考。 - Atak
非常感谢。我在这个问题上浪费了很多时间。这个方法对我很有效 :) - Pooja Rajendran C

8

我曾经遇到过同样的问题,通过清理项目并重新构建来解决。

在Android Studio中,依次选择Build --> Clean Project,然后选择Build --> Rebuild Project

希望这能够帮助到你。


1
在我升级 Kotlin 后,同样的解决方案对我也起作用了。 - timv

4

我在升级到OkHttp 4.x时遇到了类似的情况。事实证明,我必须在运行配置中禁用方法剖析: 编辑配置 -> app -> 剖析选项卡 -> 取消选中 启用高级剖析。这解决了我的问题,但现在我无法在旧设备上使用剖析功能。


0
在我的情况下,我之所以会出现错误,是因为我在构建变体设置为发布时点击了调试“应用程序”按钮。当我将构建变体更改为调试后,再次点击调试按钮,错误就消失了。希望这能帮助到某些人。

0
我遇到了同样的问题,我的问题是依赖冲突。 我通过Gradle依赖树搜索冲突。
gradlew app:dependencies

然后我排除了冲突库的模块(例如org.json:json):

api ('<conflicting-library>',{
     exclude group:'org.json', module:'json'
})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接