앱 (22.0.0) 및 테스트 앱 (21.0.3)의 해결 된 버전이 다릅니다.


179

API 22로 업그레이드하고 lib 개정판 22를 지원하면 다음 경고가 표시됩니다.

경고 : 종속성 'com.android.support:support-annotations'와 충돌합니다. 앱 (22.0.0) 및 테스트 앱 (21.0.3)의 해결 된 버전이 다릅니다.

Gradle 자체는 더 관대하지만 Android Studio는 그리 많지 않습니다.

21.0.3으로 선언 된 종속성이 없습니다 ... 21.0.3을 사용하는 종속 라이브러리 중 하나이며 Google은 나머지 배치로 업데이트하는 것을 잊었습니까?

build.gradle엑스트라와 함께 내 잘라

android {
  compileSdkVersion 22
  buildToolsVersion '22'

  defaultConfig {
    applicationId "com.REDACTED.android"
    minSdkVersion 14
    targetSdkVersion 22
    renderscriptSupportModeEnabled true
    versionName '1.0.0'
    versionCode 100
  }

  buildTypes {
    release {
      minifyEnabled true
      zipAlignEnabled true
      signingConfig signingConfigs.release
    }

    debug {
      minifyEnabled false
      zipAlignEnabled true
      signingConfig signingConfigs.debug
    }
  }

  dependencies {
    provided 'org.projectlombok:lombok:1.16.2'
    googleCompile 'com.google.android.gms:play-services-base:6.5.87'
    compile 'com.android.support:support-v4:22.0.0'
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile 'com.android.support:support-v13:22.0.0'
    compile 'com.android.support:cardview-v7:22.0.0'
    compile 'com.android.support:palette-v7:22.0.0'
    compile 'com.android.support:support-annotations:22.0.0'
    compile 'com.github.chrisbanes.photoview:library:1.2.3'
    compile 'org.apache.commons:commons-lang3:3.3.2'
    compile 'commons-io:commons-io:2.4'
    compile 'commons-codec:commons-codec:1.10'
    compile 'com.jakewharton:butterknife:6.1.0'
    compile 'com.jakewharton:disklrucache:2.0.2'
    compile 'com.squareup:otto:1.3.6'
    compile 'com.squareup.picasso:picasso:2.5.0'
    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'com.squareup.okhttp:okhttp:2.2.0'
    compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
    compile 'com.squareup.okio:okio:1.2.0'
    compile 'com.flaviofaria:kenburnsview:1.0.6'
    compile 'com.edmodo:cropper:1.0.1'
    compile 'com.getbase:floatingactionbutton:1.8.0'
    compile 'com.nispok:snackbar:2.10.2'
    compile 'com.github.ksoichiro:android-observablescrollview:1.5.0'
    compile 'in.srain.cube:grid-view-with-header-footer:1.0.9'
    compile 'de.hdodenhof:circleimageview:1.2.2'
    compile fileTree(dir: 'libs', include: '*.jar')
    // Test Only Dependencies
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
    androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
    androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.0'
  }

업데이트 : (감사 표시)

에스프레소 contrib 인 것 같습니다

+--- com.android.support.test:testing-support-lib:0.1 (*)
\--- com.android.support.test.espresso:espresso-contrib:2.0
     +--- com.android.support:recyclerview-v7:21.0.3
     |    +--- com.android.support:support-annotations:21.0.3
     |    \--- com.android.support:support-v4:21.0.3
     |         \--- com.android.support:support-annotations:21.0.3
     +--- com.android.support:support-v4:21.0.3 (*)
     \--- com.android.support.test.espresso:espresso-core:2.0 (*)

5
Gradle dependencies작업은 범인을 식별하는 데 도움이 될 수 있습니다. gradle.org/docs/current/userguide/…
CommonsWare

1
고마워 마크. 그것은 espresso-contrib원인 인 것 같습니다 ...
copolii

2
당신은 시도 할 수 exclude21.0.3의 버전을 차단하기 위해 recyclerview-v7그들이 충분히 호환되는지, 풀 22.0.0 버전의 자신에 대한, 그리고기도를 espresso-contrib의 필요. 개인적으로, 나는 당신이 그 긴 의존성 목록으로 당신의 정신을 유지하고 있다는 것에 놀랐습니다 ... :-)
CommonsWare

1
네. 이 트릭을했다. 대답으로 그것을 넣으면 나는 당신에게 콩을 줄 것입니다 :) androidTestCompile ( 'com.android.support.test.espresso : espresso-contrib : 2.0') {모듈 제외 : 'support-annotations'}
copolii

1
내 동일한 문제는 간단한 안드로이드 스튜디오 재시작으로 해결되었습니다 :)
Lakhwinder Singh Dhillon

답변:


286

이러한 종류의 문제를 처리 할 때 1 단계는 명령 줄 Gradle에 익숙해지는 것입니다.

2 단계 는 Gradle 종속성 보고서 를 실행 하는 것입니다 (예 : gradle -q app:dependencies프로젝트 루트에서). 그러면 질문 업데이트에 표시된대로 ASCII 트리가 제공되며 충돌하는 아티팩트 버전을 요구하는 내용을 식별하는 데 도움이됩니다.

3 단계는 교체해야 할 사항을 결정하는 것입니다. 갈등 ( support-annotations) 만 교체하기로 선택했습니다 . 개인적으로, 나는 잘못된 버전 트리의 루트 ( recyclerview-v7)를 가지고 갔지만,이 경우에는 최선의 조치가 아닐 수도 있습니다.

4 단계는 exclude3 단계에서 선택한 사항을 차단 하는 지시문 을 추가하는 것입니다.

androidTestCompile ('com.android.support.test.espresso:espresso-contrib:2.0') {
    exclude module: 'support-annotations'
}

5 단계는이 변화에서 지옥을 테스트하는 것입니다. 당신이하고있는 것은 그 말하는 espresso-contrib 의 22.0.0 버전을 다루는 support-annotations. 작동 할 수 있습니다. 그렇지 않을 수도 있습니다. 충돌의 이전 버전과의 호환성에 달려 있습니다. 이 경우 support-annotations그것에 대해 꽤 잘해야합니다.

6 단계는 선택한 음료를 해당 지역 및 시간대에 맞는 음료를 소비하는 것입니다.


4
내가 사용하는 exclude group: 'com.android.support', module: 'support-annotations' 버전이 Gradle을에서 "할 수 없습니다 인수 형식 추론"경고 제기 이후
appoll

2
Works ... 또한 이것을 com.android.support.test : runner : 0.3, com.android.support.test : rules : 0.3 및 com.android.support.test.espresso : espresso-core : 2.2
uudashr

4 단계에서 androidTestCompile 지시문을 어디에 추가합니까? 해당 구문을 내 앱의 종속성 블록에 추가하려고하면 구문 오류가 발생합니다. 이것이 지금 작성되었으므로 추가 위치를 정확하게 말하기는 약간 어렵습니다.
OYRM

1
@OYRM : "어떻게 androidTestCompile 지시어를 추가하고 있습니까?" -안으로 dependencies. Chiu-Ki Chan 의이 샘플 을 보십시오 .
CommonsWare

16
6 단계가 여기에 있습니다
Odaym

146

내가 해결 한 것은 build.gradle 스크립트에 아래 줄을 추가하는 것이 었습니다.

androidTestCompile 'com.android.support:support-annotations:xx.x.x'

바꾸다 xx.x.x 앱 사용 지원 - 주석의 어떤 버전 - 이것은 의존성에 표시하거나, Gradle을 동기화 메시지로됩니다 Resolved version for app (xx.x.x)문제 동기화가 있어야한다.


와. 나는 업그레이드를 위해 이것을 Junit하지만 완전히 다른 의존성에도 사용할 수 있습니다.
Jared Burrows

10
이것은 실제로 구글 샘플 하는 방법입니다. "테스트 모듈에서 지원 주석을 강제로 사용합니다.이 주석은 내부적으로 러너 모듈에 의해 사용되기 때문입니다."
desseim

이것이 저에게 가장 좋은 대답이었습니다. 참고 : '23 .1.1 '로 업데이트해야합니다.androidTestCompile 'com.android.support:support-annotations:23.1.1'
David Manpearl

고마워, 내 경우에는 라인이 이미 있었지만 충돌 버전을 명시 적으로 명시하고 필요한 것으로 업데이트했으며 모든 것이 매력처럼 작동했습니다.
RAM237

이것을 build.gradle에 추가하는 방법?
ubuntu_noob

58

실제로 그것은 Espresso Contrib의 새로운 업데이트 버전의 버그입니다.이 해결 방법을 참조 할 수 있습니다 : android-testing / build.gradle

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

2
이것은 내 문제였다. 티켓이 여기에 있습니다 .
theblang

3
이것은 @RenanNery의 솔루션이 더 낫다는 경고를 만듭니다
Diego Palomar

작동하지 않습니다. 그래도 여전히 충돌 오류가 발생합니다.androidTestCompile 'com.android.support.test:runner:0.5'
IgorGanapolsky

1
@bony-링크가 끊어짐
Mushtaq Jameel

이것은 나를 위해 일했습니다. 나는이 블록을 "android {testOptions {<here>}}"에
넣었다

23

https://github.com/JakeWharton/u2020/blob/05a57bf43b9b61f16d32cbe8717af77cd608b0fb/build.gradle#L136-L140을 참조 하십시오

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

이것은 내 문제를 해결했습니다.

또는 Windows에서 gradlew를 실행하고 mac / linux의 경우 ./gradlew를 실행하면 필요할 때 종속성을 다운로드합니다.


1
이것은 오늘 (2018-11-10)에도 도움이되었지만 버전 26.1.1과 함께 버전 27.1.1과의 충돌을 피했습니다.
JB Rainsberger

8

나는 또한 appcompat 와 관련된 다른 충돌뿐만 아니라이 문제에 부딪쳤다. 그리고 내가 찾은 해결책은 테스트 컴파일을 추가하고 현재 사용중인 SDK로 설정하는 것이었다. 제 경우에는 25이므로 다음과 같습니다.

androidTestCompile 'com.android.support:support-annotations:25.+'
androidTestCompile 'com.android.support:appcompat-v7:25.+'
androidTestCompile 'com.android.support:support-v4:25.+'
androidTestCompile 'com.android.support:recyclerview-v7:25.+'
androidTestCompile 'com.android.support:design:25.+'

또한 보시다시피 Android Material Design과 관련된 디자인 종속성을 추가했습니다.

그것이 도움이되기를 바랍니다 =)


8

sdkversion 25 용

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

3

Windows에서 gradlew를 실행하고 mac / linux의 경우 ./gradlew를 실행하면 필요할 때 종속성이 다운로드됩니다.

라이브러리 중 하나가 지원 주석에 종속되어 있는지 또는 오류가있는 라이브러리가 있는지 확인하고 아래와 같이 gradle에서 제외하려고 시도하십시오.

compile ( "org.apache.maven : maven-ant-tasks : $ {mavenAntTaskVer} ‌" "{그룹 제외 : 'junit'}

오류 : 'junit : junit'종속성과 충돌합니다. 앱 (3.8.1) 및 테스트 앱 (4.12)의 해결 된 버전이 다릅니다. 자세한 내용은 g.co/androidstudio/app-test-app-conflict를 참조하십시오.

이것은 내가 겪고있는 오류 였으므로 문제를 해결하기 위해 gradle line 위를 사용했습니다.


이것은 이와 같은 문제를 해결하는 정말 좋은 방법으로 보입니다. 또한 프로젝트 루트 디렉토리 에서이 ./gradlew : app : dependencies 명령 행 을 실행하면 프로젝트의 종속성에 대한 트리를 만들고 신중하게 검사 한 다음 충돌 위치를 찾을 수 있습니다.
frank jorsn

2

build.gradle 파일에서 다음 줄을 삭제하면됩니다.

androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

그런 식으로 작동하지 않습니다. 프로젝트에 더 많은 오류가 발생합니다

0

이것은 여기에 언급 된 계측 테스트에서 일반적으로 발생하는 문제이며 build.gradle 내에 androidTestCompile에 대한 종속성을 추가하여 간단히 해결할 수 있습니다. 필자의 경우 appcompat, recyclerview 및 디자인 종속성에서 충돌이 발생했습니다. 그리고 다음 줄을 추가하여 해결

    androidTestCompile 'com.android.support:appcompat-v7:23.4.0'
    androidTestCompile 'com.android.support:recyclerview-v7:23.4.0'
    androidTestCompile 'com.android.support:design:23.4.0'

0

26.0.0 및 27.1.1에서 동일한 문제가 발생했으며 실제로 이전 버전을 나중에 업그레이드하면 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.