Gradle Failed:transformClassesWithDexForDebug with jdk 1.8

时间:2016-10-18 19:08:48

标签: android android-studio firebase build.gradle firebase-storage

我在新项目中解决了一些依赖项的更新问题,这一天我遇到了挑战。

这是我的 build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.3"

    defaultConfig {
        applicationId "com...."
        minSdkVersion 19
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.google.firebase:firebase-database:9.6.1'
    compile 'com.google.firebase:firebase-storage:9.6.1'
    compile 'com.firebaseui:firebase-ui:0.4.3'
    compile 'com.firebase:firebase-client-android:2.3.1'
    compile 'com.google.android.gms:play-services:9.6.1'
}
apply plugin: 'com.google.gms.google-services'

错误是:

enter image description here

错误:

"Execution failed for task: ':app:transformClassesWithDexForDebug'
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/home/bin/java" finished with non zero-exit value 2

当我尝试将图片上传到Firebase存储时,问题就出现了。互联网连接等有错误。我决定更新库。在此之后,jdk 1.8出现错误。

有人可以帮助我解决这个挑战吗?

此致

2 个答案:

答案 0 :(得分:2)

基本上,您还需要检查并解决应用依赖项中的版本冲突。 另请检查您是否在应用中启用了multidex。

我有类似的问题。在我的应用程序中,我正在使用guava-retrying库,它正在获取google guava库版本21. Guava版本21需要JDK 1.8而不提供后端移植支持,这在我的情况下导致了此错误。

我能够通过包含guava-retrying库来解决它,以便它使用版本19.0的guava库:

Bind

答案 1 :(得分:0)

我相信你需要为你的应用程序启用Multidex。

将Multidex库添加到dependencies,然后在defaultConfig中启用Multidex。

示例:

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.3"

    defaultConfig {
        applicationId "com...."
        minSdkVersion 19
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        // Enabling multidex support.
        multiDexEnabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.google.firebase:firebase-database:9.6.1'
    compile 'com.google.firebase:firebase-storage:9.6.1'
    compile 'com.firebaseui:firebase-ui:0.4.3'
    compile 'com.firebase:firebase-client-android:2.3.1'
    compile 'com.google.android.gms:play-services:9.6.1'
    compile 'com.android.support:multidex:1.0.0'
}

然后在“AndroidManifest.xml”中启用Multidex安装:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.multidex.myapplication">
    <application
        ...
        android:name="android.support.multidex.MultiDexApplication">
        ...
    </application>
</manifest>

来源:https://developer.android.com/studio/build/multidex.html#mdex-gradle