앱 (22.0.0) 및 테스트 앱 (21.0.3)의 해결 된 버전이 다릅니다. 21.0.3을 사용하는 종속 라이브러리 중 하나이며

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 (*)


답변

이러한 종류의 문제를 처리 할 때 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 단계는 선택한 음료를 해당 지역 및 시간대에 맞는 음료를 소비하는 것입니다.


답변

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

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

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


답변

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

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

답변

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를 실행하면 필요할 때 종속성을 다운로드합니다.


답변

나는 또한 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과 관련된 디자인 종속성을 추가했습니다.

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


답변

sdkversion 25 용

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

답변

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 위를 사용했습니다.