【问题标题】:What happens if two android modules of the same android project use different support library versions?如果同一个 android 项目的两个 android 模块使用不同的支持库版本会怎样?
【发布时间】:2016-03-23 12:50:44
【问题描述】:

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

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

【问题讨论】:

    标签: android


    【解决方案1】:

    如果存在版本冲突,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 的最后一行。任何具有相同组和名称组件的库都会发生这种情况。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多