2015-03-27 10 views
7

To jest mój .gradle file:Android z Gradle (Java wykończone niezerowej wartości wyjściowej 2)

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 21 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     applicationId "com.test.test" 
     minSdkVersion 15 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 

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

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:21.0.3' 

    compile 'com.mcxiaoke.volley:library:1.0.15' 
    compile 'org.glassfish.jersey.media:jersey-media-json-jackson:2.17' 
} 

Kiedy próbuję uruchomić mój aplikację dla systemu Android, pojawia się kolejny błąd:

Błąd: Wykonanie nie powiodło się dla zadania ": app: dexDebug".

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/java-8-oracle/bin/java'' finished with non-zero exit value 2

Otrzymuję ten błąd, gdy dodaję do gradle pliku bibliotekę jackson. Wyszukując trochę czasu, odkryłem, że biblioteka jackson jest kompatybilna z aplikacjami na Androida i jest szybsza niż inne biblioteki jako gson.

Jak mogę to rozwiązać? Jestem początkującym Androidem.

Odpowiedz

3

Myślę, że powinieneś zmienić swój JDK JV zmiany Jvm v8 dla jdk7. Ten link może Ci pomóc: Is it possible to use Java 8 for Android development?

Inne możliwe problemy z błędem zależności, czyste gradle przed kompilacją. I zmień swoją bibliotekę jackson na:

compile 'com.fasterxml.jackson.core:jackson-databind:2.2.+' 
compile 'com.fasterxml.jackson.core:jackson-core:2.2.+' 
compile 'com.fasterxml.jackson.core:jackson-annotations:2.2.+' 
+0

OK, teraz to działa. Bez względu na to, która wersja Java 8 nie jest obsługiwana, przyczyną błędu był biblioteka. Zastępowanie 3 opublikowanych bibliotek działa dobrze zarówno w wersjach 7, jak i 8. Dziękuję bardzo. – Hammerin87

+0

Chętnie pomogę;) – encastellano

+3

Wygląda na to, że problem jest spowodowany określeniem zależności gradle. W moim przypadku użyłem kompilacji "com.google.android.gms: play-services: 7.5. +", Co spowodowało błąd, jednak zmieniłem go, by skompilować "com.google.android.gms: play-services: 7.5.0 'i problem został rozwiązany –

3

Niewyobrażalnie ten problem może mieć kilka przyczyn. W moim przypadku było to spowodowane przekroczeniem maksymalnej liczby linii. To jest tak irytujące, że wiadomość pokazy Android Studio nic nie znaczy, ale jakoś znalazłem rozwiązanie jak poniżej:

https://developer.android.com/tools/building/multidex.html

Musisz utworzyć klasę, która rozciąga MultiDexApplication i zastąpić następującą metodę:

@Override 
    protected void attachBaseContext(Context base) { 
     super.attachBaseContext(base); 
     MultiDex.install(this); 
    } 

Nie zapomnij dodać "name" wewnątrz tagu w pliku AndroidManifest, jak opisano w powyższym linku.

+0

Wielościeżkowe może powodować problemy z wydajnością w produkcji. –

+0

A następnie zastąpić metodę w klasie uruchamiania: @Override chronione void attachBaseContext (baza kontekstu) {super.attachBaseContext (baza); MultiDex.install (this); } –

1

Skopiowałem wymaganą bibliotekę wewnątrz my_project/app/libs, a także dodałem zależność w build.gradle. Tak więc w moim przypadku usunąłem bibliotekę, którą skopiowałem w my_project/app/libs. Ponieważ gradle utrzymuje całą zależność, nie muszę umieszczać biblioteki w/libs. To naprawiło mój problem.

1

Może masz zależność, która powoduje niezgodność

na przykład:

1

Mocowanie ścieżkę JDK rozwiązuje ten problem.

Kliknij prawym przyciskiem myszy na Projekt> Otwórz ustawienia modułu> Lokalizacja SDK> Pod pozycją JDK podaj ścieżkę do folderu JDK.

+0

To rozwiązanie zostało już dostarczone przez zaakceptowaną odpowiedź. Zmiana Java 8 na Java7 –