Konflikt mit der Abhängigkeit 'com.android.support:support-annotations'. Die aufgelösten Versionen für App (23.1.0) und Test-App (23.0.1) unterscheiden sich


119

Beim Bauen erhalte ich folgenden Fehler:

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

Dies sind meine Gradle-Abhängigkeiten

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

Wie kann ich das beheben?


Ich kann Ihnen sagen, dass die 23.1.0-Abhängigkeit von der Appcompat-Bibliothek stammt, da dies die Annotations-Bibliothek enthält. Die 23.0.1 weiß ich nicht
Tim

Es funktioniert auch nicht, wenn ich appcompat zurück auf 23.0.1
barq

Ich habe gerade 23.1.0 durch 23.0.1 ersetzt, überall in Abhängigkeit, für mich gearbeitet.
Shahzad Afridi

Fügen Sie eine Anmerkungsabhängigkeit hinzu, die sich auf Ihren Versionsfehler bezieht. readyandroid.wordpress.com/…
Bereit Android

Oder könnte dies Ihnen helfen readyandroid.wordpress.com/…
Ready Android

Antworten:


208

Sie können die Anmerkungsbibliothek in Ihrem Test erzwingen, indem Sie:

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

Etwas wie das:

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

Eine andere Lösung besteht darin, dies in der Datei der obersten Ebene zu verwenden:

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

8
Diese Zeile war die Lösung: androidTestCompile 'com.android.support:support-annotations:23.1.0'
barq

4
Die Verwendung der Einstellung "configuration.all" hat bei mir funktioniert, jedoch nicht in der Datei auf Projektebene, die ich aus der obigen Antwort zunächst als "Datei auf oberster Ebene" interpretiert habe. Es war in der Datei
build.gradle

Wird dieser Konflikt ursprünglich durch Espresso verursacht?
IgorGanapolsky

ResolutionStrategy.force 'com.android.support:support-annotations:23.4.0' hilft mir nicht. Das Problem ist EspressoContribution für DatePicker, DrawerActions, RecyclerView usw. ('com.android.support.test.espresso : espresso-contrib: 2.2.2 ') {Modul ausschließen:' support-annotations 'Modul ausschließen:' support-v4 '}
Ewoks

3
Nur ein wichtiger Punkt, um zu verdeutlichen, dass wir build.gradleim Modul (App) Konfigurationen hinzufügen müssen , um das Problem zu beheben.
AADProgramming

69

Project Rebuild hat mein Problem gelöst.

In Android Studio in der Symbolleiste. Erstellen> Projekt neu erstellen.


25

Quelle: Codepfad - UI Testing mit Espresso

  1. Schließlich müssen wir die Espresso-Abhängigkeiten einbeziehen und den Testläufer in unserer App build.gradle festlegen:
// 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'
    }
}

Ich habe das zu meiner Gradle-Datei hinzugefügt und die Warnung ist verschwunden.

Wenn andere Abhängigkeiten als widersprüchlich eingestuft werden, z. B. Support-Annotationen, schließen Sie sie ebenfalls aus den androidTestCompile-Abhängigkeiten aus.


1
ohne die einzelnen androidtestcompile funktioniert für mich
Nantha Kumar

12

Sie können versuchen, zu verwenden

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

anstatt

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

Ich habe diesen Fehler erhalten

Fehler: Ausführung für Aufgabe ': app: preDebugAndroidTestBuild' fehlgeschlagen. Konflikt mit der Abhängigkeit 'com.android.support:support-annotations' im Projekt ': app'. Die aufgelösten Versionen für App (26.1.0) und Test-App (27.1.1) unterscheiden sich. Weitere Informationen finden Sie unter https://d.android.com/r/tools/test-apk-dependency-conflicts.html .

Ich hatte folgende Abhängigkeiten in meiner build.gradle- Datei unter 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'
}

Also habe ich es gelöst, indem ich die folgenden Abhängigkeiten kommentiert habe

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'

Meine Abhängigkeiten sehen also so aus

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

Ich hoffe es hilft!


1
Sie haben also die Testbibliotheken entfernt? Dies ist nicht sehr hilfreich, wenn Sie diese Bibliotheken benötigen.
Hosen

4

Ich habe heute den gleichen Fehler erhalten:

Fehler: Ausführung für Aufgabe ': app: preDebugAndroidTestBuild' fehlgeschlagen.> Konflikt mit der Abhängigkeit 'com.android.support:support-annotations' im Projekt ': app'. Die aufgelösten Versionen für App (26.1.0) und Test-App (27.1.1) unterscheiden sich.

Was ich getan habe:

  • Ich habe einfach alle meine Abhängigkeiten auf 27.1.1anstatt aktualisiert26.1.0
  • Auch aktualisiert meine compileSdkVersion 27und targetSdkVersion 27die waren 26früher

Und der com.android.support:support-annotationsFehler war weg!

Für Ref:

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

In meinem Fall habe ich den folgenden Code in Abhängigkeiten von build.gradle auf App-Ebene hinzugefügt

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

Danach bereinige ich das Projekt und baue es neu auf. Mein Problem ist gelöst.


0

Ändern Sie die build.gradle-Dateien auf Anwendungsebene:

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

zu

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

0

Versuche dies :

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'
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.