ขัดแย้งกับการพึ่งพา '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 นั้นมาจาก appcompat lib เพราะมันมีคำอธิบายประกอบ lib 23.0.1 ฉันไม่รู้
ทิม

มันใช้ไม่ได้เช่นกันถ้าฉันเปลี่ยน appcompat กลับเป็น 23.0.1
barq

ฉันเพิ่งเปลี่ยน 23.1.0 ด้วย 23.0.1 ทุกที่ในการพึ่งพาได้ผลสำหรับฉัน
Shahzad Afridi

เพิ่มการอ้างอิงคำอธิบายประกอบที่เกี่ยวข้องกับข้อผิดพลาดเวอร์ชันของคุณ 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
การใช้การกำหนดค่าการตั้งค่าทั้งหมดใช้ได้ผลสำหรับฉัน แต่ไม่ได้อยู่ในไฟล์ระดับโปรเจ็กต์ซึ่งเป็นสิ่งที่ฉันตีความในตอนแรกว่าเป็น "ไฟล์ระดับบนสุด" จากคำตอบด้านบน มันอยู่ในไฟล์ build.gradle ระดับโมดูล
OYRM

ความขัดแย้งนี้เกิดจาก Espresso แต่เดิมหรือไม่?
IgorGanapolsky

resolutionStrategy.force 'com.android.support:support-annotations:23.4.0' ไม่ช่วยฉัน .. ปัญหาคือ EspressoContribution สำหรับ DatePicker, DrawerActions, RecyclerView เป็นต้น .. ('com.android.support.test.espresso : espresso-Contrib: 2.2.2 ') {exclude module:' support-annotations 'exclude module:' support-v4 '}
Ewoks

3
เพียงแค่จุดหนึ่งที่สำคัญที่จะทำให้มันชัดเจนว่าเราต้องเพิ่ม configurations.all {resolutionStrategy.force 'com.android.support:support-annotations:23.1.0'} ภายในbuild.gradleของโมดูล (app)เพื่อแก้ไขปัญหา
AADProgramming

69

Project Rebuild ช่วยแก้ปัญหาของฉันได้

ในสตูดิโอ Android ในแถบเครื่องมือ .. สร้าง> สร้างโครงการใหม่


25

ที่มา: CodePath - การทดสอบ UI ด้วย Espresso

  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' ในโครงการ ': app' เวอร์ชันที่แก้ไขแล้วสำหรับแอป (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'
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.