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 단계는 exclude
3 단계에서 선택한 사항을 차단 하는 지시문 을 추가하는 것입니다.
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 위를 사용했습니다.