如果同一个android项目的两个android模块使用不同的支持库版本会发生什么?

时间:2016-03-23 02:58:35

标签: android

我有一个带有两个模块的android项目。我已将此应用发布到Google Play。今天我发现这两个模块在他们的gradle文件中使用了不同的支持库版本依赖项(在Google Play中正在生产的版本中)。

在app模块中有不同的支持库版本会导致意外问题吗?

1 个答案:

答案 0 :(得分:5)

如果存在版本冲突,gradle将自动选择可用的最高版本。想象一个应用程序项目'app',其中包含一个库模块'mylibrary'。我已将compat lib版本设置为'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的compat lib从23.2.0升级到23.2.1的最后一行。对于具有相同组和名称组件的任何库,都会发生这种情况。

是的,当版本升级时会出现问题。如果库的更改版本与先前版本不向后兼容,则引用旧版本的代码可能无法使用缺少的方法进行编译。对于微型和次级版本更新,这通常不是问题,但对于主要版本更新,它可以是。这完全取决于具体情况。