2015-08-18 12 views
14

Prima di richiedere DUPLICATE si prega di leggere la domanda.Utilizzo di buildToolsVersion 23 non riesce perché più file dex definiscono 'AnimRes'

Questo si verifica solo con l'ultima versione degli strumenti di creazione. Le versioni precedenti non mostrano questo problema. Ho già provato le soluzioni offerte su altre domande qui per più definizioni di @AnimRes. Nessuno mi ha aiutato finora, motivo per cui ho pubblicato una nuova domanda. Stessi sintomi, causa diversa, soluzione diversa.

posso costruire senza problemi quando si utilizzano buildToolsVersion 22.0.1, ma quando posso passare al buildToolsVersion 23 la build non riesce con l'errore

IMPREVISTO TOP-LEVEL ECCEZIONE: com.android.dex.DexException: multipla file DEX definiscono Landroid/support/annotazione/AnimRes; a com.android.dx.merge.DexMerger.readSortableTypes (DexMerger.java:596) a com.android.dx.merge.DexMerger.getSortedTypes (DexMerger.java:554) a com.android.dx.merge. DexMerger.mergeClassDefs (DexMerger.java:535) su com.android.dx.merge.DexMerger.mergeDexes (DexMerger.java:171) su com.android.dx.merge.DexMerger.merge (DexMerger.java:189) a com.android.dx.command.dexer.Main.mergeLibraryDexBuffers (Main.java:502) a com.android.dx.command.dexer.Main.runMonoDex (Main.java:334) a com.android. dx.command.dexer.Main.run (Main.java:277) su com.android.dx.command.dexer.Main.main (Main.java:245) su com.android.dx.command.Main. main (Main.java:106)

Questa è una lista delle mie dipendenze:

provided 'org.projectlombok:lombok:1.16.4' 
compile 'com.android.support:support-v4:23.0.0' 
compile 'com.android.support:appcompat-v7:23.0.0' 
compile 'com.android.support:support-v13:23.0.0' 
compile 'com.android.support:cardview-v7:23.0.0' 
compile 'com.android.support:palette-v7:23.0.0' 
compile 'com.google.code.findbugs:jsr305:2.0.1' 
compile 'com.google.guava:guava:18.0' 
compile 'com.github.chrisbanes.photoview:library:1.2.3' 
compile 'org.apache.commons:commons-lang3:3.4' 
compile 'commons-io:commons-io:2.4' 
compile 'commons-codec:commons-codec:1.10' 
compile 'com.jakewharton:butterknife:7.0.1' 
compile 'com.squareup:otto:1.3.8' 
compile 'org.jsoup:jsoup:1.7.2' 
compile 'com.squareup.picasso:picasso:2.5.2' 
compile 'com.squareup.retrofit:retrofit:1.9.0' 
compile 'com.squareup.okhttp:okhttp:2.4.0' 
compile 'com.squareup.okhttp:okhttp-urlconnection:2.4.0' 
compile 'com.squareup.okio:okio:1.5.0' 
compile 'com.flaviofaria:kenburnsview:1.0.6' 
compile 'com.edmodo:cropper:1.0.1' 
compile 'com.getbase:floatingactionbutton:1.10.0' 
compile 'com.nispok:snackbar:2.10.10' 
compile 'com.github.ksoichiro:android-observablescrollview:1.5.2' 
compile 'in.srain.cube:grid-view-with-header-footer:1.0.12' 
compile 'de.hdodenhof:circleimageview:1.3.0' 

per garantire a tutti (compresi Espresso) utilizza la stessa versione del support-annotations Ho il seguente nel mio file di build:

configurations.all { 
    resolutionStrategy.force 'com.android.support:support-annotations:23.0.0' 
} 

La rimozione di questo causerà altri errori.

Si tratta di un possibile errore negli strumenti di creazione o sto facendo qualcosa di sbagliato? Ho provato a impostare Incremental false in dexOptions. Non ha aiutato.

Utilizzando ./gradlew -q app:dependencies ottengo il seguente:

+--- com.android.support:support-v4:23.0.0 
| \--- com.android.support:support-annotations:23.0.0 
+--- com.android.support:appcompat-v7:23.0.0 
| \--- com.android.support:support-v4:23.0.0 (*) 
+--- com.android.support:support-v13:23.0.0 
| \--- com.android.support:support-v4:23.0.0 (*) 
+--- com.android.support:cardview-v7:23.0.0 
+--- com.android.support:palette-v7:23.0.0 
| \--- com.android.support:support-v4:23.0.0 (*) 
+--- com.google.code.findbugs:jsr305:2.0.1 
+--- com.google.guava:guava:18.0 
+--- com.github.chrisbanes.photoview:library:1.2.3 
| \--- com.android.support:support-v4:19.+ -> 23.0.0 (*) 
+--- org.apache.commons:commons-lang3:3.4 
+--- commons-io:commons-io:2.4 
+--- commons-codec:commons-codec:1.10 
+--- com.jakewharton:butterknife:7.0.1 
+--- com.squareup:otto:1.3.8 
+--- org.jsoup:jsoup:1.7.2 
+--- com.squareup.picasso:picasso:2.5.2 
+--- com.squareup.retrofit:retrofit:1.9.0 
| \--- com.google.code.gson:gson:2.3.1 
+--- com.squareup.okhttp:okhttp:2.4.0 
| \--- com.squareup.okio:okio:1.4.0 -> 1.5.0 
+--- com.squareup.okhttp:okhttp-urlconnection:2.4.0 
| \--- com.squareup.okhttp:okhttp:2.4.0 (*) 
+--- com.squareup.okio:okio:1.5.0 
+--- com.flaviofaria:kenburnsview:1.0.6 
+--- com.edmodo:cropper:1.0.1 
+--- com.getbase:floatingactionbutton:1.10.0 
| \--- com.android.support:support-annotations:22.2.0 -> 23.0.0 
+--- com.nispok:snackbar:2.10.10 
| +--- com.android.support:recyclerview-v7:22.0.0 
| | +--- com.android.support:support-v4:22.0.0 -> 23.0.0 (*) 
| | \--- com.android.support:support-annotations:22.0.0 -> 23.0.0 
| \--- com.android.support:support-annotations:22.0.0 -> 23.0.0 
+--- com.github.ksoichiro:android-observablescrollview:1.5.2 
| \--- com.android.support:recyclerview-v7:21.0.0 -> 22.0.0 (*) 
+--- in.srain.cube:grid-view-with-header-footer:1.0.12 
\--- de.hdodenhof:circleimageview:1.3.0 
+2

"la compilazione fallisce con l'errore" - ci dovrebbero essere più informazioni nella Gradle Console su dove provengono i duplicati. – CommonsWare

+0

Non dice quali entità definiscono '@ AnimRes'. Ora sto forzando tutte le librerie di supporto ad usare '23.0.0' e continuano a fallire allo stesso modo. – copolii

+0

Quello che Commons sta dicendo è che vedrete più informazioni se si esegue gradle dalla console (ad esempio 'gradlew assembleDebug'). –

risposta

10

Aggiornamento: Questo è fissa nella versione 23.0.1 di strumenti di generazione come la directory support non è più incluso nel renderscript-v8.jar

Il colpevole è la versione di renderscript-v8.jar inclusa negli strumenti di compilazione.

penso che questo tree uscita dice tutto:

C:. 
├───renderscript-v8-22.0.01 
│ ├───android 
│ │ └───support 
│ │  └───v8 
│ │   └───renderscript 
│ └───META-INF 
└───renderscript-v8-23 
    ├───android 
    │ └───support 
    │ *** ├───annotation 
    │  └───v8 
    │   └───renderscript 
    └───META-INF 

ho taggato le directory con la versione degli strumenti di compilazione che li comprendeva.Si noti la sottodirectory annotations in renderscript-v8-23 che non esiste in renderscript-v8-22.0.01.

Esiste già un rapporto del problema qui: https://code.google.com/p/android/issues/detail?id=179493 E un duplicato qui: https://code.google.com/p/android/issues/detail?id=181697

6

Non posso dire che ho capito questa soluzione - o che è necessariamente una buona soluzione, ma ha ottenuto la mia app compilazione ancora:

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

Inoltre, si veda: Getting Multiple dex error when using render script support lib

credito per Luboš Staráček per questa soluzione

+0

Sei il mio eroe;) – Spotlight