Ошибка: конфликт с зависимостью "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 и не могу найти, что это за ошибка. Как мне это исправить?
Ответы
Ответ 1
В приложении build.gradle
добавьте следующее:
android {
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
}
}
Enforces Gradle, чтобы компилировать только номер версии, который вы указываете для всех зависимостей, независимо от того, какой номер версии указанными зависимостями.
Ответ 2
Это связано с эспрессо. Вы можете добавить следующие приложения в свои приложения build.grade
, чтобы уменьшить это.
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2') {
exclude group: 'com.google.code.findbugs'
}
Ответ 3
МЕТОД 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'
...
}
Ответ 4
Из Gradle Руководство пользователя плагина:
При тестировании контрольно-измерительных приборов оба основных APK и APK теста используют один и тот же путь к классам. Конструкция Gradle завершится неудачей, если основной APK и тестовый APK используют одну и ту же библиотеку (например, Guava), но в разных версиях. Если Gradle не понял этого, ваше приложение может вести себя по-разному во время тестов и во время обычного запуска (включая сбой в одном из случаев).
Чтобы сделать сборку успешной, просто убедитесь, что оба APK используют одну и ту же версию. Если ошибка связана с косвенной зависимостью (библиотека, которую вы не указали в своем build.gradle), просто добавьте зависимость для более новой версии к конфигурации
Добавьте эту строку в ваши зависимости build.gradle, чтобы использовать более новую версию для обеих APK:
compile('com.google.code.findbugs:jsr305:2.0.1')
В дальнейшем обратитесь к консоли Gradle, и она предложит полезную ссылку рядом с ошибкой, чтобы помочь с любыми ошибками сборки Gradle.
Ответ 5
Причина, по которой это происходит, заключается в том, что зависимость diff зависит от версии lib of diff.
Итак, для решения этой проблемы есть 3 шага или (1 шаг).
первый
Добавить
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:2.0.1'
}
в ваш build.gradle
файл в android {...}
второй
Открыть терминал в андроид-студии
выполните команду ./gradlew -q app:dependencies
.
третий
Нажмите Clean Project
в строке меню андроид-студии в списке Build
.
Он перестроит проект, а затем
remove
на первом шаге.
Возможно, вам нужно просто выполнить второй шаг. Я не могу откат при возникновении ошибки.
Попробуйте.
Ответ 6
Когда я добавил 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'
})
Ответ 7
Проблема, как указано в ваших журналах, - это 2 зависимости, которые пытаются использовать разные версии третьей зависимости.
Добавьте в файл app- gradle одно из следующих:
androidTestCompile 'com.google.code.findbugs:jsr305:2.0.1'
androidTestCompile 'com.google.code.findbugs:jsr305:1.3.9'
Ответ 8
Добавьте это в зависимости от силы, используя последнюю версию библиотеки findbugs:
compile 'com.google.code.findbugs:jsr305:2.0.1'
Ответ 9
-
Принятый ответ является одним из способов устранения проблемы, поскольку он просто применит некоторую стратегию для проблемной зависимости (com.google.code.findbugs: jsr305), и она решит проблему вокруг проекта, используя некоторые версии этой зависимости. В основном это приведет к выравниванию версий этой библиотеки внутри всего проекта.
-
Существует ответ от @Santhosh (и пары других людей), который предлагает исключить ту же зависимость для эспрессо, которая должна работать одинаково, но если у проекта есть другие зависимости, которые зависят от той же библиотеки (com.google.code.findbugs: jsr305), снова у нас будет такая же проблема. Поэтому, чтобы использовать этот подход, вам нужно будет исключить одну и ту же группу из всех зависимостей проекта, которые зависят от com.google.code.findbugs: jsr305. Я лично обнаружил, что Espresso Contrib и Espresso Intents также используют com.google.code.findbugs: jsr305.
Я надеюсь, что эти мысли помогут кому-то понять, что именно происходит здесь и как все работает (а не просто скопировать какой-то код):).
Ответ 10
удалить espresso-зависимости в файле gradle для меня.
удалите эти строки в файле app gradle:
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
Ответ 11
В проекте ': app' вы можете добавить следующее в файл app/build.gradle:
android {
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
}
}
Ответ 12
Я пытался использовать отправку 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'
}
Ответ 13
Те, кто получает ту же ошибку в Android 3.0.1, могут устранить ее, просто обновив версии compileSdkVersion и targetSdkVersion до 27, а также внедрив com.android.support:appcompat-v7:27.1.1 'в зависимости.
Ответ 14
РЕАГИРУЙТЕ НАРОД
Если вы ищете нативное решение реагировать, то напишите этот фрагмент в ваш файл сборки gradle node_modules, например, firebase в моем случае.
android {
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.0'
}
}
Ответ 15
Для реакции-native-firebase добавление этого в app/build.gradle
зависимостей app/build.gradle
заставило меня работать:
implementation('com.squareup.okhttp3:okhttp:3.12.1') { force = true }
implementation('com.squareup.okio:okio:1.15.0') { force = true }
implementation('com.google.code.findbugs:jsr305:3.0.2') { force = true}