Konflikt z zależnością „com.android.support:support-annotations”. Rozwiązane wersje aplikacji (23.1.0) i aplikacji testowej (23.0.1) różnią się


119

Podczas budowania pojawia się następujący błąd:

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

To są moje zależności od 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'
}

Jak mogę to naprawić?


Mogę powiedzieć, że zależność 23.1.0 pochodzi z biblioteki appcompat, ponieważ zawiera ona bibliotekę adnotacji. 23.0.1 Nie wiem
Tim

To również nie działa, jeśli przełączę appcompat z powrotem na 23.0.1
barq

Właśnie zamieniłem 23.1.0 na 23.0.1, wszędzie w zależności, działało dla mnie.
Shahzad Afridi

Dodaj zależność adnotacji związaną z błędem wersji. readyandroid.wordpress.com/…
Gotowy Android

Odpowiedzi:


208

Możesz wymusić bibliotekę adnotacji w swoim teście za pomocą:

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

Coś takiego:

  // 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'

Innym rozwiązaniem jest użycie tego w pliku najwyższego poziomu:

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

8
Rozwiązaniem była ta linia: androidTestCompile 'com.android.support:support-annotations:23.1.0'
barq

4
Użycie ustawienia configuration.all zadziałało dla mnie, ale nie w pliku na poziomie projektu, co początkowo zinterpretowałem jako „plik najwyższego poziomu” z powyższej odpowiedzi. Znajdował się w pliku build.gradle na poziomie modułu
OYRM

Czy ten konflikt jest pierwotnie spowodowany przez Espresso?
Igor Ganapolsky

resolutionStrategy.force 'com.android.support:support-annotations:23.4.0' nie pomaga mi .. problem to EspressoContribution for DatePicker, DrawerActions, RecyclerView, etc .. ('com.android.support.test.espresso : espresso-contrib: 2.2.2 ') {exclude module:' support-annotations 'exclude module:' support-v4 '}
Ewoks

3
Tylko jeden ważny punkt, aby było jasne, że musimy dodać configuration.all {resolutionStrategy.force 'com.android.support:support-annotations:23.1.0'} build.gradledo modułu (aplikacji), aby naprawić problem.
AADProgramming,

69

Projekt Rebuild rozwiązał mój problem.

W Android Studio na pasku narzędzi .. Kompiluj> Przebuduj projekt.


25

Źródło: CodePath - testowanie interfejsu użytkownika za pomocą espresso

  1. Na koniec musimy pobrać zależności Espresso i ustawić program uruchamiający testy w naszej aplikacji 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'
    }
}

Dodałem to do mojego pliku gradle i ostrzeżenie zniknęło.

Ponadto, jeśli pojawi się jakakolwiek inna zależność wymieniona jako konfliktowa, taka jak adnotacje pomocnicze, spróbuj ją również wykluczyć z zależności androidTestCompile.


1
wyłączając indywidualny androidtestcompile działa dla mnie
Nantha kumar

12

możesz spróbować użyć

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

zamiast

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

Otrzymałem ten błąd

Błąd: nie powiodło się wykonanie zadania „: app: preDebugAndroidTestBuild”. Konflikt z zależnością „com.android.support:support-annotations” w projekcie „: app”. Rozwiązane wersje aplikacji (26.1.0) i aplikacji testowej (27.1.1) różnią się. Szczegółowe informacje można znaleźć pod adresem https://d.android.com/r/tools/test-apk-dependency-conflicts.html .

Miałem następujące zależności w moim pliku build.gradle w sekcji 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'
}

Więc rozwiązałem to, komentując następujące zależności

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'

Więc moje zależności wyglądają tak

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'
}

Mam nadzieję, że to pomoże!


1
Więc usunąłeś biblioteki testowe? Nie jest to zbyt pomocne, jeśli potrzebujesz tych bibliotek.
Spodnie

4

Dzisiaj otrzymywałem ten sam błąd:

Błąd: nie można wykonać zadania „: app: preDebugAndroidTestBuild”.> Konflikt z zależnością „com.android.support:support-annotations” w projekcie „: app”. Rozwiązane wersje aplikacji (26.1.0) i aplikacji testowej (27.1.1) różnią się.

Co ja zrobiłem:

  • Po prostu zaktualizowałem wszystkie moje zależności do 27.1.1zamiast26.1.0
  • Ponadto zaktualizowałem moje compileSdkVersion 27i targetSdkVersion 27które były 26wcześniej

I com.android.support:support-annotationszniknął błąd!

Do odwołania:

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

W moim przypadku dodałem poniższy kod w zależnościach build.gradle na poziomie aplikacji

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

Następnie oczyszczam projekt i przebudowuję, mój problem rozwiązany.


0

Zmień plik build.gradle na poziomie aplikacji:

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

do

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

0

Spróbuj tego :

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'
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.