web-dev-qa-db-fra.com

Entrée Zip en double [classes.jar: Android / support / conception / widget / CoordinatorLayout $ Behavior.class]

J'ai la dépendance suivante et obtenir CoordinatorLayout$Behavior double entrée. J'ai cherché tellement plus mais je n'ai trouvé aucune solution.

Je reçois

Caused by: Java.io.IOException: Duplicate Zip entry [classes.jar:Android/support/design/widget/CoordinatorLayout$Behavior.class]
at proguard.io.JarWriter.getOutputStream(JarWriter.Java:138)
at proguard.io.FilteredDataEntryWriter.getOutputStream(FilteredDataEntryWriter.Java:106)
at proguard.io.FilteredDataEntryWriter.getOutputStream(FilteredDataEntryWriter.Java:106)
at proguard.io.FilteredDataEntryWriter.getOutputStream(FilteredDataEntryWriter.Java:92)
at proguard.io.ClassRewriter.read(ClassRewriter.Java:68)
at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.Java:87)
at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.Java:87)
at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.Java:87)
at proguard.io.JarReader.read(JarReader.Java:65)
at proguard.io.DirectoryPump.readFiles(DirectoryPump.Java:65)
at proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.Java:53)
at proguard.InputReader.readInput(InputReader.Java:184)
... 50 more

où l'interface principale entre? Je pense que cela crée des problèmes. Quelqu'un peut-il savoir où j'ai besoin d'exclure une de cette bibliothèque?

J'ai explorer mon tout lib et avoir scène suivante.

enter image description here

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
//    compile('com.mikepenz:materialdrawer:5.8.0@aar') {
//        transitive = true
//    }
compile 'com.Android.support:multidex:1.0.2'
compile group: 'com.google.code.gson', name: 'gson', version: '2.8.2'
compile 'com.Android.support:appcompat-v7:27.0.0'
compile 'com.Android.support:support-v4:27.0.0'
compile 'com.Android.support:recyclerview-v7:27.0.0'
compile 'com.Android.support:design:27.0.0'
compile 'com.Android.support:cardview-v7:27.0.0'
compile 'com.google.Android.gms:play-services-gcm:11.8.0'
compile 'com.google.Android.gms:play-services-location:11.8.0'
compile 'com.google.Android.gms:play-services-auth:11.8.0'
compile 'com.pnikosis:materialish-progress:1.7'
compile 'de.hdodenhof:circleimageview:2.2.0'
compile 'com.github.rey5137:material:1.2.4'
compile 'org.Apache.commons:commons-lang3:3.6'
compile 'com.afollestad.material-dialogs:core:0.9.5.0'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
compile 'com.loopj.Android:android-async-http:1.4.9'
compile 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar'
compile 'com.bignerdranch.Android:expandablerecyclerview:3.0.0-RC1'
compile 'com.github.travijuu:numberpicker:1.0.7'
compile 'com.github.carlosmuvi:SegmentedProgressBar:0.6.0'
compile 'com.nex3z:notification-badge:0.3.0'
compile 'com.bogdwellers:pinchtozoom:0.1'
compile 'com.theartofdev.edmodo:Android-image-cropper:2.6.0'
compile 'com.aurelhubert:ahbottomnavigation:2.1.0'
testCompile 'junit:junit:4.12'
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
compile files('libs/PGSDK_V2.1.jar')
compile 'com.facebook.Android:facebook-Android-sdk:[4,5)'
compile 'com.race604.waveloading:library:1.1.1'
compile 'com.karumi:dexter:4.2.0'
compile 'com.msg91.sendotp.library:library:3.1'
}
15
Bhavesh Hirpara

Je l'ai juste fait comme. Ça marche maintenant

Solution 1

compile 'com.Android.support:appcompat-v7:27.1.0'
compile 'com.Android.support:support-v4:27.1.0'
compile 'com.Android.support:recyclerview-v7:27.1.0'
compile 'com.Android.support:design:27.1.0'
compile 'com.Android.support:cardview-v7:27.1.0'

Solution 2 (NOUVEAU)

Migrer votre code vers AndroidX

enter image description here

35
Bhavesh Hirpara

En plus d'utiliser Project view -> External Libraries, J’utilise la commande gradle pour afficher les dépendances dans un fichier txt pour la recherche. Utilisation ./gradlew Sur Mac et gradlew.bat sur la fenêtre.

$ ./gradlew -q :app:dependencies > dependencies.txt

Dans dependencies.txt, utilisez "Rechercher" et tapez "design", par exemple, et examinez toutes les bibliothèques mises en surbrillance et leur numéro de version. À partir de certains SO publications, ils suggèrent d’exclure les dépendances dupliquées. Si une dépendance est incluse par une autre (par exemple, com.Android.support:cardview-v7 est inclus par com.firebaseui:firebase-ui-auth), nous pouvons omettre cette dépendance de app/build.gradle.

J'ai corrigé mon projet en supprimant ces dépendances de mon diplôme:

implementation 'com.Android.support:appcompat-v7:27.1.0'
implementation 'com.Android.support.constraint:constraint-layout:1.0.2'
implementation 'com.Android.support:support-vector-drawable:27.1.0'
implementation 'com.Android.support:cardview-v7:27.1.0'

Je garde celui-ci (et passe de 27.0.2 à 27.1.0):

implementation 'com.Android.support:design:27.1.0'

Ajouter exclure aux dépendances suivantes:

implementation 'com.firebaseui:firebase-ui-auth:3.1.2', {
    exclude group: 'Android.Arch.lifecycle', module: 'extensions'
    exclude group: 'com.Android.support', module: 'design'
}
implementation 'com.romandanylyk:pageindicatorview:1.0.0', {
    exclude group: 'com.Android.support', module: 'support-core-ui'
}

Je suis entré dans le problème de cycle de vie après l'ajout/suppression de dépendances. Un autre SO post suggère que deux versions différentes de la bibliothèque ont été incluses. J'ai donc mis à jour le fichier de sortie à l'étape 1 et vérifié:

+--- 'com.google.firebase:firebase-core:11.8.0'
|    +--- 'Android.Arch.lifecycle:runtime:1.1.0' 

+--- 'com.firebaseui:firebase-ui-auth:3.1.2'
|    +--- 'Android.Arch.lifecycle:extensions:1.0.0'

En excluant Android.Arch.lifecycle:extensions qui résout le problème de compilation.

6
John Pang

Exécuter ceci pour voir les dépendances de l'application

gradlew -q :app:dependencies > dependencies.txt

Il produira un grand arbre, où:

  • (*) est utilisé pour indiquer qu'une dépendance particulière est décrite ailleurs dans l'arborescence.
  • -> (flèche) est utilisé pour pointer la dépendance que gagne en conflit de version. Par défaut, gradle choisit la version la plus récente.

Sortie:

+--- com.Android.support:design:26.1.0
|    +--- com.Android.support:support-v4:26.1.0 (*)
|    +--- com.Android.support:appcompat-v7:26.1.0 -> 27.1.1 (*)
|    +--- com.Android.support:recyclerview-v7:26.1.0 (*)
|    \--- com.Android.support:transition:26.1.0
|         +--- com.Android.support:support-annotations:26.1.0 -> 27.1.1
|         \--- com.Android.support:support-v4:26.1.0 (*)

Dans mon cas, j'ai trouvé que com.Android.support:design:26.1.0 Dépendait de com.Android.support:appcompat-v7:26.1.0 -> 27.1.1 (*), qui est passé à 27.1.1 au lieu de 26.1.0.

Solution Force la version 26.1.0 en déclarant dans le dégradé compile ("com.Android.support:appcompat-v7:26.1.0") { force = true }

Références

5
pumnao
implementation 'com.Android.support:appcompat-v7:27.0.0'
implementation 'com.Android.support:support-v4:27.0.0'
implementation 'com.Android.support:design:27.0.0'
implementation 'com.Android.support.constraint:constraint-layout:1.1.3'
implementation 'com.intuit.sdp:sdp-Android:1.0.4'
implementation 'com.Android.volley:volley:1.1.1'
implementation 'com.Android.support:cardview-v7:27.0.0'
implementation 'com.Android.support:recyclerview-v7:27.0.0'
0
sanjay sawan