当我们有支持设计时,我们还需要support-v4和appcompat-v7吗?

时间:2018-01-28 18:49:26

标签: android android-support-design support-v4 appcompat-v7

关于这一点有很多讨论。有人说如果我有appcompat-v7我不需要support-v4,因为appcompat-v7已经拥有了所有类的support-v4。此外,该支持设计已经包含appcompat-v7中的所有类,因此我们甚至不需要它。有一些答案已有很多年,所以现在可能已经改变了。我做了一个测试,在我的项目中我有支持设计,支持-v4和appcompatv7,在删除support-v4和appcompatv7后,我仍然可以通过支持设计使用support-v4和appcompatv7中的所有类。任何人都可以澄清这个吗?

我要做的就是从我的项目中删除support-v4,只包括来自support-v4的独立模块,例如support-compat,support-coreui等。但是,如果support-design自动添加support-v4这似乎不可能。我已经从gradle和appcompat-v7中删除了support-v4,只需保留支持设计,我的项目中仍然可以找到support-v4中的所有类。

1 个答案:

答案 0 :(得分:0)

  

当我们有支持设计时,我们还需要support-v4和appcompat-v7吗?

从技术上讲,这取决于你的观点。

您不需要在依赖项中指定它们,但design在编译时和运行时仍需要所有这些类。 Gradle + maven负责自动获取这些传递依赖。

以下是最新版design支持库的依赖关系图:

  • 设计
    • 支持-V4
      • 支撑COMPAT
        • 支持的注解
        • android.arch.lifecycle:运行时
          • android.arch.lifecycle:通用
          • android.arch.core:通用
          • 支持的注解
      • 支持媒体-COMPAT
        • support-annotations(*)
        • support-compat(*)
      • 支撑芯 - utils的
        • support-annotations(*)
        • support-compat(*)
      • 支撑芯的UI
        • support-annotations(*)
        • support-compat(*)
      • 支持片段
        • support-annotations(*)
        • support-compat(*)
        • support-core-ui(*)
        • support-core-utils(*)
    • 程序兼容性-V7
      • support-annotations(*)
      • support-core-utils(*)
      • support-fragment(*)
      • 支持向量抽拉
        • support-annotations(*)
        • support-compat(*)
      • 动画向量抽拉
        • support-vector-drawable(*)
        • support-core-ui(*)
    • recyclerview-V7
      • support-annotations(*)
      • support-compat(*)
      • support-core-ui(*)
    • 过渡
      • support-annotations(*)
      • support-compat(*)

(*)表示之前已经提到过的依赖关系。

  

但是,如果support-design自动添加support-v4,那么这似乎是不可能的。

在研究上述树时,我自己会惊讶地确认这一点。

现在,您可以尝试从support-v4依赖项中明确删除design,并查看引导您的位置(即您可能因为缺少类而崩溃)。

implementation ('com.android.support:design:27.0.2') {
    exclude group: 'com.android.support', module: 'support-v4'
}

如果你确实崩溃了导入丢失的库,直到你没有。

显然是Android Team has fixed this并将在下一个支持库中发布。