J’ai créé un nouveau projet dans Android Studio 2.2 Preview 1 avec l’application Android et le module Backend avec Google Messaging. Ceci est le fichier d’application:
apply plugin: 'com.android.application' android { comstackSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "com.xxx.xxx" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { comstack fileTree(dir: 'libs', include: ['*.jar']) comstack 'com.android.support:appcompat-v7:23.4.0' comstack 'com.android.support.constraint:constraint-layout:1.0.0-alpha1' comstack 'com.google.android.gms:play-services-gcm:9.0.0' testComstack 'junit:junit:4.12' androidTestComstack 'com.android.support.test.espresso:espresso-core:2.2.2' androidTestComstack 'com.android.support.test:runner:0.5' androidTestComstack 'com.android.support:support-annotations:23.4.0' comstack project(path: ':backend', configuration: 'android-endpoints') }
Mais ça donne:
Erreur: conflit avec la dépendance ‘com.google.code.findbugs: jsr305’. Les versions résolues pour l’application (1.3.9) et l’application de test (2.0.1) diffèrent. Voir http://g.co/androidstudio/app-test-app-conflict pour plus de détails.
Je suis nouveau sur Android et incapable de trouver quelle est cette erreur. Comment je le répare?
Dans build.gradle
votre application, ajoutez ce qui suit:
android { configurations.all { resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9' } }
Force Gradle à comstackr uniquement le numéro de version que vous indiquez pour toutes les dépendances, quel que soit le numéro de version indiqué par les dépendances.
Ceci est dû à l’espresso. Vous pouvez append les éléments suivants à vos apps build.grade
pour atténuer ce build.grade
.
androidTestComstack('com.android.support.test.espresso:espresso-core:2.2.2') { exclude group: 'com.google.code.findbugs' }
MÉTHODE 1: J’ai supprimé androidTestComstack sur la ligne espresso-core qui était automatiquement incluse dans un nouveau projet. Ensuite, mon Android Studio comstack proprement.
Le fichier androidTestComstack est dans “build.gradle (Module: app)”:
dependencies { ... androidTestComstack('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) ... }
Je ne sais pas si cette suppression aura un problème sur la route, mais cela fonctionne sûrement pour mon projet actuel maintenant.
MÉTHODE 2: Ajouter une exclusion sur findbugs fonctionne également:
dependencies { ... androidTestComstack('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' exclude group: 'com.google.code.findbugs' }) ... }
MÉTHODE 3: Forcer la compilation avec une version spécifique:
(Dans ce qui suit, je le force à comstackr avec la version supérieure.)
dependencies { ... androidTestComstack 'com.google.code.findbugs:jsr305:3.0.0' ... }
À partir du guide d’utilisation du plugin Gradle :
Lorsque les tests d’instrumentation sont exécutés, l’APK principal et l’AP de test partagent le même chemin de classe. Gradle build échouera si l’AP principal et l’APK de test utilisent la même bibliothèque (par exemple Guava) mais dans des versions différentes. Si gradle ne l’a pas compris, votre application pourrait se comporter différemment pendant les tests et lors d’une exécution normale (y compris lors d’une panne dans l’un des cas).
Pour que la construction réussisse, assurez-vous simplement que les deux APK utilisent la même version. Si l’erreur concerne une dépendance indirecte (une bibliothèque que vous n’avez pas mentionnée dans votre build.gradle), ajoutez simplement une dépendance pour la nouvelle version à la configuration.
Ajoutez cette ligne à vos dépendances build.gradle pour utiliser une version plus récente pour les deux APK:
comstack('com.google.code.findbugs:jsr305:2.0.1')
Pour référence future, vous pouvez vérifier votre console Gradle et cela vous fournira un lien utile à côté de l’erreur pour vous aider avec les erreurs de construction graduelles.
Lorsque j’ai ajouté le module: 'jsr305'
tant que déclaration d’exclusion supplémentaire, tout s’est bien passé pour moi.
androidTestComstack('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' exclude module: 'jsr305'
})
Le problème, comme indiqué dans vos journaux, est 2 dépendances qui tentent d’utiliser différentes versions de la 3ème dépendance. Ajoutez l’un des éléments suivants au fichier d’application:
androidTestComstack 'com.google.code.findbugs:jsr305:2.0.1' androidTestComstack 'com.google.code.findbugs:jsr305:1.3.9'
La raison pour laquelle cela se produit est que la dépendance diff utilise la même version de lib de diff.
Donc, il y a 3 étapes ou (1 étape) pour résoudre ce problème.
Ajouter
configurations.all { resolutionStrategy.force 'com.google.code.findbugs:jsr305:2.0.1' }
à votre fichier build.gradle
dans android {...}
Terminal ouvert dans le studio Android
Exécuter ./gradlew -q app:dependencies
commande de ./gradlew -q app:dependencies
.
Cliquez sur Clean Project
dans la barre de menus du studio Android dans la liste Build
.
Il reconstruira le projet, puis remove
code à la première étape.
Peut-être que vous avez juste besoin d’exécuter la 2ème étape. Je ne peux pas revenir en arrière en cas d’erreur. Essaye.
Ajoutez ceci à des dépendances pour forcer en utilisant la dernière version de la bibliothèque findbugs:
comstack 'com.google.code.findbugs:jsr305:2.0.1'
La réponse acceptée est une façon de résoudre le problème, car elle ne ferait qu’appliquer une stratégie pour la dépendance problématique (com.google.code.findbugs: jsr305) et résoudrait le problème du projet en utilisant une version de cette dépendance. Fondamentalement, il alignera les versions de cette bibliothèque dans tout le projet.
Il y a une réponse de @Santhosh (et quelques autres personnes) qui suggèrent d’exclure la même dépendance pour l’espresso, qui devrait fonctionner de la même manière, mais si le projet a d’autres dépendances qui dépendent de la même bibliothèque (com.google .code.findbugs: jsr305), encore une fois, nous aurons le même problème. Donc, pour utiliser cette approche, vous devrez exclure le même groupe de toutes les dépendances de projet, qui dépendent de com.google.code.findbugs: jsr305. Personnellement, j’ai constaté que Espresso Consortingb et Espresso Intents utilisaient également com.google.code.findbugs: jsr305.
J’espère que ces pensées aideront quelqu’un à comprendre ce qui se passe exactement ici et comment les choses fonctionnent (pas seulement copier du code) 🙂
supprimer les dépendances expresso dans le fichier gradle fonctionne pour moi.
supprimer ces lignes dans le fichier de gradation de l’application:
androidTestComstack('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' })
J’essayais d’utiliser airbnb deeplink dispatch et obtenu cette erreur. Je devais également exclure le groupe findbugs de l’annotationProcessor.
//airBnb comstack ('com.airbnb:deeplinkdispatch:3.1.1'){ exclude group:'com.google.code.findbugs' } annotationProcessor ('com.airbnb:deeplinkdispatch-processor:3.1.1'){ exclude group:'com.google.code.findbugs' }
Ceux qui obtiennent la même erreur dans Android 3.0.1 peuvent le résoudre en mettant simplement à jour les versions de comstackSdkVersion et targetSdkVersion à 27 et en implémentant également com.android.support:appcompat-v7:27.1.1 ‘dans les dépendances .