【发布时间】:2016-03-23 12:50:44
【问题描述】:
我有一个包含两个模块的 android 项目。我已经在 Google Play 上发布了这个应用程序。今天我发现这两个模块在他们的 gradle 文件中使用了不同的支持库版本依赖(在 Google Play 目前正在生产的版本中)。
在应用模块中使用不同的支持库版本会导致意外问题吗?
【问题讨论】:
标签: android
我有一个包含两个模块的 android 项目。我已经在 Google Play 上发布了这个应用程序。今天我发现这两个模块在他们的 gradle 文件中使用了不同的支持库版本依赖(在 Google Play 目前正在生产的版本中)。
在应用模块中使用不同的支持库版本会导致意外问题吗?
【问题讨论】:
标签: android
如果存在版本冲突,gradle 会自动选择可用的最高版本。想象一个包含库模块“mylibrary”的应用程序项目“app”。我在“app”中将兼容库版本设置为 23.2.1,在“mylibrary”中设置为 23.2.0。 ./gradlew :app:dependencies 的输出显示最终选择了哪一个:
_debugCompile - ## Internal use, do not manually configure ##
+--- com.android.support:appcompat-v7:23.2.1
| +--- com.android.support:support-v4:23.2.1
| | \--- com.android.support:support-annotations:23.2.1
| +--- com.android.support:animated-vector-drawable:23.2.1
| | \--- com.android.support:support-vector-drawable:23.2.1
| | \--- com.android.support:support-v4:23.2.1 (*)
| \--- com.android.support:support-vector-drawable:23.2.1 (*)
+--- com.android.support:recyclerview-v7:23.2.1
| +--- com.android.support:support-v4:23.2.1 (*)
| \--- com.android.support:support-annotations:23.2.1
+--- com.android.support:design:23.2.1
| +--- com.android.support:support-v4:23.2.1 (*)
| +--- com.android.support:appcompat-v7:23.2.1 (*)
| \--- com.android.support:recyclerview-v7:23.2.1 (*)
+--- com.android.support:percent:23.2.1
| \--- com.android.support:support-v4:23.2.1 (*)
\--- project :mylibrary
\--- com.android.support:appcompat-v7:23.2.0 -> 23.2.1 (*)
请注意 mylibrary 的兼容库从 23.2.0 升级到 23.2.1 的最后一行。任何具有相同组和名称组件的库都会发生这种情况。
是的,像这样升级版本时可能会出现问题。如果库的更改版本与以前的版本不向后兼容,则引用旧版本的代码可能会因缺少方法而无法编译。对于微版本和次要版本更新,这通常不是问题,但对于主要版本更新,它可以。这完全取决于具体情况。
【讨论】: