57 votes

commons-logging définit les classes en conflit avec les classes maintenant fournies par Android après la mise à jour Android Studio

J'ai mis à jour d'Android Studio à la version 3 et semble désormais impossible de compiler mon projet a été compilé sans erreurs.

Le message d'erreur est le suivre

Erreur:Erreur: commons-logging de définir des classes qui sont en conflit avec les classes fournies par Android. Les Solutions d'inclure la recherche de nouveaux versions ou d'autres bibliothèques qui n'ont pas le même problème (par exemple, pour httpclient utilisation HttpUrlConnection ou okhttp au lieu de cela), ou le reconditionnement de la bibliothèque en utilisant quelque chose comme jarjar. [DuplicatePlatformClasses]

Les dépendances sont

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:27.0.0'
    compile 'com.android.support:design:27.0.0'
    compile 'com.google.api-client:google-api-client-android:1.23.0' exclude module: 'httpclient'
    compile 'com.google.http-client:google-http-client-gson:1.23.0' exclude module: 'httpclient'
    compile 'com.google.firebase:firebase-core:11.4.2'
}

et l'erreur semble causée par

compile 'com.google.api-client:google-api-client-android:1.23.0' exclude module: 'httpclient'
compile 'com.google.http-client:google-http-client-gson:1.23.0' exclude module: 'httpclient'

J'ai déjà utiliser exclude module: 'httpclient' Alors pourquoi Cela ne compile pas? Est-ce un bug d'Android Studio 3 et\ou incluses com.android.tools.build:gradle:3.0.0 plugin ou je suis absent quelque chose? Avec la version précédente, pas de problème pour compiler exactement le même projet.

69voto

Silverstorm Points 2397

Ajouter à build.gradle situé dans le module d'application

 configurations {
    all {
        exclude module: 'httpclient'
    }
}
 

43voto

srs Points 1715

Si le problème vient de la journalisation commune, il faut aussi l'exclure. Ajoutez le code suivant dans app / build.gradle

 configurations {
    all {
        exclude module: 'httpclient'
        exclude module: 'commons-logging'
    }
}
 

10voto

Raja Peela Points 638

Vous avez le même problème. J'ai fait ci-dessous des changements

  configurations {
    all{
        exclude group: 'commons-logging', module: 'commons-logging'
        exclude group: 'org.apache.httpcomponents'
    }
}


packagingOptions {
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/NOTICE'
    exclude 'org/apache/http/version.properties'
    exclude 'org/apache/http/client/version.properties'
}
 

8voto

Sergio Viudes Points 191

Exécuter dans un terminal, dans le dossier du projet:

 ./gradlew app:dependencies > dependencies.txt
 

Ensuite, vérifiez le fichier dependencies.txt pour savoir qui utilise des dépendances conflictuelles et agissez en conséquence (recherchez les mises à jour, éliminez-les ou utilisez la méthode exclude comme suggéré par @Silverstorm).

8voto

khammami Points 167

Vous devez remplacer "compiler" par "implémentation" car il est déconseillé dans la dernière version et exclure "org.apache.httpcomponents" des bibliothèques clientes de Google api:

 implementation('com.google.api-client:google-api-client-android:1.23.0') {
    exclude group: 'org.apache.httpcomponents'
}
implementation('com.google.http-client:google-http-client-gson:1.23.0') {
    exclude group: 'org.apache.httpcomponents'
}
 

cette solution a été trouvée ici: https://developers.google.com/google-apps/activity/v1/quickstart/android

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X