我有一堆第三方库,我包含在我的基础应用程序中。我无法控制那些第三方模块包含的支持库。这使我很难在我的应用程序中使用相同版本的android支持库。
当我可以从每个依赖项中排除某些库时,我知道使用gradle:
[ undefined, 236, undefined, 238, undefined, undefined ]
然而,有大量的支持库,并将它们全部排除在我的第三方库中,似乎有点过分。
有更好的方法吗?
阅读此博文:https://www.devsbedevin.com/android-understanding-gradle-dependencies-and-resolving-conflicts/
它表明:
compile('com.test:lib1:1.0.0') {
exclude group: 'com.android.support'
}
然而,在使用时,我仍然在我的gradle文件中的Android Studio中收到警告,检测到有多个版本的支持库。
如果我的依赖项依赖于支持库的不同版本,该怎么办?在上面的任何一种情况下,我都会强迫第三方库使用它们未构建的特定版本的支持库。我应该使用哪个版本?最新的支持库?所有第三方依赖项的Min支持库?
这是一个最小的gradle文件示例,显示了第三方依赖项,每个依赖项依赖于它们自己的支持库版本。
configurations.all {
resolutionStrategy {
preferProjectModules()
}
}
Android studio发出以下警告:
答案 0 :(得分:40)
这当然是可能的。在您的项目build.gradle文件(顶级build.gradle文件)中添加以下代码块:
compile "com.android.support:support-v4:$supportlib_version"
以下代码确保所有依赖项的'com.android.support'依赖项版本等于$ supportlib_version。 “com.google.android.gms”框架也是如此。
确保在模块的build.gradle文件中,您还可以将这些版本用于依赖项。 E.g:
gps_version = '[15.0.0, 16.0.0)'
详细了解如何在Official Gradle documentation中强制使用某个依赖项版本。
<强>更新强> Google has decoupled library versions。因此,强制特定版本高于15.0.0可能无法正常工作。相反,您可以允许有限范围的版本。以下示例允许任何高于15.0.0但低于16的版本。
<form>
<input type="text" id="register_username">
<input type="password" id="register_password">
</form>
答案 1 :(得分:3)
第一种情况:您有兼容的 libs 已经更新了自己的内部 libs ,这里没问题。
第二种情况:您的项目中有 libs ,其版本高于其他 libs 内部的 libs ,这些 libs 可以更新到没有这样的问题的新版本,这里也没问题。
最坏情况:您的项目中的libs的版本高于其他 libs 内部的其他 libs ,以及这些 libs 没有新版本已经更新了内部 libs ,建议解决方案:
implementation project(':library')
添加到您的应用并更新其内部 libs 。请勿忘记使用./gradlew app:dependencies
检查您的依赖关系。
此外,我相信应该会在那里自动完成。
答案 2 :(得分:0)
您需要使用所需的版本指定依赖项,该依赖项会在需要它的库之前导致冲突。如果你这样做,这些lib将使用你指定的依赖版本。
屏幕截图中的libs示例(来自警告消息)
dependencies {
compile 'com.android.support:support-v13:26.0.0'
compile 'com.android.support:support-compat:26.0.0'
compile 'com.android.support:animated-vector-drawable: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
}
继续添加依赖项(显示在屏幕截图中的警告中),直到不再有关于不同库版本的警告消息为止。
答案 3 :(得分:0)
制作26
25
并在您的gradle中更改为26,或者您可以将compilesdk版本更改为Singleton
并将相关的家属更改为25