2016-05-10 23 views
11

Utilizzo librerie esterne payu money sdk e linkedin-sdk, entrambi utilizzano le librerie volley, che durante la compilazione del progetto danno l'accesso duplicato di AuthFailureError.classvoce duplicata: com/android/volley/AuthFailureError.class durante la compilazione del progetto nello studio Android

Errore: esecuzione non riuscita per l'attività ': app: packageAllDebugClassesForMultiDex'.

java.util.zip.ZipException: duplicate entry: com/android/volley/AuthFailureError.class"

Ho anche aggiunto seguente codice per escludere il modulo, ma ancora lo stesso errore

configurations{ all*.exclude module: 'com.android.volley' }

favore aiutatemi

+0

a causa di questo credo http://stackoverflow.com/a/28937822/2032561 – Bharatesh

+0

@Ankur fatto che hai la soluzione per questo problema? per favore rispondi al più presto – Dev

+0

@Dev ... sì dopo un sacco di problemi .. l'ho fatto escludendo il supporto-v4 libreria 'compile ('com.android.support:appcompat-v7:23.2.1') ​​{ esclude modulo: 'support- v4 ' } compile (' com.google.android.gms: play-services: 8.3.0 ') { esclude modulo:' support-v4 ' } ', se non funziona fammi sapere quali librerie stanno creando problemi. –

risposta

0

Questo è un esempio come escludere le classi di dipendenze quando v'è duplicato entrata in gradle.

compile ('com.google.api-client:google-api-client-android:1.17.0-rc') { 
    exclude module: 'httpclient' 
} 

o provare con il vostro modo sufficiente aggiungere un po 'di testo

configurations { 
    all*.exclude group: 'com.android.support', module: 'support-v4' 
} 

Così, ora che cosa dovete fare è

Ricerca CTRL + MAIUSC + N in studio android per l'AuthFailureError di classe .class Vedere quale barattolo contiene questo e rimuoverlo come sopra (Questo è solo un esempio/Devi calcolare la classe duplicata e rimuoverla manualmente)

+0

ancora lo stesso errore per 'configurazioni { tutti *. Escludi il gruppo: 'com.android.volley', modulo: 'library-1.0.18' }' anche quando ho aggiunto il modulo exclude al mio build.gradle, dà errore 'Metodo DSL Gradle non trovato:' exclude() '' –

2

Aggiungere multiDexEnabled true nella sezione defaultconfig del file Gradle

Poi,

compilazione 'com.android.support:multidex:1.0.1' nelle vostre dipendenze

Infine aggiungere qui sotto nella tua classe di applicazione:

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

Inoltre, controllare se si sta utilizzando volley.jar nella cartella delle libs. In tal caso, cancella il file jar e ricompilalo. A volte, le dipendenze jar sono in conflitto con quelle compilate utilizzando l'origine remota.

+0

ho già aggiunto il seguente metodo, ma lo stesso errore –

+0

Controlla la risposta aggiornata – asdec90

+0

ma se rimuovo quel file jar dalla cartella libs, il mio codice non verrà eseguito, esso darà errore che non riesce a trovare scarica –

0

Va bene ho avuto la mia risposta

su Mac al posto di controllo di n, è il comando 0 e il comando avevo bisogno era

configurazioni { tutti * modulo .exclude: 'volley-release' }

2

basta rimuovere il file jar duplicato (nota: utilizzare la nuova versione, eliminare la versione precedente) per l'importazione di "com.android.volley.AuthFailureError" in build.gradle. Quindi pulire il progetto e ricostruire il progetto e quindi eseguire otterrà risultati.

+0

non è possibile eliminare i file perché sono in librerie esterne, è necessario escludere –

1

Ho riscontrato questo problema quando ho tentato di generare l'APK (versione) e ho risolto il problema cambiando la build di linkedin-sdk .Gradle:

Da:

dependencies { 
    compile 'com.android.support:support-annotations:20.0.0' 
    compile 'com.android.support:support-v4:21.0.+' 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile files('libs/volley.jar') 
    androidTestCompile('junit:junit:4.12') } 

A:

dependencies { 
    compile 'com.android.support:support-annotations:20.0.0' 
    compile 'com.android.support:support-v4:21.0.+' 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.volley:volley:1.0.0' 
    androidTestCompile('junit:junit:4.12') } 
0

Basta rimuovere la libreria volley da dipendenza. Prova a pulire e ricostruire il progetto funziona per me. Es. payusdk sta anche implementando la libreria di volley, quindi questa è la ragione per cui l'eccezione mostra una voce duplicata. Spero che funzioni. perché ho anche trovato questo errore e faccio queste cose funziona. Grazie.

5

Mi sono imbattuto in questo stesso errore, e dopo aver letto this, sono stato in grado di risolverlo.

Prova ad aggiungere questa linea all'interno della vostra applicazione dir file di build.gradle -

android{ 
configurations { 
    all*.exclude group: 'com.android.volley' 
}} 

Spero che questo aiuti.

0

Ho avuto il problema simile mentre facevo build su Jenkins, stranamente funzionava bene sul mio computer locale. Dopo aver aggiunto sotto, escludi ha funzionato sia su macchina locale che su Jenkins.

android{ 
configurations { 
    all*.exclude group: 'com.android.volley' 
}} 

Ho aggiunto il blocco di configurazioni al build.gradle della mia app all'interno della sezione Android.

Se importa di compilare la versione SDK è 22 e Montaggio Tools versione 25.0.0 è

questo ha funzionato come un fascino.

0

Utilizzare il seguente comando nel terminale studio di Android per ottenere i dati delle dipendenze conflitto - [Sostituire con la vostra applicazione Nome]

./gradlew -q :<app>:dependencyInsight --dependency volley --configuration compile 

Se si utilizza ultima biblioteca Volley da Android [https://github.com/google/volley/releases], aggiungi qui sotto due righe in il tuo file build.gradle in ognuna delle voci della libreria di compilazione con conflitto.

Es:

compile('com.xyz:abc:1.1.0-RELEASE') { 
     exclude module: 'library' 
     exclude group: 'com.mcxiaoke.volley' 
}