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?

barq
quelle
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'
}
Gabriele Mariotti
quelle
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.

Sushanth Kille
quelle
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.

rexxar
quelle
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'
Jingsong Yang
quelle
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!

Shahbaz Ali
quelle
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'
}
Rohit Sharma
quelle
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.

Mohammed Nishar
quelle
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'
Chetu
quelle
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'
}
Hanisha
quelle