gpt4 book ai didi

android - 如何使用 gradle 为 3rd 方部门管理不同的支持库版本?

转载 作者:IT王子 更新时间:2023-10-29 00:06:27 25 4
gpt4 key购买 nike

我有一堆第三方库,我包含在我的基础应用程序中。我无法控制那些 3rd 方模块包含的支持库。这使得在我的应用程序中很难拥有相同版本的 android 支持库。

当我可以从每个依赖项中排除某些库时,我知道使用 gradle:

compile('com.test:lib1:1.0.0') {
exclude group: 'com.android.support'
}

但是,有大量的支持库,并且将它们全部排除在我的每个 3rd 方库中似乎有点矫枉过正。

有没有更好的办法?

阅读这篇博文:https://www.devsbedevin.net/android-understanding-gradle-dependencies-and-resolving-conflicts/

它暗示:

configurations.all {
resolutionStrategy {
preferProjectModules()
}
}

但是,当使用它时,我仍然在我的 gradle 文件中的 Android Studio 中收到警告,指出检测到多个版本的支持库。

如果我的依赖项依赖于不同版本的支持库,我该怎么办?在上述任何一种情况下,我都会强制第 3 方库使用它们未构建的特定版本的支持库。我应该使用哪个版本?最新的支持库?所有 3rd 方依赖项的最小支持库?

这是一个最小的 gradle 文件示例,展示了拉入 3rd 方依赖项,每个依赖项都依赖于自己的支持库版本。

android {
compileSdkVersion 26
buildToolsVersion '26.0.2'

defaultConfig {
applicationId "com.example.app"
minSdkVersion 17
targetSdkVersion 25
}
}

configurations.all {
resolutionStrategy {
preferProjectModules()
}
}

dependencies {
compile 'com.android.support:support-v13:26.0.0'
compile 'com.test:lib1:1.0' // depends on support-v13:25.0.0
compile 'com.test:lib2:1.0' // depends on support-v13:25.2.0
compile 'com.test:lib3:1.0' // depends on support-v13:25.4.0
compile 'com.test:lib4:1.0' // depends on support-v13:26.0.0
}

Android Studio 给出以下警告:

enter image description here

最佳答案

这当然是可能的。在您的项目 build.gradle 文件(顶级 build.gradle 文件)中添加以下代码块:

ext {
supportlib_version = '26.1.0'
gps_version = '11.2.0'
}

//Ensure that all dependencies use the same version of the Android Support library
subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('multidex')) {
details.useVersion "$supportlib_version"
}
if (details.requested.group == 'com.google.android.gms'
&& !details.requested.name.contains('multidex')) {
details.useVersion "$gps_version"
}
}
}
}

以下代码确保所有依赖项的“com.android.support”依赖项版本都等于 $supportlib_version。 'com.google.android.gms' 框架也是如此。

确保在您的模块的 build.gradle 文件中,您也将这些版本用于您的依赖项。例如:

compile "com.android.support:support-v4:$supportlib_version"

阅读 Official Gradle documentation 中有关强制某个依赖版本的更多信息.

更新 Google has decoupled library versions .因此,强制高于 15.0.0 的特定版本可能不起作用。相反,您可以允许有限范围的版本。下面的示例允许任何高于 15.0.0 但低于 16 的版本。

gps_version = '[15.0.0, 16.0.0)'

关于android - 如何使用 gradle 为 3rd 方部门管理不同的支持库版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48027019/

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