Podczas wykonywania mojej aplikacji na Androida pojawia się ten błąd (wyczyściłem ją, a następnie skompilowałem, ale błąd nadal występuje)
- Synchronizuj: OK
- Make Project: OK
- Czysto: OK
- Uruchom: błąd
Błąd: nie powiodło się wykonanie zadania „: app: dexDebug” .com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process „command” C: \ Program Files \ Java \ jdk1.7.0 _25 \ bin \ java.exe '' zakończono z niezerową wartością wyjścia 2
Mój plik z ocenami:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.rzr.rzevallosr.miappdepruebas"
minSdkVersion 19
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// This library handles authentication and authorization
compile 'com.spotify.sdk:spotify-auth:1.0.0-beta9@aar'
// This library handles music playback
compile 'com.spotify.sdk:spotify-player:1.0.0-beta9@aar'
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.android.support:recyclerview-v7:21.0.+'
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
compile 'com.squareup.okhttp:okhttp:2.2.0'
compile files('libs/spotify-web-api-android-master-0.1.0.jar')
compile files('libs/okio-1.3.0.jar')
}
EDYCJA: Nie widziałem „kompiluj drzewo_pliku (dir: 'libs', include: ['* .jar'])” to kompilacja dwukrotnie moich bibliotek, więc po prostu komentuję:
//compile 'com.squareup.retrofit:retrofit:1.9.0'
//compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
//compile 'com.squareup.okhttp:okhttp:2.2.0'
//compile files('libs/spotify-web-api-android-master-0.1.0.jar')
//compile files('libs/okio-1.3.0.jar')
i działa dobrze.
android
asp.net-web-api
gradle
build.gradle
Maverick.pe
źródło
źródło
Odpowiedzi:
Ten problem jest prawdopodobnie spowodowany przekroczeniem limitu dex 65K metod narzuconego przez Androida. Ten problem można rozwiązać, czyszcząc projekt i usuwając niektóre nieużywane biblioteki i metody z zależności w pliku build.gradle LUB dodając obsługę multidex.
Tak więc, jeśli musisz zachować biblioteki i metody, możesz włączyć obsługę wielu dexów, deklarując ją w konfiguracji gradle.
Możesz przeczytać więcej o obsłudze multidex i tworzeniu aplikacji przy użyciu ponad 65 000 metod tutaj .
źródło
./gradlew assembleDebug --stacktrace --debug
. Widziałem ten błąd w moim przypadkucom.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
W moim przypadku problem polegał na tym, że umieściłem niepotrzebny kod biblioteki Complie w pliku build.gradle
który powodował ponad 65k metod, więc usunąłem go, zsynchronizowałem gradle, wyczyściłem projekt, a następnie uruchomiłem ponownie, a następnie ten błąd ustał. Potrzebowałem tylko map i gcm, więc umieściłem te linie i zsynchronizowałem projekt
Cześć ludzie, ponownie napotkałem ten problem i tym razem było to z powodu zmiany wersji narzędzi do kompilacji i naprawdę wymagało to włączenia multidex ... więc dodałem te plik build.gradle mojej aplikacji.
Utwórz klasę, która rozszerza klasę Application i umieść tę metodę w klasie.
uwzględnij również w metodzie OnCreate
źródło
Na wszelki wypadek, jeśli ktoś nadal boryka się z tym i nie ma pojęcia, dlaczego tak się dzieje i jak to naprawić. W rzeczywistości ten błąd
może mieć wiele powodów, ale z pewnością nie jest to coś związanego z wersją JDK, więc nie trać czasu w złym kierunku. Są to dwa główne powody, dla których tak się dzieje
Pierwszy przypadek można naprawić w następujący sposób: Dowiedz się, które zależności zostały uwzględnione wiele razy. Aby to zrobić, uruchom następujące polecenie w terminalu Android Studio
to zwróci wszystkie zależności, ale pliki jar, które dołączasz z folderu lib, spróbuj pozbyć się duplikatów oznaczonych gwiazdką (*), nie zawsze jest to możliwe, ale w niektórych przypadkach nadal możesz to zrobić, po tym spróbuj wykluczyć moduły, które są uwzględniane wiele razy, możesz to zrobić w ten sposób
W drugim przypadku, gdy sugerujesz przekroczenie limitu metody, spróbuj zminimalizować je przez usunięcie dołączonych bibliotek (uwaga brzmi jak pierwsze rozwiązanie), jeśli nie ma sposobu, aby to zrobić, dodaj multiDexEnabled true do domyślnej konfiguracji
zwiększa to limit metod, ale nie jest to najlepsze rozwiązanie ze względu na możliwe problemy z wydajnością. WAŻNE dodawanie tylko
multiDexEnabled true
dodefaultConfig
nie wystarczy w rzeczywistości na wszystkich urządzeniach z systemem Android <5 Lollipop spowoduje nieoczekiwane zachowanie iNoClassDefFoundError
. sposób rozwiązania tego problemu opisano tutajźródło
Nie wiedziałem (do tego czasu), że „kompiluj fileTree (dir: 'libs', include: ['* .jar'])” kompiluję wszystko, co ma rozszerzenie jar w folderze libs, więc po prostu komentuję (lub usuwam) to linie:
i działa dobrze. W każdym razie dzięki! Mój błąd.
źródło
compile fileTree(dir: 'libs', include: ['*.jar'])
w gradle. Pomogło mi.compile fileTree(dir: 'libs', include: ['*.jar'])
ale nadal pokazuje ten sam błąd.Miałem ten sam problem i naprawiłem usunięcie biblioteki, która była niepotrzebna
Usunąłem tę bibliotekę i mogłem bez problemu uruchomić projekt.
źródło
Mój został rozwiązany przez włączenie multiDex do debugowania kompilacji.
źródło
Odrzucam osadzony JDK (w wersji 32-bitowej), ponieważ osadzony JDK jest 64 -bitowy
Kliknij prawym przyciskiem myszy swój projekt -> Otwórz ustawienia modułu -> Lokalizacja SDK -> Odznacz Użyj osadzonego JDk, a następnie ustaw ścieżkę JDK, np. W Ubuntu / usr / lib / jvm / java-8-openjdk-i386
źródło
echo $JAVA_HOME
dla ścieżkiMożliwy problem: Przekroczyłeś limit metod dex 65k, może dodałeś jakąś bibliotekę lub kilka metod, zanim wystąpił problem?
źródło
Jeśli zaktualizowałeś już swój SDK i korzystasz również z usług Google Play, to musisz zająć się tą zależnością, ponieważ istnieje pewien rodzaj konfliktów z:
Wykonaj poniższe czynności: kompiluj „com.google.android.gms: play-services: +„ Zamień na kompilację ”com.google.android.gms: play-services: 6.5.87”
Uwaga: tutaj „6.5.87” to wersja usługi Google Play. Mam nadzieję, że to pomoże ...
źródło
Usunąłem android-support-v4.jar z folderu libs i działa !!!
jeśli projekt zawiera błąd, sprawdź plik build.gradle
źródło
W moim przypadku problem polegał na tym, że nowa biblioteka (zależność gradle), którą dodałem, opierała się na niektórych innych zależnościach, a dwie z tych podstawowych zależności były w konflikcie / kolidowały z niektórymi zależnościami innych bibliotek / zależności w moim skrypcie kompilacji. W szczególności dodałem Apache Commons
Validator
(do sprawdzania poprawności wiadomości e-mail), a dwie jego zależności (Apache CommonsLogging
i Apache CommonsCollections
) były w konflikcie z tymi używanymi przez Robolectric (ponieważ różne wersje tych samych bibliotek były obecne w mojej ścieżce kompilacji). Więc wykluczyłem te sprzeczne wersje zależności (modules
) podczas dodawania nowej zależności (theValidator
):Możesz zobaczyć zależności modułów gradle (możesz mieć tylko jeden moduł w swoim projekcie) za pomocą następującego polecenia gradle (używam opakowania gradle, które jest tworzone dla Ciebie, jeśli utworzyłeś swój projekt w Android Studio / Intellij Pomysł). Uruchom to polecenie w katalogu głównym projektu:
./gradlew: NAZWA-MODUŁU: zależności
Po dodaniu tych
exclude
dyrektyw i ponownej próbie uruchomienia pojawił sięduplicate file
błąd,NOTICE.txt
który jest używany przez niektóre biblioteki Apache Commons, takie jak Logging i Collections. Musiałem wykluczyć ten plik tekstowy podczas pakowania. W moim build.gradle dodałem:Okazało się, że nowa biblioteka (the
Validator
) może działać z nieco starszymi wersjami swoich zależności / modułów (które są już importowane do mojej ścieżki kompilacji przez inną bibliotekę (Robolectric)). Tak było w przypadku tej konkretnej biblioteki, ale inne biblioteki mogą używać najnowszego interfejsu API podstawowych zależności (w takim przypadku należy spróbować sprawdzić, czy inne biblioteki, które opierają się na konfliktującym module / zależności, są w stanie pracować z nowsza wersja (poprzez wykluczenie starszej wersji modułu / zależności z pozycji tych bibliotek)).źródło
W moim przypadku pojawił się ten błąd, gdy występuje konflikt bibliotek 2 lub więcej (ta sama biblioteka, ale różne wersje). Sprawdź swoją aplikację build.gradle w bloku zależności.
źródło
Istnieją dwie alternatywy, które na pewno zadziałają:
Jeśli powyższa metoda nie zadziałała, wypróbuj następną.
Dodaj następujące elementy do pliku build.gradle na poziomie aplikacji
źródło
Error:Execution failed for task ':app:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipException: duplicate entry: android/support/v4/view/MotionEventCompatEclair.class
, co mam zrobić dalej?Zaktualizowanie mojego Java SDK do najnowszej wersji
1.7.0_79
i zaktualizowanieSDK Location
poniżejProject Structure
rozwiązało problem.źródło
Mój problem polegał na tym, że oprócz posiadania
Miałem też ten ślad:
Problem polegał na tym, że dodawałem tę samą klasę w dwóch różnych bibliotekach. Po usunięciu pliku class / jar z jednej z bibliotek projekt działał poprawnie
źródło
Dla mnie dodawałem całe zależności od Playstore
Ale potrzebowałem tylko mapy Google, więc sprecyzowałem, a błąd został rozwiązany.
źródło
w moim przypadku problemem była wersja narzędzi do kompilacji, która była 23.0.0 rc3 i zmieniłem na 22.0.1 i mój problem został naprawiony.
źródło
Być może używasz kabla niskiej jakości / uszkodzonego kabla do podłączenia urządzenia do komputera, wymieniłem kabel i zadziałało.
źródło
Ten błąd jest spowodowany używaniem większej liczby bibliotek. W moim przypadku 'kompilacja' com.google.android.gms: play-services-9.4.0 'spowodowało ten błąd.Aby uniknąć tego błędu, użyj niezbędnych bibliotek. Na przykład, jeśli chcesz aby korzystać z Map w swojej aplikacji. Następnie użyj kompilacji „com.google.android.gms: play-services-maps: 9.4.0”. podczas dodawania zależności usług Google Play określ tylko potrzebne biblioteki. domyślnie obejmuje wszystkie biblioteki.
źródło
W swoim
gradle.build
pliku użyj tegoI działa dobrze.
źródło
Jeśli chcesz zobaczyć, co dokładnie powoduje błąd, spróbuj zbudować swój projekt za pomocą terminalu gradle, w ten sposób
./gradlew assembleDebug --stacktrace --debug
. Widziałem następujący błąd w moim przypadkucom.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
Stało się to, gdy próbowałem zintegrować Mapy Google z moim projektem. Aby to naprawić, po prostu sprawdziłem dołączone biblioteki
compile 'com.google.android.gms:play-services:9.8.0'
Po prostu zmieniłem to na
compile 'com.google.android.gms:play-services-maps:9.8.0'
i problem zniknął
źródło
Wystąpił ten sam błąd po przekonwertowaniu projektu na
Kotlin
. Mój problem polegał na tym, że moja lokalizacja jre została zmieniona na nieprawidłową ścieżkę podczas procesu (zastanawiam się, dlaczego tak się mogło stać ... sprawiło, że traciłem czas). Naprawiono to, wykonując następujące czynności:Odznaczono
Use embedded JDK
opcję, która wskazywała na starą instalację JDK i wybrałeś poprawną:Po zmianie tego błąd zniknął
źródło
UDAŁO SIĘ DLA MNIE :)
zaktualizowałem java do najnowszej wersji 8, poprzednio była to 7, a następnie przeszedłem do OPEN MODULE SETTING, klikając prawym przyciskiem myszy na projekt i zmieniłem ścieżkę jdk na / usr / lib / jvm / java-8-oracle, nowa java 8 została zainstalowana. I zrestartuj studio
sprawdź w / usr / lib / jvm nazwę folderu java 8
Używam ubuntu
źródło