Конфликт с зависимостью com.android.support:support-annotations. Разрешенные версии приложения (23.1.0) и тестового приложения (23.0.1) отличаются


119

При сборке я получаю следующую ошибку:

Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (23.1.0) and test app (23.0.1) differ.

Это мои зависимости от Gradle

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:support-v4:23.1.0'
    compile 'com.android.support:appcompat-v7:23.1.0'
    compile 'com.android.support:design:23.1.0'
    compile 'com.android.support:cardview-v7:23.1.0'
    compile 'com.android.support:recyclerview-v7:23.1.0'
    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'com.squareup.okhttp:okhttp:2.4.0'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.jakewharton:butterknife:7.0.1'
    compile 'com.squareup:otto:1.3.8'
    compile 'com.snappydb:snappydb-lib:0.5.2'
    compile 'com.esotericsoftware.kryo:kryo:2.24.0'
    compile 'com.google.dagger:dagger:2.0.1'
    apt 'com.google.dagger:dagger-compiler:2.0.1'
    compile 'javax.annotation:javax.annotation-api:1.2'
    compile 'io.reactivex:rxandroid:1.0.1'
    compile 'io.reactivex:rxjava:1.0.14'
    compile 'com.google.android.gms:play-services-location:8.1.0'
    compile 'com.google.android.gms:play-services-gcm:8.1.0'
    compile 'org.apache.commons:commons-lang3:3.4'
    testCompile 'junit:junit:4.12'
    testCompile 'org.hamcrest:hamcrest-library:1.3'
    testCompile 'org.mockito:mockito-core:1.10.19'
    androidTestCompile 'com.android.support.test:runner:0.4'
    androidTestCompile 'com.android.support.test:rules:0.4'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
    androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2.1'
    androidTestCompile 'com.android.support.test.espresso:espresso-web:2.2.1'
    debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
    releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
}

Как я могу это исправить?


Я могу сказать вам, что зависимость 23.1.0 исходит от appcompat lib, потому что она включает аннотации lib. 23.0.1 Я не знаю
Тим

Это тоже не сработает, если я переключу appcompat обратно на 23.0.1
barq

Я просто заменил 23.1.0 на 23.0.1, везде в зависимости, у меня сработало.
Шахзад Африди

Добавьте зависимость аннотации, связанную с ошибкой вашей версии. readyandroid.wordpress.com/…
Готовый Android

Или это может вам помочь readyandroid.wordpress.com/…
Готовый Android

Ответы:


208

Вы можете принудительно использовать библиотеку аннотаций в своем тесте, используя:

androidTestCompile 'com.android.support:support-annotations:23.1.0'

Что-то вроде этого:

  // Force usage of support annotations in the test app, since it is internally used by the runner module.
  androidTestCompile 'com.android.support:support-annotations:23.1.0'
  androidTestCompile 'com.android.support.test:runner:0.4.1'
  androidTestCompile 'com.android.support.test:rules:0.4.1'
  androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
  androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2.1'
  androidTestCompile 'com.android.support.test.espresso:espresso-web:2.2.1'

Другое решение - использовать это в файле верхнего уровня:

configurations.all {
    resolutionStrategy.force 'com.android.support:support-annotations:23.1.0'
}

8
Эта строка была решением: androidTestCompile 'com.android.support:support-annotations:23.1.0'
barq

4
У меня сработало использование параметра configurations.all, но не в файле уровня проекта, который я изначально интерпретировал как «файл верхнего уровня» из приведенного выше ответа. Это было в файле
build.gradle

Причиной этого конфликта является эспрессо?
Игорь Ганапольский

ResolutionStrategy.force 'com.android.support:support-annotations:23.4.0' мне не помогает .. проблема в EspressoContribution для DatePicker, DrawerActions, RecyclerView и т. д. ('com.android.support.test.espresso : espresso-contrib: 2.2.2 ') {exclude module:' support-annotations 'exclude module:' support-v4 '}
Эвоки,

3
Только один важный момент, чтобы понять , что нам нужно добавить configurations.all { «com.android.support:support-annotations:23.1.0» resolutionStrategy.force} внутри build.gradleэтого модуля (приложение) , чтобы исправить эту проблему.
AADProgramming 05

69

Project Rebuild решил мою проблему.

В Android studio на панели инструментов .. Build> Rebuild Project.


25

Источник: CodePath - Тестирование пользовательского интерфейса с помощью эспрессо

  1. Наконец, нам нужно получить зависимости Espresso и установить средство запуска тестов в нашем приложении build.gradle:
// build.gradle
...
android {
    ...
    defaultConfig {
        ...
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
}

dependencies {
    ...
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2') {
        // Necessary if your app targets Marshmallow (since Espresso
        // hasn't moved to Marshmallow yet)
        exclude group: 'com.android.support', module: 'support-annotations'
    }
    androidTestCompile('com.android.support.test:runner:0.5') {
        // Necessary if your app targets Marshmallow (since the test runner
        // hasn't moved to Marshmallow yet)
        exclude group: 'com.android.support', module: 'support-annotations'
    }
}

Я добавил это в свой файл gradle, и предупреждение исчезло.

Кроме того, если у вас есть какая-либо другая зависимость, указанная как конфликтующая, например поддержка-аннотации, попробуйте также исключить ее из зависимостей androidTestCompile.


1
за исключением отдельного androidtestcompile, работает для меня
Нанта Кумар

12

вы можете попробовать использовать

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

вместо того

androidTestCompile 'com.android.support.test:runner:0.4.1'

androidTestCompile 'com.android.support.test:rules:0.4.1'

androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.2.1'

6

Я получал эту ошибку

Ошибка: не удалось выполнить задачу ': app: preDebugAndroidTestBuild'. Конфликт с зависимостью com.android.support:support-annotations в проекте: app. Разрешенные версии приложения (26.1.0) и тестового приложения (27.1.1) различаются. Подробности см. На https://d.android.com/r/tools/test-apk-dependency-conflicts.html .

У меня были следующие зависимости в моем файле build.gradle в разделе Gradle Scripts

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:support-v4:26.1.0'
implementation 'com.android.support:support-vector-drawable:26.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

Итак, я решил это, прокомментировав следующие зависимости

testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

Итак, мои зависимости выглядят так

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:support-v4:26.1.0'
implementation 'com.android.support:support-vector-drawable:26.1.0'
//testImplementation 'junit:junit:4.12'
//androidTestImplementation 'com.android.support.test:runner:1.0.2'
//androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

Надеюсь, поможет!


1
Итак, вы удалили библиотеки тестирования? Это не очень полезно, если вам нужны эти библиотеки.
Штаны

4

Сегодня у меня была такая же ошибка:

Ошибка: не удалось выполнить задачу ': app: preDebugAndroidTestBuild'.> Конфликт с зависимостью 'com.android.support:support-annotations' в проекте ': app'. Разрешенные версии приложения (26.1.0) и тестового приложения (27.1.1) различаются.

Что я сделал:

  • Я просто обновил все свои зависимости 27.1.1вместо26.1.0
  • Также обновил мои compileSdkVersion 27и targetSdkVersion 27которые 26раньше были

И com.android.support:support-annotationsошибка исчезла!

Для ссылки:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    implementation 'com.android.support:design:27.1.1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

1

В моем случае я добавил ниже код в зависимости от уровня приложения build.gradle

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

После этого очищаю проект и перестраиваю, проблема решена.


0

Измените файл build.gradle на уровне приложения:

implementation 'com.android.support:appcompat-v7:23.1.0'

в

 implementation 'com.android.support:appcompat-v7:23.0.1'

0

Попробуй это :

apply plugin: 'com.android.application'

android {
compileSdkVersion 27
defaultConfig {
    applicationId "com.example.yourpackagename"
    minSdkVersion 15
    targetSdkVersion 27
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.