Ошибка: конфликт с зависимостью "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}