Programing

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

lottogame 2020. 11. 7. 08:52
반응형

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


오늘 내 안드로이드 스튜디오를 버전 2.2.3에서 2.3으로 업데이트했을 때 종속성의 첫 번째 컴파일 라인에서 내 build.gradle에 갑자기이 오류가 발생했습니다.

(어떤 의존성이 처음에 있는지는 중요하지 않지만 항상이 오류가 발생합니다) :

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

전체 프로젝트를 살펴 봤는데 버전 24.0.0의 사용법을 찾을 수 없습니다 (전체 프로젝트에서 검색하기 위해 ctrl + shift + F를 사용했습니다).

이것은 내 build.gradle입니다.

android {
    compileSdkVersion 25
    buildToolsVersion '25.0.2'
    useLibrary 'org.apache.http.legacy'

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 25
        versionName "1.0"
        versionCode 1
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
        debug {
            minifyEnabled true
            shrinkResources true
        }
    }
    dexOptions {
        javaMaxHeapSize "4g"
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:25.2.0'
    compile 'com.google.android.gms:play-services:+'
    compile 'com.squareup:otto:1.3.8'
    compile 'com.mcxiaoke.volley:library-aar:1.0.0'
    compile 'com.android.support:multidex:1.0.1'
}

전체 프로젝트를 살펴 봤는데 24.0.0 버전의 사용법을 찾을 수 없습니다.

다른 종속성 중 하나에서 전이 종속성으로옵니다.

하지만 먼저 build.gradle파일 의 다른 문제를 수정하면 이 문제도 해결 될 수 있습니다.

  • +라이브러리 버전 에는 사용하지 마십시오 . 특정 버전을 사용하십시오.

  • 사용하지 마십시오 play-services. 원하는 Play 서비스 SDK의 특정 부분에 대한 특정 종속성을 사용하십시오. 모든 Play 서비스를 play-services가져와 앱을 필요한 것보다 훨씬 더 크게 만들고 빌드 시간을 많이 늦 춥니 다.

  • com.mcxiaoke.volley공식 Volley 인공물 ( com.android.volley:volley:1.0.0)로 교체

이들 중 어느 것도 문제를 해결하지 못하면 Gradle 종속성 보고서를 실행하여 전체 종속성 트리가 무엇인지 확인할 수 있습니다. 거기에서 다른 버전의 Android 지원 라이브러리를 요청하는 라이브러리 중 하나를 볼 수 있습니다. 무엇을 요청하든 25.2.0버전 과 함께 직접 요청 하거나 Gradle의 다른 충돌 해결 방법을 사용하여 동일한 버전을 얻을 수 있습니다.


허용되는 답변 에 대해 자세히 설명 하기 위해 지원 라이브러리 사례에 대한 적절한 종속성 해결 방법은 다음과 같습니다.

버전을 강제하기 위해 전 이적 종속성을 직접 종속성으로 추가하지 마십시오. 이것은 의미 상 잘못된 일입니다 (전 이적 종속성을 가져온 종속성을 제거한 경우 실제로 사용하지 않는 남은 종속성이 있습니다).

다음을 수행하십시오.

루트 build.gradle에 이미 있어야합니다.

ext {
    supportlib_version = '27.1.1'
    ...
}

당신의 예에서이 속성을 사용하는 app/build.gradle등의

dependencies {
    implementation "com.android.support:appcompat-v7:$supportlib_version"
    implementation "com.android.support:recyclerview-v7:$supportlib_version"
    ...
}

이제 루트 build.gradle에서

subprojects {
    project.configurations.all {
        resolutionStrategy.eachDependency { details ->
            if (details.requested.group == 'com.android.support'
                    && !details.requested.name.contains('multidex') ) {
                details.useVersion "$supportlib_version"
            }
        }
    }
}

즉, 모든 모듈과 모든 구성에서 종속성을 해결할 때 지원 lib (multidex가 아닌 경우 (더 많은 예외가있을 수 있음)) 인 경우 버전을 표준화 된 지원 lib 버전으로 강제 적용합니다.


이제 jetpack 및 jetifier의 시대에 변형을 사용하는 것이 현명 해 보입니다 (androidx 버전으로 마이그레이션했다고 가정).

예를 들어 app/build.gradle이제 androidx 종속성이 포함되지만 사용하는 라이브러리는 여전히 동일한 버전 (즉, 28.0.0)에서 원하는 supportlib 종속성을 전 이적으로 끌어 올 수 있으므로 빌드시 적절하게 제트화할 수 있습니다.

따라서 루트 build.gradle부분을 그대로 유지 28.0.0하여 supportlib_version.


다음 버전 또는 라이브러리뿐만 아니라 모든 경우에 :

오류에 대해 설명하는 작은 정보 창에주의를 기울이고 변경하고 추가해야하는 예를 보여줍니다.

사용이 다른 라이브러리 (예 : Google Play 서비스 또는 Squareup)의 내부 일 가능성이 있기 때문에 사용을 볼 수 없습니다.

귀하의 경우 에는 작은 정보 창에 표시된 모든 예제를 컴파일 하십시오.

예로는 com.android.support:animated-vector-drawable:25.2.0 및 com.android.support:mediarouter-v7:24.0.0이 있습니다.

너의

com.android.support:animated-vector-drawable:25.2.0

버전 25.2.0이고

com.android.support:mediarouter-v7:24.0.0

버전 24.0.0이므로 동일한 버전으로 mediarouter를 추가해야합니다.

com.android.support:mediarouter-v7:25.2.0

그리고 작은 정보창이 말하는 모든 예에 대해 그렇게하십시오. 귀하의 경우 버전 25.2.0이없는 모든 라이브러리.

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


나에게도 같은 문제가 발생했습니다. 방금이 두 줄을 추가 한 것은

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

문제 해결됨. 또한 이전 버전의 gradle 폴더를 삭제했습니다.


당신은 추가 할 수 있습니다

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

gradle 종속성을 마우스 오른쪽 버튼으로 클릭하면 충돌하는 종속성을 추가 할 수 있습니다. 나를 위해 그것은

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

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 지원 라이브러리 버전으로 바꾸십시오. 버전은 compileSdk 버전보다 높아야합니다.


Android 스튜디오 2.3에서 동일한 문제가 있습니다.

전에: 여기에 이미지 설명 입력

그런 다음 시도합니다.

./gradlew -q dependencies app --configuration compile

+--- project :lib
+--- com.jonathanfinerty.once:once:1.2.2
|    \--- com.android.support:support-annotations:25.3.1
+--- com.zhy:base-rvadapter:3.0.3
|    \--- com.android.support:recyclerview-v7:23.4.0
|         +--- com.android.support:support-annotations:23.4.0 -> 25.3.1
|         \--- com.android.support:support-v4:23.4.0 -> 25.3.1
|              +--- com.android.support:support-compat:25.3.1
|              |    \--- com.android.support:support-annotations:25.3.1
|              +--- com.android.support:support-media-compat:25.3.1
|              |    +--- com.android.support:support-annotations:25.3.1
|              |    \--- com.android.support:support-compat:25.3.1 (*)
|              +--- com.android.support:support-core-utils:25.3.1
|              |    +--- com.android.support:support-annotations:25.3.1
|              |    \--- com.android.support:support-compat:25.3.1 (*)
|              +--- com.android.support:support-core-ui:25.3.1
|              |    +--- com.android.support:support-annotations:25.3.1
|              |    \--- com.android.support:support-compat:25.3.1 (*)
|              \--- com.android.support:support-fragment:25.3.1
|                   +--- com.android.support:support-compat:25.3.1 (*)
|                   +--- com.android.support:support-media-compat:25.3.1 (*)
|                   +--- com.android.support:support-core-ui:25.3.1 (*)
|                   \--- com.android.support:support-core-utils:25.3.1 (*)
+--- com.squareup.okhttp3:okhttp:3.6.0
|    \--- com.squareup.okio:okio:1.11.0
+--- com.squareup.okhttp3:logging-interceptor:3.6.0
|    \--- com.squareup.okhttp3:okhttp:3.6.0 (*)
+--- com.google.code.gson:gson:2.8.0
+--- com.jakewharton:butterknife:8.4.0
|    +--- com.jakewharton:butterknife-annotations:8.4.0
|    |    \--- com.android.support:support-annotations:24.1.0 -> 25.3.1
|    \--- com.android.support:support-annotations:24.1.0 -> 25.3.1
+--- com.github.bumptech.glide:glide:3.7.0
+--- org.litepal.android:core:1.5.1
+--- com.orhanobut:logger:1.15
+--- com.android.support:appcompat-v7:25.3.1
|    +--- com.android.support:support-annotations:25.3.1
|    +--- com.android.support:support-v4:25.3.1 (*)
|    +--- com.android.support:support-vector-drawable:25.3.1
|    |    +--- com.android.support:support-annotations:25.3.1
|    |    \--- com.android.support:support-compat:25.3.1 (*)
|    \--- com.android.support:animated-vector-drawable:25.3.1
|         \--- com.android.support:support-vector-drawable:25.3.1 (*)

base-rvadapter 라이브러리에는 25.3.1이 포함되지 않습니다.

com.zhy:base-rvadapter:3.0.3
|    \--- com.android.support:recyclerview-v7:23.4.0

마지막으로 다음 줄을 추가합니다.

compile 'com.android.support:design:25.3.1'

디자인에는 appcompat-v7 및 base-rvadapter 링크 25.3.1이 포함됩니다.

+--- project :lib
+--- com.jonathanfinerty.once:once:1.2.2
|    \--- com.android.support:support-annotations:25.3.1
+--- com.zhy:base-rvadapter:3.0.3
|    \--- com.android.support:recyclerview-v7:23.4.0 -> 25.3.1
|         +--- com.android.support:support-annotations:25.3.1
|         +--- com.android.support:support-compat:25.3.1
|         |    \--- com.android.support:support-annotations:25.3.1
|         \--- com.android.support:support-core-ui:25.3.1
|              +--- com.android.support:support-annotations:25.3.1
|              \--- com.android.support:support-compat:25.3.1 (*)
+--- com.squareup.okhttp3:okhttp:3.6.0
|    \--- com.squareup.okio:okio:1.11.0
+--- com.squareup.okhttp3:logging-interceptor:3.6.0
|    \--- com.squareup.okhttp3:okhttp:3.6.0 (*)
+--- com.google.code.gson:gson:2.8.0
+--- com.jakewharton:butterknife:8.4.0
|    +--- com.jakewharton:butterknife-annotations:8.4.0
|    |    \--- com.android.support:support-annotations:24.1.0 -> 25.3.1
|    \--- com.android.support:support-annotations:24.1.0 -> 25.3.1
+--- com.github.bumptech.glide:glide:3.7.0
+--- org.litepal.android:core:1.5.1
+--- com.orhanobut:logger:1.15
+--- com.android.support:appcompat-v7:25.3.1
|    +--- com.android.support:support-annotations:25.3.1
|    +--- com.android.support:support-v4:25.3.1
|    |    +--- com.android.support:support-compat:25.3.1 (*)
|    |    +--- com.android.support:support-media-compat:25.3.1
|    |    |    +--- com.android.support:support-annotations:25.3.1
|    |    |    \--- com.android.support:support-compat:25.3.1 (*)
|    |    +--- com.android.support:support-core-utils:25.3.1
|    |    |    +--- com.android.support:support-annotations:25.3.1
|    |    |    \--- com.android.support:support-compat:25.3.1 (*)
|    |    +--- com.android.support:support-core-ui:25.3.1 (*)
|    |    \--- com.android.support:support-fragment:25.3.1
|    |         +--- com.android.support:support-compat:25.3.1 (*)
|    |         +--- com.android.support:support-media-compat:25.3.1 (*)
|    |         +--- com.android.support:support-core-ui:25.3.1 (*)
|    |         \--- com.android.support:support-core-utils:25.3.1 (*)
|    +--- com.android.support:support-vector-drawable:25.3.1
|    |    +--- com.android.support:support-annotations:25.3.1
|    |    \--- com.android.support:support-compat:25.3.1 (*)
|    \--- com.android.support:animated-vector-drawable:25.3.1
|         \--- com.android.support:support-vector-drawable:25.3.1 (*)
\--- com.android.support:design:25.3.1
     +--- com.android.support:support-v4:25.3.1 (*)
     +--- com.android.support:appcompat-v7:25.3.1 (*)
     +--- com.android.support:recyclerview-v7:25.3.1 (*)
     \--- com.android.support:transition:25.3.1
          +--- com.android.support:support-annotations:25.3.1
          \--- com.android.support:support-v4:25.3.1 (*)

후:여기에 이미지 설명 입력


여기 에이 줄을 추가하면 오류가 제거된다는 점이 지적됩니다.

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

Android Studio 2.3에서 외부 종속성을 명시 적으로 선언해야하는 것 같습니다. 종속성은 customtabs 및 palette-v7입니다.

build.gradle에 다음 두 개의 외부 종속성 / 패키지를 명시 적으로 추가해야합니다.

compile 'com.android.support:customtabs:25.2.0'
compile 'com.android.support:palette-v7:25.2.0'

I think this would solve the issue.


Try replacing compile 'com.google.android.gms:play-services:+' with the specific package(s) you are using (see this answer: https://stackoverflow.com/a/42374426/3495069)


Remove or update the Following Dependency

 compile 'com.google.android.gms:play-services:9.6.1'

or only add the selective services like this

compile 'com.google.android.gms:play-services-fitness:10.2.4'
compile 'com.google.android.gms:play-services-wearable:10.2.4'

Make all the dependencies of same version or latest version in your case replace support library versions with 25.2.0 .


Use specific versions instead of +. For example, 'com.google.android.gms:play-services:10.2.0'

And use specific SDKs which you are using instead of adding the entire Play-SDKs package. For example:

'com.google.android.gms:play-services-gcm:10.2.0'
'com.google.android.gms:play-services-maps:10.2.0'
'com.google.android.gms:play-services-location:10.2.0'

This helped me resolve the issue.

참고URL : https://stackoverflow.com/questions/42581963/all-com-android-support-libraries-must-use-the-exact-same-version

반응형