Ошибка: конфликт с зависимостью «com.google.code.findbugs: jsr305»

Я создал новый проект в Android Studio 2.2 Preview 1 с модулем Android App и Backend с помощью Google Messaging. Это файл приложения

apply plugin: 'com.android.application' android { compileSdkVersion 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 { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha1' compile 'com.google.android.gms:play-services-gcm:9.0.0' testCompile 'junit:junit:4.12' androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' androidTestCompile 'com.android.support.test:runner:0.5' androidTestCompile 'com.android.support:support-annotations:23.4.0' compile project(path: ':backend', configuration: 'android-endpoints') } 

Но его предоставление

Ошибка: конфликт с зависимостью «com.google.code.findbugs: jsr305». Разрешенные версии для приложения (1.3.9) и тестового приложения (2.0.1) отличаются. Подробнее см. Http://g.co/androidstudio/app-test-app-conflict .

Я новичок в android и не могу найти, что это за ошибка.

В build.gradle вашего приложения добавьте следующее:

 android { configurations.all { resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9' } } 

Enforces Gradle только для того, чтобы компилировать номер версии, который вы указываете для всех зависимостей, независимо от того, какой номер версии указанными зависимостями.

Это связано с эспрессо. Вы можете добавить следующее в свои приложения build.grade чтобы уменьшить это.

 androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2') { exclude group: 'com.google.code.findbugs' } 

МЕТОД 1: я удалил androidTestCompile на эспрессо-ядро, которое автоматически включалось в новый проект. Тогда мой Android Studio компилируется чистым.

AndroidTestCompile находится в "build.gradle (Module: app)":

 dependencies { ... androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) ... } 

Я не знаю, будет ли это удаление иметь какие-либо проблемы в будущем, но он, безусловно, работает для моего текущего проекта.

МЕТОД 2: добавление исключений в findbugs также работает:

 dependencies { ... androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' exclude group: 'com.google.code.findbugs' }) ... } 

МЕТОД 3: Формирование компиляции с определенной версией:

(В следующем я заставляю его компилироваться с более высокой версией.)

 dependencies { ... androidTestCompile 'com.google.code.findbugs:jsr305:3.0.0' ... } 

Руководство пользователя плагина Gradle :

Когда проводятся контрольные тесты, оба основных APK и APK теста используют один и тот же путь к классам. Gradle build не сработает, если основной APK и тестовый APK используют одну и ту же библиотеку (например, Guava), но в разных версиях. Если град не поймал это, ваше приложение может вести себя по-разному во время тестов и во время обычного запуска (включая сбой в одном из случаев).

Чтобы сделать сборку успешной, просто убедитесь, что оба APK используют одну и ту же версию. Если ошибка связана с косвенной зависимостью (библиотека, которую вы не указали в своем build.gradle), просто добавьте зависимость для более новой версии к конфигурации

Добавьте эту строку в ваши зависимости build.gradle, чтобы использовать более новую версию для обеих APK:

compile('com.google.code.findbugs:jsr305:2.0.1')

Для дальнейшего использования вы можете проверить свою Gradle Console, и она предоставит полезную ссылку рядом с ошибкой, чтобы помочь с любыми ошибками построения градиента.

Когда я добавил module: 'jsr305' в качестве дополнительной инструкции exclude, все это сработало для меня.

  androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' exclude module: 'jsr305' 

})

Проблема, как указано в ваших журналах, – это 2 зависимости, которые пытаются использовать разные версии третьей зависимости. Добавьте один из следующих файлов в файл приложения:

 androidTestCompile 'com.google.code.findbugs:jsr305:2.0.1' androidTestCompile 'com.google.code.findbugs:jsr305:1.3.9' 

Добавьте это в зависимости от использования последней версии библиотеки findbugs:

 compile 'com.google.code.findbugs:jsr305:2.0.1' 

Причина, по которой это происходит, заключается в том, что зависимость diff зависит от версии lib diff.
Итак, для решения этой проблемы есть 3 шага или (1 шаг).

первый

Добавить

 configurations.all { resolutionStrategy.force 'com.google.code.findbugs:jsr305:2.0.1' } 

к вашему файлу build.gradle в android {...}

второй

Открытый терминал в студии Android
выполните ./gradlew -q app:dependencies .

третий

Нажмите « Clean Project строке меню студии Android в списке « Build .
Он перестроит проект, а затем remove код на первом шаге.

Возможно, вам нужно просто выполнить второй шаг. Я не могу откат при возникновении ошибки. Попробуй.

  1. Принятый ответ является одним из способов устранения проблемы, поскольку он просто применит некоторую стратегию для проблемной зависимости (com.google.code.findbugs: jsr305), и она разрешит проблему вокруг проекта, используя некоторую версию этой зависимости. В основном это приведет к выравниванию версий этой библиотеки внутри всего проекта.

  2. Существует ответ от @Santhosh (и пары других людей), который предлагает исключить ту же зависимость для эспрессо, которая должна работать одинаково, но если у проекта есть другие зависимости, которые зависят от одной и той же библиотеки (com.google .code.findbugs: jsr305), снова у нас будет такая же проблема. Поэтому, чтобы использовать этот подход, вам нужно будет исключить одну и ту же группу из всех зависимостей проекта, которые зависят от com.google.code.findbugs: jsr305. Я лично обнаружил, что Espresso Contrib и Espresso Intents также используют com.google.code.findbugs: jsr305.

Надеюсь, эти мысли помогут кому-то понять, что именно происходит здесь и как все работает (не просто скопировать вставку какого-то кода) :).

delete espresso зависимостей в файле gradle работает для меня.

удалите эти строки в файле приложения gradle:

 androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) 

Я пытался использовать отладку debplink airbnb и получил эту ошибку. я должен был также исключить группу findbugs из annotationProcessor.

 //airBnb compile ('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' }