종속성 '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.

이것은 내 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'
}

이 문제를 어떻게 해결할 수 있습니까?


23.1.0 종속성은 주석 lib를 포함하기 때문에 appcompat lib에서 온다는 것을 알 수 있습니다. 내가 모르는 23.0.1

내가 23.0.1에 APPCOMPAT 다시 전환 할 경우 중 하나가 작동하지 않습니다
barq

나는 23.1.0을 23.0.1로 대체했고, 모든 의존성이 나를 위해 일했습니다.
Shahzad Afridi

버전 오류와 관련된 주석 종속성을 추가하십시오. readyandroid.wordpress.com/…
준비된 Android

아니면 이것이 당신 에게
Ready 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
configuration.all 설정의 사용은 저에게 효과적이지만 프로젝트 수준 파일에서는 작동하지 않았습니다. 처음에는 위의 응답에서 "최상위 수준 파일"로 해석했습니다. 모듈 수준의 build.gradle 파일에
있었습니다

이 충돌이 원래 Espresso로 인한 것인가요?
IgorGanapolsky

resolutionStrategy.force 'com.android.support:support-annotations:23.4.0'은 나에게 도움이되지 않습니다 .. 문제는 DatePicker, DrawerActions, RecyclerView 등에 대한 EspressoContribution입니다. ( 'com.android.support.test.espresso : espresso-contrib : 2.2.2 ') {exclude module :'support-annotations 'exclude module :'support-v4 '}
Ewoks

3
한 가지 중요한 점 은 문제를 해결하기 위해 module (app) 내부 build.gradle에 settings.all {resolutionStrategy.force 'com.android.support:support-annotations:23.1.0'}을 추가해야한다는 점을 분명히하는 것 입니다.
AADProgramming

69

Project Rebuild가 내 문제를 해결했습니다.

툴바의 Android 스튜디오에서 .. Build> Rebuild Project.


25

출처 : CodePath-Espresso를 사용한 UI 테스트

  1. 마지막으로 Espresso 종속성을 가져 와서 앱 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 쿠마

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'작업에 대한 실행이 실패했습니다. 프로젝트 ': app'의 종속성 'com.android.support:support-annotations'와 충돌합니다. 앱 (26.1.0) 및 테스트 앱 (27.1.1)의 해결 된 버전이 다릅니다. 자세한 내용은 https://d.android.com/r/tools/test-apk-dependency-conflicts.html 을 참조하십시오.

Gradle Scripts의 build.gradle 파일에 다음 종속성이 있습니다.

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
그래서 테스트 라이브러리를 제거 했습니까? 이러한 라이브러리가 필요한 경우에는별로 도움이되지 않습니다.
Pants

4

오늘 같은 오류가 발생했습니다.

Error : Execution failed for task ': app : preDebugAndroidTestBuild'.> 프로젝트 ': app'의 종속성 'com.android.support:support-annotations'와 충돌합니다. 앱 (26.1.0) 및 테스트 앱 (27.1.1)의 해결 된 버전이 다릅니다.

제가 한:

  • 난 그저 내 모든 종속성을 업데이트 27.1.1하는 대신26.1.0
  • 또한, 내 업데이트 compileSdkVersion 27targetSdkVersion 2726이전

그리고 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.