모든 com.android.support 라이브러리는 정확히 동일한 버전 사양을 사용해야합니다


788

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'
}

이것을 projectBuild.Gradle 하위 프로젝트에 추가하십시오. {project.configurations.all {resolutionStrategy.eachDependency {details-> if (details.requested.group == 'com.android.support'&&! details.requested.name.contains ( 'multidex ')) {details.useVersion "26. +"}}}}
Sunil Chaudhary'8

답변:


906

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

최신 정보:

Android Studio 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이 있습니다.

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

솔루션 :
이전 버전이지만 새 버전 번호로 라이브러리를 명시 적으로 추가하십시오.
내 경우에는 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.0하고 com.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 플러그인에서 더 나은 방법을 알고 있다면 알려주십시오.


3
com.google.android.gms:play-services:10.2.0SDK 14 이상을 지원하는 경우, SDK 14 이하에서 사용하려면 stackoverflow.com/a/42315590/624849110.0.1
Sneh Pandya에서

2
@ humazed noob 질문, Android Studio에서 명령을 어디에서 실행합니까?
Haikal Nashuha

1
터미널에서, 그러나 먼저, 놀이 서비스를 시도하십시오
초에 humazed

1
이것이 광기라고 생각하는 유일한 사람입니까? 난 그냥 admob와 페이스 북을 원하고 그들은 함께 일하기를 거부합니다 ....
Jay

3
examples include오류 메시지 의 텍스트는 문제 유형의 일반적인 예가 아니라 자신의 프로젝트의 실제 예를 보여줍니다. 두 번째 항목에서 라이브러리를 가져 와서 첫 번째 버전 번호로 라이브러리를 구현하십시오.
Benjamin Kershner

203
  1. project/.idea/libraries파일 시스템의 폴더로 이동하여 어떤 라이브러리가 다른지 확인하십시오.
  2. build.gradle파일에 동일한 버전의 라이브러리를 수동으로 포함시켜야 합니다.
  3. 그런 다음 프로젝트를 동기화하십시오.

예 :

compile 'com.android.support:appcompat-v7:25.2.0'

// Wrong library version found on 1st point
compile 'com.android.support:customtabs:25.2.0'

좋은 지적. 나는 어느 것이 실제로 잘못되었는지를 생각해 본 적이 없다. : S 감사합니다!
Tobias Reich

gradle 자동 해결 방법이 도움이되지 않을 때 작동합니다.
Odaym

10
/ Project Files / My project / .idea / libraries에는 버전이 다른 여러 지원 파일이 있습니다. 이제 어떤 모듈 또는 종속성이 이것을 사용하고 있는지 어떻게 알 수 있습니까?
Satpal Yadav

2
@SatpalYadav 사용 가능한 최신 버전과 일치하지 않는 버전을 검색했습니다 (내 앱에서 사용함). 예를 들어 support : design : 25.3.1을 사용하지만 재질 대화 상자는 support-v13 : 25.1.1을 사용합니다. 따라서 support-v13 : 25.3.1을 추가하면 오류가 사라집니다.
hardysim

1
지금까지 가장 좋은 해결책이지만 새로운 라이브러리를 어떻게 재정의 할 수 있습니까?
Mateusz Kaflowski

149

이러한 버전이나 라이브러리뿐만 아니라 모든 경우에 :

오류에 대해 말하는 작은 정보 창에주의를 기울이십시오 . 변경하고 추가 해야하는 예제가 있습니다 .

이 경우 :

발견 된 버전 25.1.1, 24.0.0. 예를 들어 com.android.support:animated-vector-drawable:25.1.1 및 com.android.support:mediarouter-v7:24.0.0이 있습니다.

너의

com.android.support : 애니메이션 벡터 드로어 블 : 25.1.1

버전 25.1.1 이며

com.android.support : 미디어 라우터 -v7 : 24.0.0

버전이 24.0.0 이므로 동일한 버전의 미디어 라우터를 추가해야합니다.

com.android.support:mediarouter-v7:25.1.1

그리고 작은 정보 창에 표시된 모든 예제, 이 경우 버전 25.1.1이없는 모든 라이브러리에서이를 수행하십시오.

표시된 라이브러리를 수정 한 후 변경해야하는 다음 라이브러리 및 패키지를 보려면 gradle을 동기화해야합니다.

중대한:

하나 이상의 지정된 라이브러리를 명시 적으로 사용하지 않고 오류가 발생하는 경우 다른 라이브러리에서 내부적으로 사용되고 있음을 의미하며 어쨌든 명시 적으로 컴파일하십시오.

또 다른 방법을 사용하여 실제로 컴파일하는 모든 라이브러리 버전의 차이를 볼 수 있습니다 (예 : gradle 종속성 보고서를 실행하거나 라이브러리 파일로 이동) . 실제 목적은 사용중인 모든 라이브러리를 컴파일하는 것입니다 같은 버전 입니다.


1
고마워요, support:mediarouter정확히 무엇을 설명 할 수 있습니까?
mrid dec

1
나는 이것이 당신 대부분이 우리가 간과 한 것으로 지적한 것이라고 생각합니다. 그리고 "오류에 대해 말해주는 작은 정보창에주의를 기울이십시오." 감사합니다. 이제 실제로 무슨 일이 일어나고 있는지 더 잘 이해할 수있게되었습니다.
Yo Apps

103

문제를 해결하는 가장 좋은 방법은 Android Studio에서 제안한 모든 'com.android.support : ...'를 구현하는 것입니다.

(27.1.1, 28.0.0 등 사용중인 지원 버전은 중요하지 않습니다.)

커서를 오류 라인에 놓으십시오. 예 :

implementation 'com.android.support:appcompat-v7:28.0.0'

Android Studio는 'com.android.support : ...'가 'com.android.support:appcompat-v7:28.0.0'과 다른 버전을 제안합니다.

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

따라서 com.android.support:animated-vector-drawable:28.0.0 &를 추가하십시오 com.android.support:exifinterface:28.0.0. 이제 gradle 파일을 동기화하십시오.

이 줄에 오류가 없을 때까지 제안 된 모든 'com.android.support : ...'를 하나씩 구현하십시오. implementation 'com.android.support:appcompat-v7:28.0.0'

제 경우에는 추가했습니다

implementation 'com.android.support:appcompat-v7:28.0.0'

implementation 'com.android.support:animated-vector-drawable:28.0.0'
implementation 'com.android.support:exifinterface:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:customtabs:28.0.0'
implementation 'com.android.support:support-media-compat:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'

이러한 모든 종속성은 사용자마다 다를 수 있습니다.


"수행 'com.android.support:animated-vector-drawable:28.0.0'"및 "구현 'com.android.support:support-media-compat:28.0.0'"을 수동으로 추가했지만 "구현 ' com.android.support:appcompat-v7:28.0.0 ' "는 여전히 빨간색으로 밑줄이 쳐져 있습니다
AAEM

@AAEM 오류 행에 커서를 놓으면 다음에 추가해야 할 종속성이 표시됩니다. 모든 의존성을 동일한 버전에 추가하고 gradle 파일을 동기화하십시오. 오류가 다시 표시되면 오류가 없을 때까지 단계를 다시 수행하십시오.
Adarsh ​​Vijayan P 5

100

이것을 build.gradle (Module : app)의 맨 끝에 추가하십시오.

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == 'com.android.support') {
        if (!requested.name.startsWith("multidex")) {
            details.useVersion '25.3.1'
        }
     }

   }
}

'25 .3.1 '을 모든 종속성에 사용하려는 Android 지원 라이브러리 버전으로 바꾸십시오. 이는 호환 SDK 버전보다 낮아서는 안됩니다

재 동기화보다


3
이것이 내가 필요한 것입니다. 내 의존성 중 하나는 최상위 레벨에서 더 낮은 버전을 지정하더라도 27.0.1을 끌어 냈습니다. 호기심에서 "멀티 덱스"를 제외하는 이유는 무엇입니까?
ray

4
이것은 나를 위해 날을 구했습니다. 그러나이 안드로이드 개발은 점점 더 파편화되고 있습니다. 사람들은 모든 지원 라이브러리를 롤아웃하기 전에 완벽하게 확인해야합니다. 우리는 항상 새로운 지원 릴리스를 진행할 시간이 항상있는 것은 아닙니다. 우리는이 모든 과정을 거치지 않고 제품을 만드는 데 집중하고 싶어하기 때문입니다. 항상 실망스러워
larrytech

1
@ThinkTwiceCodeOnce 여기에서 그루비와 그 inteliji 플러그인에 대해 더 자세히 배울 수 있습니다 : jetbrains.com/help/idea/getting-started-started-with-groovy.html
ezzou

1
당신은 생명의 은인입니다. 여러 번 공언해야합니다!
imin

1
이것은 해결책이되어야합니다 ... 공개
Ast

54

Android Studio 2.3으로 업데이트 한 후 똑같은 문제가 발생했습니다.

이 줄을 종속성에 추가하면 문제가 해결되었습니다.

compile 'com.android.support:customtabs:25.2.0'

2
Plugie

1
RenderScript를 사용하는 사람이라면 renderscriptSupportModeEnabled false이것을 false로 설정 했습니다. 그리고 추가 컴파일 'com.android.support:customtabs:25.2.0'및 오류가 사라졌습니다.
법률 Gimenez

1
@LawGimenez 그리고 방금 렌더 스크립트를 비활성화 한 경우 어떻게해야합니까?
dor506

3
내 문제는 renderscript 때문이기도하지만 커스텀 탭이 아닌 다른 것을 위해 renderscript가 필요한 경우 어떻게해야합니까?
HendraWD

46

A) 달리기 gradle dependencies또는./gradlew dependencies

B) 당신의 나무를보고 당신이 통제하지 않는 의존성을 위해 다른 지원 라이브러리 버전을 지정하는 의존성을 알아 내십시오.

종속성이 자신의 코드에서 직접 사용되지 않는 경우이 경고도 표시된다는 것을 알지 못했습니다. 필자의 경우 Facebook은 내가 사용하지 않은 일부 지원 라이브러리를 지정합니다. 아래에서 대부분의 종속성이 -> XXX (*) 기호 로 표시되는 25.2.0의 자체 사양으로 재정의 된 것을 볼 수 있습니다 . 카드보기 및 사용자 정의 탭 라이브러리는 아무도 무시하지 않았으므로 사용하지 않더라도 직접 25.2.0을 요청해야합니다.

+--- com.facebook.android:facebook-android-sdk:4.17.0
|    +--- com.android.support:support-v4:25.0.0 -> 25.2.0 (*)
|    +--- com.android.support:appcompat-v7:25.0.0 -> 25.2.0 (*)
|    +--- com.android.support:cardview-v7:25.0.0
|    |    \--- com.android.support:support-annotations:25.0.0 -> 25.2.0
|    +--- com.android.support:customtabs:25.0.0
|    |    +--- com.android.support:support-compat:25.0.0 -> 25.2.0 (*)
|    |    \--- com.android.support:support-annotations:25.0.0 -> 25.2.0
|    \--- com.parse.bolts:bolts-android:1.4.0 (*)

gradle이 이미 경고하고 예제를 제공 한 경우 ...

예를 들어 com.android.support:animated-vector-drawable:25.1.1 및 com.android.support:mediarouter-v7:24.0.0이 있습니다.

... gradle dependencies매우 장황 할 수 있기 때문에 하위 버전에 대한 grep 강조 표시를 던지면 훨씬 쉽습니다 .

./gradlew dependencies | grep --color -E 'com.android.support:mediarouter-v7|$'

1
귀하의 설명에서 나는 XXX-> YYY (*)는 XXX가 YYY로 재정의되었음을 의미한다는 것을 이해합니다.
Mercury

말 그대로 유일한 대답입니다.
stef

32

변수 사용 : 다음과 같은 작업을 수행하면 모든 라이브러리에서 동일한 버전을 쉽게 사용할 수 있습니다.

dependencies {

    ext {
        support_library_version = '25.2.0'
        google_play_services_version = '10.2.0'
    }

    //#####################################################################
    //          Support Library
    //#####################################################################
    compile "com.android.support:appcompat-v7:${support_library_version}"
    compile "com.android.support:palette-v7:${support_library_version}"
    compile "com.android.support:design:${support_library_version}"

    //#####################################################################
    //          Google Play Services
    //#####################################################################
    compile "com.google.android.gms:play-services-auth:${google_play_services_version}"
    compile "com.google.android.gms:play-services-ads:${google_play_services_version}"
    compile "com.google.android.gms:play-services-analytics:${google_play_services_version}"

    //#####################################################################
    //          Firebase
    //#####################################################################
    compile "com.google.firebase:firebase-core:${google_play_services_version}"
    compile "com.google.firebase:firebase-auth:${google_play_services_version}"
    compile "com.google.firebase:firebase-messaging:${google_play_services_version}"

Google에서이 버전 관리를 처리하는 방법에 대한 자세한 내용은 다음 문서를 참조하십시오. https://developer.android.com/studio/build/index.html#top-level


Daniel F에게 감사합니다. 이것이 버전 혼합 문제를 피하는 가장 좋은 방법이라고 생각합니다.
Hovanes Mosoyan

2
단 한 가지 참고 사항 : 위 링크에서 제안한 바와 같이, 우리는이 레벨 변수를 TOP LEVEL GRADLE FILE에서 다시 정의해야합니다.)
Hovanes Mosoyan

25

이것을 추가하십시오 :

compile 'com.android.support:mediarouter-v7:25.2.0'

Updated 새로운 SDK 버전

compile 'com.android.support:mediarouter-v7:28.0.0-alpha3'

오래된 라이브러리에 오래된 SDK가 포함되어 있다는 문제는 해결되지 않습니다.
CoolMind

19

같은 오류가 발생하면 appcompat

implementation 'com.android.support:appcompat-v7:27.0.1'

그런 다음 추가하여 design해결했습니다.

implementation 'com.android.support:appcompat-v7:27.0.1'
implementation 'com.android.support:design:27.0.1'

나를 위해 추가

implementation 'de.mrmaffen:vlc-android-sdk:2.0.6'

포함 appcompat-v7:23.1.1했다

.idea / 라이브러리

하지 않고 vlc, appcompat혼자 충분하다.


많은 감사, 그것은 효과가 있었지만 'com.android.support:design:27.0.1'의 역할은 무엇입니까
Wessam El Mahdy

19

위의 모든 답변과 의견을 이미 보았지만이 답변은 새로운 개발자가 쉽게 얻을 수없는 것을 지우는 것입니다.

./gradlew -q dependencies app : dependencies --configuration 컴파일

위의 줄은 의심의 여지없이 당신의 생명을 구할 것입니다.

위의 명령에서 모든 의존성 차트 또는 목록을 얻으면 코드에서 충돌하는 버전 번호를 검색해야합니다. 아래 이미지를 참조하십시오.

여기에 이미지 설명을 입력하십시오

위의 이미지에서 23.4.0 이 문제 를 일으키는 것을 알 수 있지만 이것은 gradle 파일에서 찾을 수 없습니다. 이제이 버전 번호 (23.4.0)가 우리를 구할 것입니다. 이 숫자가 있으면 위의 명령 결과에서이 숫자를 찾아 gradle 파일에서 해당 종속성을 직접 가져옵니다. 아래 그림을 참조하여 선명하게보십시오.

com.android.support:cardview-v7:23.4.0com.android.support:customtabs:23.4.0 이 문제를 일으키는 버전을 사용하고 있음을 분명히 알 수 있습니다 . 이제 의존성 목록에서 해당 행을 복사하고 gradle 파일에서 명시 적으로 사용하지만 업데이트 된 버전 링크와 함께 사용하십시오.

구현 "com.android.support:cardview-v7:26.1.0"구현 "com.android.support:customtabs:26.1.0"


1
감사합니다! 최신 버전의 Android Studio에서는 컴파일 대신 구현으로 전환해야합니다
Avi Parshan

예, 맞습니다. @AviParshan 우리는 컴파일 또는 API를 사용할 수 있습니다. API 구성에 나타나는 종속성은 라이브러리 소비자에게 전 이적으로 노출되며 소비자의 컴파일 클래스 경로에 나타납니다. 반면에 구현 구성에서 발견 된 종속성은 소비자에게 노출되지 않으므로 소비자의 컴파일 클래스 경로로 누출되지 않습니다.
anoopbryan2

./gradlew -q dependencies app 사용 : dependencies --configuration implementation
Sumit

15

충돌을 해결하는 또 다른 방법은 다음과 같은 모든 종속성에 대해 올바른 버전을 강제 실행하는 것입니다.

dependencies {
            configurations.all {
                resolutionStrategy.eachDependency { DependencyResolveDetails details ->
                    if (details.requested.group == 'com.android.support' && details.requested.name == 'support-v4') {
                        details.useVersion "27.0.2"
                    }
                }
    ...
    }

https://docs.gradle.org/current/userguide/customizing_dependency_resolution_behavior.html


종속성 해결 규칙을 유지 관리하기가 어렵습니다. 버전 번호 및 구현 된 지원 라이브러리의 변경 사항에 대해서는 수동으로 유지 보수해야합니다. 예를 들어 Android Studio는 사용 가능한 최신 lib 버전을 강조하지만 이러한 규칙을 해석하지는 않습니다.
Manuel

12

support-v4 대신 support-v13을 사용하십시오.

compile 'com.android.support:support-v13:25.2.0'

'com.android.support:recyclerview-v7:25.2.0'에 문제가 있습니다.
Crime_Master_GoGo

위와 정확히 같은 오류 :-> 모든 com.android.support 라이브러리는 정확히 동일한 버전 사양을 사용해야합니다. Recyclerview
Crime_Master_GoGo

@Googli, compileSdkVersion , buildToolsVersion종속성을 작성 하십시오. 문제 없습니다compile 'com.android.support:appcompat-v7:25.2.0' compile 'com.android.support:design:25.2.0' compile 'com.android.support:support-v13:25.2.0' compile 'com.android.support:recyclerview-v7:25.2.0'
Mehmet Hanoğlu

12

앱 레벨 종속성에 추가

implementation 'com.android.support:asynclayoutinflater:28.0.0'
implementation 'com.android.support:exifinterface:28.0.0'
implementation 'com.android.support:animated-vector-drawable:28.0.0'
implementation 'com.android.support:support-media-compat:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'

9

내 문제는 당신과 비슷합니다. 여기에 오류가 있습니다!

compile 'com.android.support:appcompat-v7:25.3.0'

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

이 예를 보면 'com.android.support:animated-vector-drawable:25.3.0'및 'com.android.support:mediarouter-v7:24.0.0'이 있습니다.

이 코드를 종속성에 추가하기 만하면 버전이 동일해야합니다.

compile 'com.android.support:animated-vector-drawable:25.3.0'
compile 'com.android.support:mediarouter-v7:25.3.0'

9

compile 'com.google.android.gms:play-services:10.2.4'compile 을 추가 한 후 동일한 오류가 발생했습니다 'com.android.support:appcompat-v7:25.3.1'.

문제를 추가 animated-vector-drawable하고 mediarouter libs수정했습니다.

compile 'com.google.android.gms:play-services:10.2.4'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:animated-vector-drawable:25.3.1'
compile 'com.android.support:mediarouter-v7:25.3.1'

9

나는 이것을 가지고 있었다 :

dependencies {
   implementation fileTree(dir: 'libs', include: ['*.jar'])
   implementation 'com.android.support:appcompat-v7:27.1.1'
   implementation 'com.android.support:design:27.1.1'
   implementation 'com.android.support:support-v4:27.1.1'
   implementation 'com.google.firebase:firebase-auth:12.0.1'
   implementation 'com.google.firebase:firebase-firestore:12.0.1'
   implementation 'com.google.firebase:firebase-messaging:12.0.1'
   implementation 'com.google.android.gms:play-services-auth:12.0.1'
   implementation'com.facebook.android:facebook-login:[4,5)'
   implementation 'com.twitter.sdk.android:twitter:3.1.1'
   implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
   implementation 'org.jetbrains:annotations-java5:15.0'
   implementation project(':vehiclesapi')
   testImplementation 'junit:junit:4.12'
   androidTestImplementation 'com.android.support.test:runner:1.0.1'
   androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

이 오류가 발생했습니다 : 여기에 이미지 설명을 입력하십시오

해결책은 쉬웠습니다. 기본 종속성이 모두 맞았으므로 다른 타사 종속성도 남습니다. 범인을 찾을 때까지 하나씩 제거하고 페이스 북으로 밝혀졌습니다! 안드로이드 지원 라이브러리의 27.0.2 버전을 사용합니다. cardview 버전 27.1.1을 추가하려고했지만 솔루션이 여전히 간단하지 않았습니다.

dependencies {
   implementation fileTree(dir: 'libs', include: ['*.jar'])
   implementation 'com.android.support:appcompat-v7:27.1.1'
   implementation 'com.android.support:design:27.1.1'
   implementation 'com.android.support:support-v4:27.1.1'
   implementation 'com.google.firebase:firebase-auth:12.0.1'
   implementation 'com.google.firebase:firebase-firestore:12.0.1'
   implementation 'com.google.firebase:firebase-messaging:12.0.1'
   implementation 'com.google.android.gms:play-services-auth:12.0.1'
   implementation('com.facebook.android:facebook-login:[4,5)'){
       // contains com.android.support:v7:27.0.2, included required com.android.support.*:27.1.1 modules
    exclude group: 'com.android.support'
   }
   implementation 'com.android.support:cardview-v7:27.1.1' // to replace facebook sdk's cardview-v7:27.0.2.
   implementation 'com.twitter.sdk.android:twitter:3.1.1'
   implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
   implementation 'org.jetbrains:annotations-java5:15.0'
   implementation project(':vehiclesapi')
   testImplementation 'junit:junit:4.12'
   androidTestImplementation 'com.android.support.test:runner:1.0.1'
   androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

9

안드로이드 스튜디오 3.4 및 SDK 버전을 28.0.0으로 업그레이드 한 후이 문제에 직면했습니다. 아래의 종속성을 적용하면 문제가 해결되었습니다.

    implementation 'com.android.support:exifinterface:28.0.0'

8

안드로이드 스튜디오 2.3으로 업그레이드 한 후이 두 가지를 사용하여 문제를 해결했습니다.

compile 'com.android.support:animated-vector-drawable:25.0.0'
compile 'com.android.support:mediarouter-v7:25.0.0'

8

나는 전에 같은 문제가 있었고 해결책을 얻었습니다.

방금 다른 버전이 있지만 동일한 버전의 내 라이브러리를 추가했습니다 support:appcompat.

예를 들어 오류의 경우 :

모든 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이 있습니다.

* 해결책은 다음과 같은 라이브러리 버전을 컴파일하는 것입니다.

compile 'com.android.support:mediarouter-v7:25.1.1'

-다른 라이브러리에 동일한 문제가 있고 다른 버전이 있으면 해당 support:appcompat버전으로 컴파일하십시오.

이것은 내 문제를 해결했으며 그것이 당신의 문제를 해결하기를 바랍니다.

최고의 소원 :)


8

답변을 검색하고 결합 한 후이 질문의 2018 버전 이 도움이되었습니다.

1) 탐색 탭에서 프로젝트보기로 변경하십시오.

2) [YourProjectName] /. idea / libraries /로 이동하십시오

3) Gradle__com_android_support_ [libraryName]으로 시작하는 모든 파일을 삭제하십시오.

예 : Gradle__com_android_support_animated_vector_drawable_26_0_0.xml

4) gradle 파일에서 변수를 정의하고 $ {variableName} 과 같은 버전 번호를 대체하는 데 사용하십시오

방어 변수 :

ext {
    support_library_version = '28.0.0' //use the version of choice
}

변수 사용 :

implementation "com.android.support:cardview-v7:${support_library_version}"

예제 gradle :

dependencies {
    ext {
        support_library_version = '28.0.0' //use the version of choice
    }

    implementation fileTree(include: ['*.jar'], dir: 'libs')

    implementation "com.android.support:animated-vector-drawable:${support_library_version}"
    implementation "com.android.support:appcompat-v7:${support_library_version}"
    implementation "com.android.support:customtabs:${support_library_version}"
    implementation "com.android.support:cardview-v7:${support_library_version}"
    implementation "com.android.support:support-compat:${support_library_version}"
    implementation "com.android.support:support-v4:${support_library_version}"
    implementation "com.android.support:support-core-utils:${support_library_version}"
    implementation "com.android.support:support-core-ui:${support_library_version}"
    implementation "com.android.support:support-fragment:${support_library_version}"
    implementation "com.android.support:support-media-compat:${support_library_version}"
    implementation "com.android.support:appcompat-v7:${support_library_version}"
    implementation "com.android.support:recyclerview-v7:${support_library_version}"
    implementation "com.android.support:design:${support_library_version}"

}

1
이 답변에는 자세한 설명이 필요합니다. 독자는 전체 gradle 파일을 프로젝트에 복사하여 붙여 넣어야한다고 생각할 수 있습니다. 확장 기능을 추가 한 이유와 일부 지원 라이브러리를 gplaysvcs 버전으로 설정하고 다른 지원 라이브러리를 supportlib 버전으로 설정 한 이유와 변경되지 않은 이유를 설명해야합니다.
jungledev

8

안드로이드 스튜디오 3.x의 새로운 버전으로 매우 간단합니다.

현재 버전보다 낮은 버전을 복사하여 현재 버전과 동일한 버전 번호로 명시 적으로 추가하십시오.

발견 된 버전 27.1.1, 27.1.0. 예를 들어 com.android.support:animated-vector-drawable:27.1.1 및 com.android.support:exifinterface:27.1.0이 있습니다.

버전을 복사하여 사용중인 현재 버전과 동일하게 com.android.support:exifinterface:27.1.0변경 com.android.support:exifinterface:27.1.1하여 다음과 같이 gradle 종속성에 추가하십시오.

implementation 'com.android.support:exifinterface:27.1.1'

참고 : 완료되면 편집기 상단에서 지금 동기화 를 클릭하는 것을 잊지 마십시오 .


7

이 오류에 대한 2018 년 업데이트는 프로젝트 구조에서 구현을 추가합니다.

implementation 'com.android.support:support-v13:28.0.0'

프로젝트 모드-> 외부 라이브러리 에서 문제를 찾을 수 있습니다. 제 경우에는 28 버전과 외부 라이브러리를 사용 com.android.support:support-media-compat-26.0.0하고 있으며 여기에 오류가 있습니다.

구현 후 support v13작동합니다.


이 구현에서는 빨간색 밑줄이 사라졌습니다.
Truong Hieu

6

버전 24.0.0대신 컴파일하도록 다른 종속성을 정의했습니다 25.1.1. 모든 종속성 버전을와 동일하게 설정하십시오 25.1.1.


나는이 내 대답은 모든 지원 버전을 업데이트 한 동일한 버전 25.1.1
humazed

6

오류를 제거하기 위해 gradle에 다음 줄을 추가해야했습니다.

compile 'com.android.support:animated-vector-drawable:25.2.0'
compile 'com.android.support:preference-v7:25.2.0'
compile 'com.android.support:customtabs:25.2.0'
compile 'com.android.support:cardview-v7:25.2.0'

6

./gradlew 작업을 실행하고 대상 버전 (25.3.1)과 다른 버전의 종속성을 확인했습니다. 다음과 같은 것을 얻을 수 있습니다 :

app:prepareComAndroidSupportAnimatedVectorDrawable2531Library - Prepare com.android.support:animated-vector-drawable:25.3.1
app:prepareComAndroidSupportAppcompatV72531Library - Prepare com.android.support:appcompat-v7:25.3.1
app:prepareComAndroidSupportCardviewV72531Library - Prepare com.android.support:cardview-v7:25.3.1
app:prepareComAndroidSupportCustomtabs2531Library - Prepare com.android.support:customtabs:25.3.1
app:prepareComAndroidSupportDesign2531Library - Prepare com.android.support:design:25.3.1
app:prepareComAndroidSupportMediarouterV72531Library - Prepare com.android.support:mediarouter-v7:25.3.1
app:prepareComAndroidSupportPaletteV72531Library - Prepare com.android.support:palette-v7:25.3.1
app:prepareComAndroidSupportRecyclerviewV72531Library - Prepare com.android.support:recyclerview-v7:25.3.1
app:prepareComAndroidSupportSupportCompat2531Library - Prepare com.android.support:support-compat:25.3.1
app:prepareComAndroidSupportSupportCoreUi2531Library - Prepare com.android.support:support-core-ui:25.3.1
app:prepareComAndroidSupportSupportCoreUtils2531Library - Prepare com.android.support:support-core-utils:25.3.1
app:prepareComAndroidSupportSupportFragment2531Library - Prepare com.android.support:support-fragment:25.3.1
app:prepareComAndroidSupportSupportMediaCompat2531Library - Prepare com.android.support:support-media-compat:25.3.1
app:prepareComAndroidSupportSupportV42531Library - Prepare com.android.support:support-v4:25.3.1
app:prepareComAndroidSupportSupportVectorDrawable2531Library - Prepare com.android.support:support-vector-drawable:25.3.1
app:prepareComAndroidSupportTransition2531Library - Prepare com.android.support:transition:25.3.1
app:prepareComAndroidVolleyVolley100Library - Prepare com.android.volley:volley:1.0.0
app:prepareComCrashlyticsSdkAndroidAnswers1312Library - Prepare com.crashlytics.sdk.android:answers:1.3.12
app:prepareComCrashlyticsSdkAndroidBeta124Library - Prepare com.crashlytics.sdk.android:beta:1.2.4
app:prepareComCrashlyticsSdkAndroidCrashlytics267Library - Prepare com.crashlytics.sdk.android:crashlytics:2.6.7
app:prepareComCrashlyticsSdkAndroidCrashlyticsCore2316Library - Prepare com.crashlytics.sdk.android:crashlytics-core:2.3.16
app:prepareComFacebookAndroidFacebookAndroidSdk4161Library - Prepare com.facebook.android:facebook-android-sdk:4.16.1
app:prepareComGoogleAndroidGmsPlayServicesAnalytics1026Library - Prepare com.google.android.gms:play-services-analytics:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesAnalyticsImpl1026Library - Prepare com.google.android.gms:play-services-analytics-impl:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesAuth1026Library - Prepare com.google.android.gms:play-services-auth:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesAuthBase1026Library - Prepare com.google.android.gms:play-services-auth-base:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesBase1026Library - Prepare com.google.android.gms:play-services-base:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesBasement1026Library - Prepare com.google.android.gms:play-services-basement:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesCast1026Library - Prepare com.google.android.gms:play-services-cast:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesLocation1026Library - Prepare com.google.android.gms:play-services-location:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesMaps1026Library - Prepare com.google.android.gms:play-services-maps:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesTagmanagerV4Impl1026Library - Prepare com.google.android.gms:play-services-tagmanager-v4-impl:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesTasks1026Library - Prepare com.google.android.gms:play-services-tasks:10.2.6
app:prepareComGoogleFirebaseFirebaseAnalytics1026Library - Prepare com.google.firebase:firebase-analytics:10.2.6
app:prepareComGoogleFirebaseFirebaseAnalyticsImpl1026Library - Prepare com.google.firebase:firebase-analytics-impl:10.2.6
app:prepareComGoogleFirebaseFirebaseAppindexing1024Library - Prepare com.google.firebase:firebase-appindexing:10.2.4
app:prepareComGoogleFirebaseFirebaseCommon1026Library - Prepare com.google.firebase:firebase-common:10.2.6
app:prepareComGoogleFirebaseFirebaseCore1026Library - Prepare com.google.firebase:firebase-core:10.2.6
app:prepareComGoogleFirebaseFirebaseIid1026Library - Prepare com.google.firebase:firebase-iid:10.2.6
app:prepareComGoogleFirebaseFirebaseMessaging1026Library - Prepare com.google.firebase:firebase-messaging:10.2.6
app:prepareComMindorksPlaceholderview027Library - Prepare com.mindorks:placeholderview:0.2.7
app:prepareDebugAndroidTestDependencies
app:prepareDebugDependencies
app:prepareDebugUnitTestDependencies
app:prepareInfoHoang8fAndroidSegmented105Library - Prepare info.hoang8f:android-segmented:1.0.5
app:prepareIoFabricSdkAndroidFabric1316Library - Prepare io.fabric.sdk.android:fabric:1.3.16
app:prepareNoNordicsemiAndroidLog211Library - Prepare no.nordicsemi.android:log:2.1.1
app:prepareNoNordicsemiAndroidSupportV18Scanner100Library - Prepare no.nordicsemi.android.support.v18:scanner:1.0.0

이 경우 25.3.1을 타겟팅하고 있었고이 명령을 실행할 때 다른 버전을 타겟팅하는 일부 종속성이있었습니다. 트릭은이 목록에서 이전 버전을 대상으로하는 종속성을 식별하고 Gradle에서 최신 버전의 종속성을 가져 와서이를 무시합니다.


6

나는 같은 문제가 있지만 세 줄을 추가하여 이것을 해결했습니다.

implementation 'com.android.support:design:27.1.1'
implementation "com.android.support:customtabs:27.1.1"
implementation 'com.android.support:mediarouter-v7:27.1.1'

이제 모든 것이 완벽하게 작동합니다


6

이 경고를 해결하는 흐름은 다음과 같습니다.

build.gradle

android {
    compileSdkVersion ... // must same version (ex: 26)
    ...
}

dependencies {
    ...
    compile 'any com.android.support... library'  // must same version (ex: 26.0.1)
    compile 'any com.android.support... library'  // must same version (ex: 26.0.1)

    ...
    compile ('a library B which don't use 'com.android.support...' OR use SAME version of 'com.android.support'){
         // do nothing 
    }

    ...
    compile ('a library C which use DIFFERENT 'com.android.support...' (ex:27.0.1) { 
        // By default, if use don't do anything here your app will choose the higher com.android.support... for whole project (in this case it is 27.0.1)

        // If you want to use 26.0.1 use
        exclude group: 'com.android.support', module: '...' (ex module: 'appcompat-v7') 
        exclude group: 'com.android.support', module: 'another module'
        ...

        // If you want to use 27.0.1 do 
        Upgrade `compileSdkVersion` and all 'com.android.support' to 27.0.1.
        (It may be a good solution because the best practice is always use latest `compileSdkVersion`.  
        However, use 26 or 27 is base on you for example higher library may have bug)
    }
}

dependencies앱에서 모든 라이브러리 보거나 확인 하려면
터미널을 열고 실행하십시오../gradlew app:dependencies

dependencies앱에서 특정 라이브러리 보려면 여기 자습서를 따르십시오 .- Gradle에서 특정 종속성의 종속성을 제외하는 방법

도움이되기를 바랍니다.


5

프로젝트의 외부 라이브러리를 열면 해당 라이브러리를 언급하지 않았지만 일부 라이브러리는 여전히 이전 버전을 사용하고 있음을 알 수 있으므로 내 제안은 문제를 해결할 수있는 특정 라이브러리 버전을 사용하는 것입니다.


5

방금 Android 지원 리포지토리를 다음으로 업데이트합니다 (개정 : 44.0.0). 그런 다음 SDK 관리자> SDK 도구에서 Android SDK 도구 및 에뮬레이터를 최신 버전 25.3.1로 내 문제를 해결했습니다.

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