Сбой Gradle: ошибка преобразования classeswithdexfordebug с jdk 1.8

#android #android-studio #firebase #build.gradle #firebase-storage

#Android #android-studio #firebase #build.gradle #firebase-хранилище

Вопрос:

Весь день у меня проблема с разрешением обновления некоторых зависимостей в моем новом проекте.

Это моя сборка.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'
  

и ошибка:

введите описание изображения здесь

Ошибка:

 "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.

Может ли кто-нибудь помочь мне решить эту проблему?

С уважением

Комментарии:

1. Вам нужен набор инструментов jack, если вы хотите функции java8. Также вам нужно скомпилировать ‘com.google.android.gms: play-services: 9.6.1’ вместо использования конкретных, которые вам нужны developers.google.com/android/guides/setup . Проверьте выборочную компиляцию API в ваш исполняемый файл

2. В следующий раз скопируйте и вставьте ошибку вместо того, чтобы делать снимок экрана. Он едва читаем, если не открыть изображение на новой вкладке.

3. @th3pat3l Спасибо за информацию. Я задал свой вопрос о вашем предложении. Спасибо.

Ответ №1:

В принципе, вы также хотели бы проверить и разрешить конфликты версий в зависимостях вашего приложения. Также проверьте, включен ли multidex в вашем приложении.

У меня была аналогичная проблема. В моем приложении я использую библиотеку повторных попыток guava, которая загружала библиотеку Google guava версии 21. Для версии 21 Guava требуется JDK 1.8 без поддержки обратного переноса, и это вызвало эту ошибку в моем случае.

Я смог решить эту проблему, включив библиотеку повторных попыток guava, чтобы она использовала версию 19.0 библиотеки guava:

 compile ("com.github.rholder:guava-retrying:2.0.0") {
    exclude group: 'com.google.guava', module: 'guava'
}
compile 'com.google.guava:guava:19.0'
  

Комментарии:

1. у меня не работает. я получаю ошибку: не удалось выполнить задачу ‘: app: transformClassesWithMultidexlistForFlavorQuaDebug’. > исключение java.io.io: не удается записать [/Users/m…uild/intermediates/multi-dex/flavorQua/debug/componentClasses.jar ] (Не удается прочитать [/Users/miguelsilva/.gradle/caches/modules-2/files-2.1/com.google.guava/guava-jdk5/17.0/463f8378feba44df7ba7cd9272d01837dad62b36/guava-jdk5-17.0.jar(;;;;;;**.class) ] (Дублирующая запись zip [guava-jdk5-17.0.jar:com/google/common/annotations/Beta.class ]))

2. Некоторые библиотеки добавляют те же зависимости (я думаю, что в вашем случае Guava). Вам нужно найти конфликтующие библиотеки, запустив задачу gradle зависимостей и исключив повторяющиеся зависимости. Проверьте наличие библиотек, подобных Dagger 2, и исключите из них Guava.

Ответ №2:

Я считаю, что вам нужно включить Multidex для вашего приложения.

добавьте библиотеку Multidex в свой dependencies , затем включите Multidex в defaultConfig .

Пример:

 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