프로그래밍 언어/Android

[오류] All com.android.support libraries must use the exact same version specification

Rateye 2021. 9. 15. 10:46
728x90
반응형
질문 : 모든 com.android.support 라이브러리는 정확히 동일한 버전 사양을 사용해야합니다.

android studio 2.3으로 업데이트 한 후 이 오류 메시지가 나타납니다. 앱이 정상적으로 실행되기 때문에 힌트 일 뿐이라는 것을 알고 있지만 정말 이상합니다.

모든 com.android.support 라이브러리는 정확히 동일한 버전 사양을 사용해야합니다 (버전을 혼합하면 런타임 충돌이 발생할 수 있음). 25.1.1, 24.0.0 버전을 찾았습니다. 예로는 com.android.support:animated-vector-drawable:25.1.1 및 com.android.support:mediarouter-v7:24.0.0이 있습니다.

여기에 이미지 설명 입력

내 gradle :

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    testCompile 'junit:junit:4.12'

    compile 'com.android.support:appcompat-v7:25.1.1'
    compile 'com.android.support:support-v4:25.1.1'
    compile 'com.android.support:design:25.1.1'
    compile 'com.android.support:recyclerview-v7:25.1.1'
    compile 'com.android.support:cardview-v7:25.1.1'
    compile 'com.google.android.gms:play-services-maps:10.2.0'
    compile 'com.google.android.gms:play-services:10.2.0'

    compile 'io.reactivex.rxjava2:rxjava:2.0.1'
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'com.jakewharton:butterknife:8.4.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
    compile 'com.blankj:utilcode:1.3.6'
    compile 'com.orhanobut:logger:1.15'
    compile 'com.facebook.stetho:stetho:1.4.2'

    provided 'com.google.auto.value:auto-value:1.2'
    annotationProcessor 'com.google.auto.value:auto-value:1.2'
    annotationProcessor 'com.ryanharter.auto.value:auto-value-parcel:0.2.5'

    compile 'com.mikepenz:iconics-core:2.8.2@aar'
    compile('com.mikepenz:materialdrawer:5.8.1@aar') { transitive = true }
    compile 'com.mikepenz:google-material-typeface:2.2.0.3.original@aar'
    compile 'me.zhanghai.android.materialprogressbar:library:1.3.0'
    compile 'com.github.GrenderG:Toasty:1.1.1'
    compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.8.0'
    compile 'com.github.MAXDeliveryNG:slideview:1.0.0'

    compile 'com.facebook.fresco:fresco:1.0.1'
    compile 'com.github.bumptech.glide:glide:3.7.0'

    compile 'com.google.maps.android:android-maps-utils:0.4.4'
    compile 'com.github.jd-alexander:library:1.1.0'
}
답변

다음 솔루션 중 하나로이 문제를 해결할 수 있습니다.

Android 스튜디오 3.0부터는 더 유용한 힌트를 보여 주므로 훨씬 쉬워 지므로이 힌트 만 따라 가면됩니다.
예를 들면 :

1]

모든 com.android.support 라이브러리는 정확히 동일한 버전 사양을 사용해야합니다 (버전을 혼합하면 런타임 충돌이 발생할 수 있음). 27.0.2, 26.1.0 버전을 찾았습니다. 예를 들면 com.android.support:animated-vector-drawable:27.0.2 및 com.android.support:customtabs:26.1.0이 있습니다.

호환되지 않거나 버그로 이어질 수있는 라이브러리 또는 도구 및 라이브러리의 일부 조합이 있습니다. 이러한 비 호환성 중 하나는 최신 버전 (또는 특히 targetSdkVersion보다 낮은 버전)이 아닌 Android 지원 라이브러리 버전으로 컴파일하는 것입니다.

해결책:
이전 버전을 사용하지만 새 버전 번호를 사용하여 라이브러리를 명시 적으로 추가합니다.
제 경우에는 com.android.support:customtabs:26.1.0 이므로 다음을 추가해야합니다.

implementation "com.android.support:customtabs:27.0.2"

즉 : 두 번째 항목에서 라이브러리를 가져 와서 첫 번째 항목의 버전 번호로 구현합니다.

참고 : gradle이 종속성 그래프를 다시 빌드하고 충돌이 더 있는지 확인할 수 있도록 지금 동기화를 누르는 것을 잊지 마십시오.

설명:
customtabs 사용하지 않기 때문에 오류 메시지가 혼란 스러울 수 있으므로 충돌이 발생합니다!
글쎄 .. 직접 사용하지는 않았지만 라이브러리 중 하나가 customtabs 을 사용하므로 직접 요청해야합니다.

어떤 라이브러리가 이전 버전을 담당하고 있는지 궁금하고 작성자에게 자신의 lib를 업데이트하도록 요청할 수 있습니다. Gradle 종속성 보고서 실행 방법을 알아 보려면 이전 답변을 참조하십시오.

참고


예전 답변:

CommonsWare 답변에서 영감을 얻었습니다.

Gradle 종속성 보고서를 실행하여 전체 종속성 트리가 무엇인지 확인하십시오.

여기에서 다른 버전의 Android 지원 라이브러리를 요청하는 라이브러리를 확인할 수 있습니다. 무엇을 요청하든 25.2.0 버전으로 직접 요청하거나 Gradle의 다른 충돌 해결 방법을 사용하여 동일한 버전을 얻을 수 있습니다.


수정:

gradle 플러그인 버전 기준 : 3.0 compile implementation 또는 api 로 대체되었습니다. 이 답변 을 참조하십시오.

따라서 대신 사용하십시오.

./gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

또는 Windows cmd의 경우 :

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

충돌하는 버전을 검색하십시오.

com.google.android.gms:play-services:10.2.0 제거한 후 오류가 사라졌습니다.

그리고 com.google.android.gms:play-services-location:10.2.0com.google.android.gms:play-services-maps:10.2.0 만 포함하십시오. 내가 사용하는 유일한 두 가지 플레이 서비스이기 때문입니다.

gms:play-services 는 지원 라이브러리의 일부 오래된 구성 요소에 의존하므로 명시 적으로 직접 추가해야합니다.


AS 3.0 이상.

운영:

./gradlew -q dependencies <module-name>:dependencies --configuration implementation

예:

./gradlew -q dependencies app:dependencies --configuration implementation

누군가가 새로운 gradle 플러그인에서 더 나은 방법을 알고 있다면 알려주십시오.

출처 : https://stackoverflow.com/questions/42374151/all-com-android-support-libraries-must-use-the-exact-same-version-specification
728x90
반응형