모든 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.
'Programing' 카테고리의 다른 글
Request.QueryString에 ASP.NET에서 특정 값이 있는지 확인하는 방법은 무엇입니까? (0) | 2020.11.07 |
---|---|
삽입 정렬과 버블 정렬 알고리즘 (0) | 2020.11.07 |
Asp.Net WebApi에 대한 Angular, 서버에서 CSRF 구현 (0) | 2020.11.06 |
모듈이 활성화 된 경우 tgmath.h가 작동하지 않습니다. (0) | 2020.11.06 |
AdminTokenAction : 치명적 오류 : 응용 프로그램 SSO 토큰을 얻을 수 없습니다. (0) | 2020.11.06 |