ANOMALO TOP - LEVEL ECCEZIONE : com.android.dex.DexException : più file DEX definiscono

? jghg02 @ | Original: StackOverFlow
---

Ho un problemi cercando utilizzare un Google Play Servizi sul mio App Android con Android Studio .

Ho provato di tutto e ancora non funziona .

Questo è l'errore .

Execution failed for task ':app:dexDebug'.

Grazie . I Migliori Saluti.

---

Top 5 Risposta

1iTapAndroid @

La tua google biblioteca servizi di gioco viene esportato da altre dipendenze del progetto e, al momento della compilazione del compilatore dex si confonde .

Se stai usando Gradle poi includere questo nel build.gradle del progetto dovrebbe escludere la libreria di supporto venga esportato nel progetto principale.

apply plugin: 'android'
apply plugin: 'crashlytics'

/** Must exclude exported support jars from dependencies, or get dex duplicate class      error.
*  we're
**/
configurations {
    all*.exclude group: 'com.android.support', module: 'support-v4'
    all*.exclude group: 'com.google.android.gms', module: 'play-services'
}

Se si utilizza il sistema di studio di compilazione Andoid . Poi si dovrebbe andare su File - > struttura del progetto e disabilitare - > moduli . Passare attraverso ciascun modulo la e fare clic sulla scheda dipendenze, deselezionare la colonna di esportazione per la libreria di supporto e Google Play biblioteca servizi .

Posta commenti se avete bisogno di più aiuto .

2Gene @

L'errore si verifica quando si ha la stessa directory / library incluso più di una volta nel dipendenze del build.gradle . Ok, diciamo che ha una struttura di App che assomiglia a questo :

ANOMALO TOP - LEVEL ECCEZIONE : com.android.dex.DexException : più file DEX definiscono

Così si ha la principale "app " e poi si dispone di un gruppo di sub- apps / moduli / librerie . Le librerie sono : 1 ) gene_test_library, 2 ) genes_nine_old_androids_library, & amp; 3 ) swipe_list_view_library .

Il mio nome è Gene, quindi è per questo che ci sono tutte queste librerie "gene" .

All'interno del build.gradle per " app ", ho:

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

    compile project(':libraries:gene_test_library')
    //compile project(':libraries:genes_nine_old_androids_library')
    compile project(':libraries:swipe_list_view_library')
}

All'interno del build.gradle per gene_test_library, non ho nulla :

dependencies {
}

All'interno build.gradle per gene_nine_old_androids_library, ho:

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

All'interno build.gradle per swipe_list_view_library, ho:

dependencies {
    compile 'com.nineoldandroids:library:2.4.0+'
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.0'
}

Questa linea di codice " compilare FileTree ( dir : « libs », includono : [ ' * .jar ' ] ) " significa semplicemente "hey, guardate dentro la cartella " librerie " all'interno di questo modulo per qualsiasi file jar . Non ho nulla nella cartella libs di uno dei moduli in modo da poter ignorare quella riga di codice .

Quindi diciamo che ho rimuovere il commento fuori // compilare progetto ( ' : le biblioteche : genes_nine_old_androids_library ' ) Nel build.gradle per il modulo " app" . Poi vorrei ottenere il " INASPETTATO TOP - LEVEL ECCEZIONE : " errore. Perché?

ANOMALO TOP - LEVEL ECCEZIONE : com.android.dex.DexException : più file DEX definiscono

Beh, la scrittura // compile progetto ( ' : biblioteche : genes_nine_old_androids_library ') all'interno del build.gradle per "app ", è lo stesso che le dipendenze di compilazione del modulo " genes_nine_old_androids_library " e metterla lì . Così commentando la // compile progetto ( ' : le biblioteche : genes_nine_old_androids_library ' ) istruzione, la build.gradle per il modulo "app " diventa :

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

    compile project(':libraries:gene_test_library')
    ***compile fileTree(dir: 'libs', include: ['*.jar'])***
    ***compile 'com.android.support:appcompat-v7:21.0.0'***
    compile project(':libraries:swipe_list_view_library')
}

Notate come ora " compilare ' com.android.support:appcompat-v7:21.0.0 ' " presenta 2x . Ecco dove l'errore proviene.