it-swarm.com.de

Warnung: Konflikt mit der Abhängigkeit 'com.Android.support:support-annotations'

Ich habe fast jeden Trick im Buch ausprobiert. 

  • ResolutionStrategy.force
  • Ohne Module

Aber nichts scheint zu funktionieren, unten ist mein build.gradle. Ich verwende Gradle Version 1.2.3. Kann jemand bitte ein Licht auf das werfen, was sonst mit meinem Code falsch sein könnte. 

Das einzige, was ich noch nicht ausprobiert habe, ist die veränderte Version von Gradle .. Es ist ein sehr einfacher Espresso-Testfall. Vielen Dank!

apply plugin: 'com.Android.application'
Android {
    configurations.all {
        resolutionStrategy.force 'com.Android.support:support-annotations:22.1.0'
    }
    compileSdkVersion 22
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.example.rasika.job"
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidUnitRunner"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}
repositories {
    mavenCentral()
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.Android.support:appcompat-v7:22.1.1'

    testCompile 'junit:junit:4.12'

    androidTestCompile 'com.Android.support.test:runner:0.3'
    androidTestCompile 'com.Android.support.test:rules:0.3'
    androidTestCompile 'com.Android.support.test.espresso:espresso-core:2.2'
    androidTestCompile 'com.Android.support.test.uiautomator:uiautomator-v18:2.1.1'
    androidTestCompile 'com.Android.support.test.espresso:espresso-contrib:2.0'
}
37
Mabad

Ich habe Android-topeka google sample gegliedert und/und die appcompat-Version auf 23.1.0 aktualisiert. Dieselbe Nachricht:

Warnung: Konflikt mit der Abhängigkeit "com.Android.support:support-annotations". Behobene Versionen für app (23.1.0) und Test-App (23.0.1) unterscheiden sich.

Ich fügte hinzu:

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

Beide lösen sich jetzt auf 23.1.0 auf, die Warnung ist weg und die App und die Tests funktionieren weiterhin.

Ich bin nicht sicher, ob dies die bessere Lösung ist, also suche ich nach einer anderen, aber ich habe Ihre Frage gefunden. 

Update: Lies diese gute Erklärung von PaulR .

Update2: bestätigt, Google-Beispiel für Android-Tests macht es.

// Testing-only dependencies
// 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.0.1'

Update3: Eine weitere gute Antwort von CommonsWare .

Überprüfen Sie Ihre spezifischen Versionen/Konflikte/Lösungen mit:

./gradlew -q yourmodule:dependencies

 enter image description here

Appcompat ist in Ihrem Fall 22.1.1, aber Sie erzwingen 22.1.0.

Update4: Abhängigkeitskonflikt erklärt unter Das Android Build System (Android Dev Summit 2015) .

 enter image description here

Lösen von Konflikten zwischen Haupt- und Test-APK

Wenn Instrumentationstests ausgeführt werden, werden sowohl der Haupt-APK als auch der Test-APK Teilen Sie denselben Klassenpfad. Gradle Build schlägt fehl, wenn die Haupt-APK und Die Test-APK verwenden dieselbe Bibliothek (z. B. Guava), jedoch in unterschiedlichen Versionen. Wenn Gradle das nicht verstanden hat, könnte sich Ihre App verhalten während Tests und während des normalen Laufs unterschiedlich (einschließlich Absturz in einem der Fälle).

Damit der Build erfolgreich verläuft, stellen Sie sicher, dass beide APKs dieselbe .__ verwenden. Ausführung. Wenn es sich bei dem Fehler um eine indirekte Abhängigkeit handelt (eine Bibliothek, die Sie in Ihrem build.gradle nicht erwähnt haben), fügen Sie eine Abhängigkeit für die .__ hinzu. neuere Version der Konfiguration ("compile" oder "androidTestCompile") das braucht es. Sie können auch die Auflösungsstrategie von Gradle verwenden Mechanismus. Sie können den Abhängigkeitsbaum überprüfen, indem Sie ./gradlew.__ ausführen. : app: Abhängigkeiten und ./gradlew: app: androidDependencies.

52
albodelu

Ich löste den Konflikt, indem ich Abhängigkeit hinzufügte:

androidTestCompile 'com.Android.support:support-annotations:23.2.0'
26
Andrey

Ich hatte das gleiche Problem, das hier gelöst wurde:

// build.gradle
...
Android {
    ...
    defaultConfig {
        ...
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
    }
}

dependencies {
    ...
    androidTestCompile('com.Android.support.test.espresso:espresso-core: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.3') {
        // Necessary if your app targets Marshmallow (since the test runner
        // hasn't moved to Marshmallow yet)
        exclude group: 'com.Android.support', module: 'support-annotations'
    }
}

die Lösung wurde hier gefunden: https://github.com/codepath/Android_guides/wiki/UI-Testing-with-Espresso

UPDATE: Schließlich blockiert der Abhängigkeitenblock in meinem build.gradle wie folgt:

dependencies {
    ...        
    compile 'com.Android.support:appcompat-v7:23.2.1'
    compile 'com.Android.support:support-v4:23.2.1'
    compile 'com.Android.support:design:23.2.1'
    ...     

    // Necessary if your app targets Marshmallow (since Espresso
    // hasn't moved to Marshmallow yet)
    androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2') {
        exclude group: 'com.Android.support'
    }
    androidTestCompile('com.Android.support.test.espresso:espresso-intents:2.2.2') {
        exclude group: 'com.Android.support'
    }
    androidTestCompile('com.Android.support.test:runner:0.5') {
        exclude group: 'com.Android.support'
    }
    androidTestCompile('com.Android.support.test:rules:0.5') {
        exclude group: 'com.Android.support'
    }
    androidTestCompile('com.Android.support.test.espresso:espresso-contrib:2.2.2') {
        exclude group: 'com.Android.support'
    }
    androidTestCompile('com.Android.support:support-annotations:23.2.1') {
        exclude group: 'com.Android.support'
    }
    androidTestCompile('com.Android.support.test.uiautomator:uiautomator-v18:2.1.2') {
        exclude group: 'com.Android.support'
    }
}
15
Dmitry

Dies ist mir in letzter Zeit beim Hinzufügen des Uiautomators passiert. Um dieses Problem zu beheben, müssen Sie herausfinden, welche Abhängigkeit oder Abhängigkeiten das veraltete Modul verwenden. Sie können dies tun, indem Sie jede androidTestCompile - Abhängigkeit in einen Block einschließen, wie dies z.

androidTestCompile ('com.Android.support.test.espresso:espresso-core:2.2') {
    transitive = false;
}

Dies könnte brechen jedoch einige andere Dinge, so dass Sie vorsichtig sein müssen. Ich konnte genau herausfinden, welche zwei Abhängigkeiten dieses Problem für mich verursacht haben, und diesen Blockierungsmechanismus einfach hinzugefügt.

7
Phil

Ich habe den Konflikt gelöst, indem ich die Support-Annotation-Bibliothek sowohl von den Läufer- als auch den Espresso-Core-Abhängigkeiten ausgeschlossen habe:

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

Fügen Sie dies Ihrem Hauptbuild.gradle hinzu:

allprojects {
    ...
    configurations.all {
        resolutionStrategy.force 'com.Android.support:support-annotations:23.1.1'
    }
    ...
}
3
Sid

Fügen Sie Ihrem Abhängigkeitsblock in der Datei build.gradle Follow-Codes hinzu

compile 'com.Android.support:support-annotations:23.2.1'
testCompile 'com.Android.support:support-annotations:23.2.1'
androidTestCompile 'com.Android.support:support-annotations:23.2.1'
3
TeeTracker

Ich löste den Konflikt, indem ich Abhängigkeit hinzufügte: 

compile 'com.Android.support:appcompat-v7:23.2.1'
 compile 'com.Android.support:design:23.2.1'
...
 androidTestCompile 'com.Android.support:support-annotations:23.2.1'
1
ayac3j

Für mich hat das gut funktioniert 

dependencies {

    androidTestCompile 'com.Android.support:support-annotations:23.1.1'
}
1
erluxman

androidTestCompile Änderung in test Compile. Und erinnern Sie sich nicht daran, es zum Kompilieren zu ändern, brauchen Sie nur diese Abhängigkeiten in unsere Debug-APK oder Test-APK zu kompilieren.

1
Rocko

Ich löste den Konflikt, indem ich Abhängigkeit hinzufügte:

androidTestCompile "com.Android.support:support-annotations:26.0.0-beta1"
0
Devix

In kam auch das Problem zu Wort 

Konnte nicht aufgelöst werden 

com.Android.support:support-annotations:23.1.0

und versuchte auf anderen Servern zu finden,

Was aber mein Problem gelöst hat, ist folgendes hinzufügen:

google-service.json 

datei von 

https://developers.google.com/mobile/add

und kopiere es und füge es in ein 

YourAndroidProject/app 

Dann kompilieren Sie es neu und ich hoffe, dass Ihr Code fliegt 

0
erluxman

Verwenden Sie dies zur Konfliktlösung

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