Wykonanie Android Studio 3.0 nie powiodło się dla zadania: nie można scalić dex

85

studio android otrzymywało błąd kompilacji podczas wykonywania kompilacji, w tym:

Błąd: nie powiodło się wykonanie zadania „: app: transformDexArchiveWithExternalLibsDexMergerForDebug”. java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: nie można scalić dex ”

Moja aplikacja: plik build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion '26.0.2'
    defaultConfig {
        applicationId "com.pdroid.foodieschoice"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

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.constraint:constraint-layout:1.0.2'
    compile 'com.firebaseui:firebase-ui-auth:2.3.0'

    testCompile 'junit:junit:4.12'
}
configurations.all {
    resolutionStrategy {
        force 'com.android.support:appcompat-v7:26.0.1'
        force 'com.android.support:support-compat:26.0.1'
        force 'com.android.support:support-core-ui:26.0.1'
        force 'com.android.support:support-annotations:26.0.1'
        force 'com.android.support:recyclerview-v7:26.0.1'
    }
}

apply plugin: 'com.google.gms.google-services'

wszelkie rozwiązania

Edycja: Skończyłem z próbką za pośrednictwem strony github Firebase i rozwiązałem

Anguraj
źródło
musisz uwzględnić obsługę multiDex w swojej aplikacji
Sudheesh R
i spróbuj posprzątać, przebudować swój projekt
Sudheesh R
Sugeruję edycję pytania i opublikowanie całego wyniku konsoli Gradle, a nie tylko jednej linii. Szczegóły twojego problemu znajdują się w innym miejscu wyniku.
CommonsWare
@CommonsWare Wysłałem cały mój błąd ... to tylko dwie linie.
Anguraj
2
Spróbuj wyłączyć natychmiastowe uruchamianie, wyczyść swój projekt i dodaj Androida {defaultConfig {multiDexEnabled true}}
Tara

Odpowiedzi:

65

W przypadku projektu opartego na Cordova uruchom cordova clean androidponownie przed kompilacją, zgodnie z sugestią @mkimmet .

sulaiman sudirman
źródło
1
Niech ktoś dobrze oznaczy tę odpowiedź. Rozwiązuje problem.
pamekar
1
Dla mnie zainstalowaniu 'Cordova-plugin-androidx' i 'Cordova-plugin-androidx-adapter' sovled problem
SSZ
57

Ten błąd występuje, gdy dodajesz bibliotekę zewnętrzną, która może nie być zgodna z compileSdkVersion.

Zachowaj ostrożność podczas dodawania pliku external library.

Spędziłem 2 dni nad tym problemem i ostatecznie został on rozwiązany, wykonując następujące kroki.

  • Upewnij się, że wszystkie biblioteki wsparcia są takie same jak compileSdkVersionna swoje build.gradle(Module:app)w moim przypadku jest to 26.wprowadź opis obrazu tutaj

  • W kategorii defaultConfig wpisz multiDexEnabled true . To jest ważna część.multiDexEnabled True image

  • Idź do Plik | Ustawienia | Kompilacja, wykonanie, wdrożenie | Natychmiastowe uruchamianie i spróbuj włączyć / wyłączyć natychmiastowe uruchamianie w celu wymiany na gorąco ... i kliknij OK Włącz natychmiastowe uruchamianie na gorącą wymianę ... Obraz

  • Sync Twój projekt.

  • Na koniec przejdź do kompilacji | kliknij Rebuild Project .

  • Uwaga: Odbuduj projekt najpierw czyści, a następnie buduje projekt.

Niamatullah Bakhshi
źródło
to jest pomocne, dziękuję.
Sumit Saxena
cieszę się, że to słyszę. Miłego androidowania.
Niamatullah Bakhshi
1
@YajliMaclo świetnie!
Niamatullah Bakhshi,
47

Spróbuj dodać to w gradle

    android {
      defaultConfig {
        multiDexEnabled true
        }
   }
Ishan Fernando
źródło
Czy próbowałeś unieważnić pamięć podręczną w Android Studio? @Anguraj
Ishan Fernando
To nie jedyny krok do włączenia multidex. Nie jest również potrzebny w nowszych poziomach API
OneCricketeer
25

Rozkład:

Skorzystaj z tego linku : Ponieważ istnieją różne opcje wyłączenia ostrzeżenia w zależności od minSdkVersion, jest ono ustawione poniżej 20 :

 android {
     defaultConfig {
         ...
         minSdkVersion 15 
         targetSdkVersion 26
         multiDexEnabled true
     }
     ... }

 dependencies {   compile 'com.android.support:multidex:1.0.3' }

Jeśli masz wartość minSdkVersion większą niż 20 w zestawie build.gradle, użyj następujących poleceń, aby wyłączyć ostrzeżenie:

  android {
      defaultConfig {
          ...
          minSdkVersion 21 
          targetSdkVersion 26
          multiDexEnabled true
      }
      ... }

Zaktualizuj zależności w następujący sposób:

     dependencies {
        implementation 'com.android.support:multidex:1.0.3'
     }

Ponownie jedyną różnicą są słowa kluczowe w zależnościach:

minSdkVersion poniżej 20: użyj kompilacji

minSdkVersion powyżej 20: użyj implementacji

  1. Mam nadzieję, że to było pomocne. Zagłosuj za, jeśli rozwiązało Twój problem. Dziękujemy za poświęcony czas.
  2. Również uzyskać więcej informacji, na temat , dlaczego to nastąpi , należy zapoznać się z pierwszego akapitu w link, będzie to dokładnie wyjaśnić, dlaczego? i co oznacza to ostrzeżenie.
Modesto Cabrera
źródło
24

Po prostu spróbuj wykonać „Kompiluj -> Wyczyść projekt”. To rozwiązało problem.

Anas
źródło
5
Dzięki temu zadziałało to dla mnie w projekcie Ionic / Cordova, uruchamiając cordova clean android, podczas gdy miałem również zainstalowaną wtyczkę cordova-android-support-gradle-release.
mkimmet
Uwielbiam, gdy coś prostego naprawia rzeczy !! Dzięki!
tonejac
To rozwiązało problem podczas pracy z React Native.
Michael Auderer
Dzięki, to najłatwiejsze rozwiązanie tego problemu, poświęciłem 3 dni na rozwiązanie tego problemu, a Twoja odpowiedź rozwiązuje wszystkie moje problemy. Jeszcze raz dziękuję bracie !!!
gautamsinh mori
Dzięki. Pomógł mi w Android Studio 4.1. Uratowałem mój dzień.
Atif
7

Dla mnie dodanie

multiDexEnabled true

i

packagingOptions {
        exclude 'META-INF/NOTICE' 
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/notice'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license'
        exclude 'META-INF/license.txt'
    }

do pliku Build.gradle na poziomie aplikacji rozwiązało problem

Md Nakibul Hassan
źródło
5

Przejdź do build.gradlepliku na poziomie modułu i dodaj następujące wiersze do kodu

    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 28
        multiDexEnabled true
    }
    ...
}

dependencies {
  implementation 'com.android.support:multidex:1.0.3'
}

To łatwo rozwiązało problem. Sprawdź tę dokumentację

Mahi
źródło
4

Użyj multiDexEnabled true, jak poniżej.

{
 minSdkVersion 17
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}

i

implementation 'com.android.support:multidex:1.0.3'

to rozwiązanie zadziałało dla mnie.

Suresh kumar
źródło
4

Wypróbowałem wiele rozwiązań, jak wspomniano powyżej, w tym multiDexEnabled, ale żadne z nich nie zadziałało.

Oto rozwiązanie, które u mnie zadziałało - skopiuj ten kod do pliku app \ build.gradle

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support' && requested.name != 'multidex') {
            details.useVersion "${rootProject.ext.supportLibVersion}"
        }
    }
}

Upewnij się, że program gradlew został wyczyszczony przed uruchomieniem kodu

Raj
źródło
Zmieniłem minSdkVersion, wystarczy
Mr Special
2

Przydarzyło mi się to samo, zorientowałem się, że jestem w trakcie aktualizacji do AS 3.0.1 i po wykonaniu aktualizacji, wyczyszczeniu i przebudowie aplikacji wszystko zostało naprawione.

Tian Pretorius
źródło
2

Dla mnie tym, co naprawiło ten błąd, była zmiana jednej linii w zależnościach gradle mojej aplikacji.

od tego :

compile('com.google.android.gms:play-services-gcm:+') {
    force = true
}

Do tego :

compile('com.google.android.gms:play-services-gcm:11.8.0') {
    force = true
}
HedeH
źródło
Tylko to działało dla mnie. Nie musiałem dodawać siły = true
Paulo Linhares - Packapps
1

Upewnij się również, że Twoja aplikacja podklasuje MultiDexApplication

import android.support.multidex.MultiDexApplication

class App : MultiDexApplication()

lub jeśli nie podklasy klasy Application, dodaj do AndroidManifest.xml

<application
  android:name="android.support.multidex.MultiDexApplication"
1192805
źródło
0

Czy jesteś pomiędzy aktualizacjami SDK lub platformą? Jeśli tak, uzupełnij je całkowicie, a następnie spróbuj kontynuować. Zwykle aktualizuję poszczególne pakiety, które należy zaktualizować, aby zabrać całą aktualizację, która czasami może sięgać do 2,5 GB. Wykonanie tej pełnej aktualizacji czasami kończy się niepowodzeniem. Miałem wiele aktualizacji SDK po uaktualnieniu do Android Studio 3.0 i otrzymywałem powyższy błąd, ponieważ wszystkie pakiety nie zostały zaktualizowane. Po zaktualizowaniu wszystkich pakietów powyższy błąd zniknął.

Vineet Jain
źródło
Mam nadzieję, że wyczyściłeś lub unieważniłeś pamięć podręczną i ponownie uruchomiłeś Android Studio? Dla mnie Android Studio 3 wydaje się wadliwy w porównaniu z poprzednimi wersjami.
Vineet Jain
ktoś kiedykolwiek to naprawił? nie można tego ominąć!
68060
0

W moim przypadku zmiana wersji biblioteki Firebase z 2.6.0 na 2.4.2 rozwiązała problem

Persiaware
źródło
0

U mnie problemem było użycie Javy 1.8 w module, ale nie w module aplikacji. Dodałem to do gradle kompilacji aplikacji i działałem:

android{
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
Pelanes
źródło
0

Taki sam problem. Włączyłem multidex: defaultConfig {applicationId "xxx.xxx.xxxx" minSdkVersion 24 targetSdkVersion 26 multiDexEnabled true

Wyczyściłem pamięć podręczną, wyczyściłem gradle, odbudowałem, stworzyłem, próbowałem upewnić się, że nie ma konfliktów w zaimportowanych bibliotekach (Usunąłem wszystkie zależności przechodnie) i wykonałem wszystkie aktualizacje. Nadal:

Błąd: nie powiodło się wykonanie zadania „: app: transformDexArchiveWithExternalLibsDexMergerForDebug”. java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: nie można połączyć dex

Okazuje się, że kompilacja się nie spodobała: implementacja „org.slf4j: slf4j-android: 1.7.21”

trond050666
źródło
0

Jeśli wersja Android Studio to 3.0.1, Gradle to 4.1, a Android PluginVersion to 3.0.0, wystąpi ten problem. Następnie obniżam wersję Gradle 3.3, Android Android jest zerowy, nie ma takiego problemu.

Qian Zhang
źródło
0

Miałem to, gdy żądana wersja SDK nie pasowała do zależności. Możesz kliknąć podświetloną linię i naprawić to, klikając czerwoną żarówkę. Nie musisz szukać aktualnej wersji, po prostu pozwól IDE to rozwiązać. I dodaj repozytorium Google do konfiguracji maven.

VeeKoo
źródło
0

Otrzymałem ten sam błąd, aw moim przypadku błąd został rozwiązany, gdy naprawiłem błąd kompilacji, który był powiązany z innym wariantem kompilacji niż ten, który obecnie budowałem.

Budowałem wariant kompilacji, na który patrzyłem, dobrze, bez błędów, ale próba debugowania spowodowała app:transformDexArchiveWithExternalLibsDexMergerForDebugbłąd. Po przełączeniu się na budowanie drugiego wariantu kompilacji złapałem błąd w procesie kompilacji i naprawiłem go. Wydawało się, że to rozwiązało mój app:transformDexArchiveWithExternalLibsDexMergerForDebugproblem dla wszystkich wariantów kompilacji.

Należy zauważyć, że ten błąd nie znajdował się w przywoływanym module zewnętrznym, ale w odrębnym zestawie źródłowym wariantu kompilacji, który odwoływał się do modułu zewnętrznego. Mam nadzieję, że to pomocne dla kogoś, kto może widzieć ten sam przypadek co ja!

ThePartyTurtle
źródło
0

Wykonałem i rozwiązałem ten problem, wykonując te zadania w moim kodzie

Otwórz -> build.gradle Zmień wartość z

compile 'com.google.code.gson:gson:2.6.1'

do

compile 'com.google.code.gson:gson:2.8.2'
Mahboob Ahmed Toor
źródło
0

Aby usunąć ten problem Dex, po prostu zaimplementuj jedną zależność. Ten problem występuje, gdy używamy wielu różnych usług z tego samego serwera. Załóżmy, że w projekcie używamy reklam i Firestore, a oba mają projektanta repozytoriów. więc musimy wywoływać różne dane w repozytorium, do zaimplementowania potrzebujemy zależności dex. Nowa zależność od aktualizacji: -

 implementation 'com.android.support:multidex:1.0.3'

Jestem pewien, że to na stałe rozwiąże Twój problem

Pradeep Sheoran
źródło
jego zależność umieściła go w gradle
Pradeep Sheoran
0
1) Dodaj wartość multiDexEnabled true
2) jeśli pojawi się błąd kompilacji, sprawdź pogodę build.gradle na poziomie aplikacji, te same zależności są zaimplementowane w różnych wersjach.
3) Usuń jeden, jeśli znajdziesz te same zależności.

android {compileSdkVersion 28 defaultConfig {

    minSdkVersion 17
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}
mam nadzieję, że działa dobrze :) Miłego kodowania
user8363370
źródło
0

Najłatwiejszym sposobem uniknięcia błędu typu ssania jest:

-Zmień bibliotekę combilesdkversion na taką samą jak twoja aplikacja compilesdkversion

-Zmień wersję biblioteki supportLibrary tak samo jak twoja build.gradle (aplikacja)

Sarojini2064130
źródło
0

To właśnie działa dla mnie. czyste, przygotuj się i uruchom.

cordova clean android;
ionic cordova prepare andriod;
ionic cordova run andriod;

mam nadzieję, że to pomoże.

Sankha Karunasekara
źródło
0

U mnie też pojawił się podobny błąd.

Problem :

wprowadź opis obrazu tutaj

Rozwiązanie :

Główną główną przyczyną tego problemu jest to, że funkcja MultiDex nie jest włączona. Więc w Projekcie / android / app / build.gradle , umożliwiają multiDex

Więcej informacji można znaleźć w dokumentacji: https://developer.android.com/studio/build/multidex#mdex-gradle

wprowadź opis obrazu tutaj

Shriram Navaratnalingam
źródło