Конфлікт із залежністю '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.

Це мої залежності від граду

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 походить від lib appcompat, тому що вона включає в себе пояснення приміток. 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 на рівні модуля
OYRM

Чи спочатку цей конфлікт спричинений Еспресо?
ІгорГанапольський

resolutionStrategy.force 'com.android.support:support-annotations:23.4.0' не допомагає мені .. проблема полягає в EspressoContribution for DatePicker, DrawerActions, RecyclerView тощо. ('com.android.support.test.espresso : espresso-contrib: 2.2.2 ') {виключити модуль:' support-annotations 'виключити модуль:' support-v4 '}
Ewoks

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

69

Проект Відновлення вирішив мою проблему.

В студії Android на панелі інструментів .. Збірка> Відновлення проекту.


25

Джерело: CodePath - Тестування інтерфейсу користувача за допомогою Еспресо

  1. Нарешті, нам потрібно застосувати залежності від Еспресо та встановити тестовий бігун у нашому додатку 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 для мене
Nantha kumar

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' у проекті ': додаток'. Вирішені версії програми (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.