gpt4 book ai didi

android - 所有 com.android.support 库必须使用完全相同的版本

转载 作者:IT老高 更新时间:2023-10-28 13:15:04 25 4
gpt4 key购买 nike

当我今天将我的 android studio 从版本 2.2.3 更新到 2.3 时,我突然在依赖项的第一个编译行的 build.gradle 中遇到了这个错误

(首先哪个依赖并不重要,但它总是会给我这个错误):

All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 25.2.0, 24.0.0. Examples include com.android.support:animated-vector-drawable:25.2.0 and 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'
}

最佳答案

详述accepted answer ,支持库案例的正确依赖解析如下:

不要仅仅添加传递依赖作为直接依赖来强制它们的版本;这在语义上是错误的(如果你曾经删除了引入传递依赖的依赖,你现在有一个你没有实际使用的剩余依赖)。

执行以下操作:

在你的根 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"
}
}
}
}

也就是说,在每个模块和每个配置中,在解决依赖关系时,如果它是一个支持库(但不是 multidex 的(可能有更多异常(exception))),则将版本强制为您的标准化支持库版本。


现在在喷气背包和喷气机的时代,使用变体似乎是明智的(假设您已迁移到 androidx 版本):

你的例子app/build.gradle 现在将包含 androidx 依赖项,但您使用的库仍可能会传递性地引入 supportlib 依赖项,您仍然希望它们在同一版本(即 28.0.0)上,以便它们可以获得在构建时正确喷射。

所以保持根 build.gradle 部分原样,使用 28.0.0 作为 supportlib_version

关于android - 所有 com.android.support 库必须使用完全相同的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42581963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com