【发布时间】:2018-04-13 16:12:27
【问题描述】:
我正在使用 Tommy Buonomo 的优秀库(here on GitHub 和 this SO question where he introduced it)将位置指示器添加到 ViewPager,但是我收到关于支持库版本的 gradle 错误,这引发了更大的问题我。
具体错误是:
Error:(39, 20) All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 27.0.0, 25.3.1. Examples include 'com.android.support:support-compat:27.0.0' and 'com.android.support:animated-vector-drawable:25.3.1'
(请注意,Android Studio 将其标记为 Error,但应用仍可编译并运行。)
这引发的更大问题是如何正确处理此类支持库版本中的冲突?
我已经添加了库,只需添加:
compile 'com.tbuonomo.andrui:viewpagerdotsindicator:1.0.1'
到我的应用程序级别 build.gradle 中的依赖项,正如我所说的,除了错误之外一切都运行良好。
我想让我的应用尽可能避免错误和警告,因此我想了解我可以做些什么来解决这个问题。
这是我第一次在我的一个项目中使用第三方库,所以这是我第一次遇到这个特定问题。
所以,一些问题。
库开发人员必须创建针对特定其他支持库版本的库的各种版本,还是他们可以简单地创建一个支持所有版本的库,直到特定版本? (必须创建特定版本似乎不切实际,因为您不知道库用户将使用哪些版本)。
用户通常可以更改第三方库调用的其他支持库的版本吗?我似乎在项目树的外部库部分中找不到任何可以让我为 Tommy 的库执行此操作的地方,所以我假设许多库都是这样的。
只有等待库开发人员创建一个使用与我的应用程序使用的相同 API 级别支持库的新版本的选项吗? (或者更改我的应用使用的支持库版本)。
另一种选择是在 github 上 fork 库并更改它在新 fork 中使用的支持库版本吗?这引发了学习如何编译和使用库并重新发布它们以供其他人使用的问题(可能作为对原始作者的拉取请求,以便他们可以合并更改 - 这将最符合 Tommy 发布的精神无论如何图书馆) - 并且还需要理解所有问题 1-3。
我觉得遇到了这个错误,我在这里打开了一罐蠕虫,但我想了解更多关于这个应该如何解决的问题。
(仅供参考,我正在使用编译和目标 SDK v27 构建我的应用程序,以遵循针对最新 API 级别的最佳实践。Tommy 的库已经有一个拉取请求以支持 API v26,该请求正在等待操作)
【问题讨论】:
-
这些库中的大多数指向库所有者构建的 aar 或 jar。所以他需要更新他的构建版本并构建新的库。
-
您使用的是什么版本的支持库?
标签: android android-studio android-gradle-plugin