"All android libraries must use the exact same version"警告 虽然它们是相同的



嗨,我正在尝试在更新后将Glide库从3.8.0迁移到4.5.0,我收到此警告:

所有 com.android.support 库必须使用完全相同的版本 规范(混合版本可能会导致运行时崩溃)。发现 版本 27.0.2、26.1.0。示例包括 com.android.support:support-compat:27.0.2 和 com.android.support:animated-vector-drawable:26.1.0

My build.gradle:

apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion '26.0.2'
dexOptions {
preDexLibraries = false
javaMaxHeapSize "4g"
}
defaultConfig {
applicationId "maa.myapp"
minSdkVersion 15
targetSdkVersion 26
versionCode 45
versionName "4.1.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
android {
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1'
}
}
android {
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
}
}
dependencies {
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
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'
})
//notifications
compile 'com.android.support:recyclerview-v7:26.1.0'
compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support:design:26.1.0'
compile 'com.github.chrisbanes:PhotoView:2.1.3'
compile 'com.android.support:cardview-v7:26.1.0'
compile 'com.android.volley:volley:1.0.0'
compile 'com.android.support:multidex:1.0.2'
compile 'com.android.support:support-v4:26.1.0'
compile 'com.github.bumptech.glide:glide:4.5.0'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.daimajia.slider:library:1.1.5@aar'
compile 'com.google.android.gms:play-services-ads:11.8.0'
compile 'com.google.firebase:firebase-core:11.8.0'
compile 'com.google.firebase:firebase-messaging:11.8.0'
compile 'com.firebase:firebase-jobdispatcher:0.6.0'
compile 'com.vodyasov:amr:0.5'
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.7'
compile 'com.google.guava:guava:23.6-android'
testCompile 'junit:junit:4.12'
compile 'com.squareup:otto:1.3.8'
}
apply plugin: 'com.google.gms.google-services'

如果您不想移动到支持库 27,则应从 Glide 中排除支持库

dependencies {
compile ("com.github.bumptech.glide:glide:4.5.0") {
exclude group: "com.android.support"
}
...
}

来自滑翔文档:

支持库版本 - Glide 使用支持库版本 27。

如果您需要或更愿意使用不同版本的支持 您应该从 Glide 中排除"com.android.support"的库 build.gradle 文件中的依赖项。

运行gradlew app:dependencies命令,你会得到下面的输出。

+--- com.google.firebase:firebase-appindexing:11.8.0 | +--- com.google.android.gms:play-services-base:11.8.0 | | +--- com.google.android.gms:play-services-basement:11.8.0 | | |
+--- com.android.support:support-v4:25.2.0 | | | | +--- com.android.support:support-compat:25.2.0 -> 27.0.1 () | | |
| +--- com.android.support:support-media-compat:25.2.0 | | | | | +--- com.android.support:support-annotations:25.2.0 ->27.0.1 | | | | | --- com.android.support:support-compat:25.2.0 -> 27.0.1 (
) | | |
| +--- com.android.support:support-core-utils:25.2.0 -> 27.0.1 () | | | | +--- com.android.support:support-core-ui:25.2.0 ->27.0.1 () | | | | --- com.android.support:support-fragment:25.2.0 -> 27.0.1 (*) | | | --- com.google.android.gms:play-services-basement-license:11.8.0 |
| +--- com.google.android.gms:play-services-tasks:11.8.0

请注意 Firebase 中支持库的版本差异。

com.android.support:support-compat:25.2.0 -> 27.0.1 (*)

您可以看到所有库版本不匹配的情况,因此,要解决此问题,您可以对所有不匹配的库版本重复以下步骤

替换此compile 'com.github.bumptech.glide:glide:4.5.0'

使用以下代码

compile ('com.github.bumptech.glide:glide:4.5.0',{
exclude group: 'com.android.support'   
})

当在同一项目中引用库但具有不同版本时,会出现此警告。

现在要深入了解项目正在使用哪些不同版本的库,只需运行以下命令,您将获得完整的依赖项树:

./gradlew app:dependencies

随着Glide 4.0.0 RC0的发布,glide 开始使用支持库版本 27。目前,Glide可用的稳定版本是Glide 4.5.0它使用以下依赖项,

com.android.support:support-annotations:27.0.2
com.android.support:support-compat:27.0.2
com.android.support:support-core-ui:27.0.2
com.android.support:support-core-utils:27.0.2
com.android.support:support-fragment:27.0.2

此依赖项来自支持库版本 27,而你使用的是支持版本 26。这就是 Android SDK 显示警告的原因,因为Glide 4.5.0内部使用支持库版本 27。

现在有两种解决方案,要么在项目中使用支持库版本 27,要么从 Glide 中排除支持库版本,

dependencies {
compile ("com.github.bumptech.glide:glide:4.5.0") {
exclude group: "com.android.support"
}

相关内容

最新更新