Z jakiegoś nieznanego powodu moja aplikacja nagle nie chce się skompilować z Android Studio.
Wciąż dostaję
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
/home/martynas/android-sdk/build-tools/19.1.0/dx --dex --num-threads=4 --output
...
...
...
Error Code:
2
Output:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Cannot merge new index 65536 into a non-jumbo instruction!
Chociaż ta sama aplikacja jest pomyślnie budowana z wiersza poleceń. Sprawdziłem liczbę odwołań do metod i jest znacznie poniżej przerażającego 64 tys.
Teraz używam AS 0.8.11.
źródło
project.properties
nie zadziałało, więc zaktualizowałem skrypt kompilacji Gradle zgodnie z opisem tutaj: stackoverflow.com/questions/17320088/…compile 'com.google.android.gms:play-services-base:7.3.0'
Ustaw właściwość jumboMode w build.gradle:
android { ... dexOptions { jumboMode true } }
Znalazłem również to przydatne: Wyświetlanie liczby metod dex według pakietu .
źródło
To działa dla mnie. Dostawałem
com.android.dex.DexIndexOverflowException: Cannot merge new index 66636 into a non-jumbo instruction!
android { ... dexOptions { jumboMode true } }
Jeśli to nie działa, być może osiągnąłeś limit odwołań do metody w dex, co jest innym problemem. Musisz użyć multidex lub proGuard.
źródło
Jest to błąd w łączeniu, gdy scalane pliki dex mają więcej niż 65536 ciągów. Nowy indeks nie mieści się w instrukcji const-string, a łączenie dex nie obsługuje zmiany instrukcji, jeśli mają one różne rozmiary, więc nie można go rozszerzyć do instrukcji const-string / jumbo. jb-mr1 poprzez dodanie nowej opcji: --force-jumbo. Ten błąd można naprawić, dodając
"dex.force.jumbo=true"
do project.properties.źródło
Z najnowszym Android Studio i flagą „force jumbo” zaznaczoną w ustawieniach kompilatora Android Studio ten problem znika.
źródło