我有一个带有两个模块的android项目。我已将此应用发布到Google Play。今天我发现这两个模块在他们的gradle文件中使用了不同的支持库版本依赖项(在Google Play中正在生产的版本中)。
在app模块中有不同的支持库版本会导致意外问题吗?
答案 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的最后一行。对于具有相同组和名称组件的任何库,都会发生这种情况。
是的,当版本升级时会出现问题。如果库的更改版本与先前版本不向后兼容,则引用旧版本的代码可能无法使用缺少的方法进行编译。对于微型和次级版本更新,这通常不是问题,但对于主要版本更新,它可以是。这完全取决于具体情况。