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



关于这个问题有很多讨论。 有人说如果我有 appcompat-v7,我不需要 support-v4,因为 appcompat-v7 已经拥有 support-v4 的所有类。 此外,该支持设计已经具有 appcompat-v7 中的所有类,因此我们甚至不需要它。 有一些答案已经很多年了,所以现在情况可能已经发生了变化。 我做了一个测试,在我的项目中我有支持设计、支持-v4 和 appcompatv7,在删除 support-v4 和 appcompatv7 后,我仍然能够使用支持-v4 和 appcompatv7 中的所有类只需支持设计。 谁能澄清一下?

我要做的就是从我的项目中删除 support-v4,并且只包含 support-v4 中的独立模块,例如支持兼容、支持核心等。但是,如果支持设计自动添加支持v4,这似乎是不可能的。我已经从 gradle 和 appcompat-v7 中删除了 support-v4,并且通过保留支持设计仍然可以在我的项目中找到 support-v4 中的所有类。

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

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

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

以下是最新版本的支持库design依赖项图:

  • 设计
    • 支持-v4
      • 支持兼容
        • 支持注释
        • android.arch.lifecycle:runtime
          • android.arch.lifecycle :common
          • android.arch.core:common
          • 支持注释
      • 支持媒体兼容
        • 支持注释 (*)
        • 支持兼容 (*)
      • support-core-utils
        • 支持注释 (*)
        • 支持兼容 (*)
      • 支持核心用户界面
        • 支持注释 (*)
        • 支持兼容 (*)
      • 支持片段
        • 支持注释 (*)
        • 支持兼容 (*)
        • 支持核心用户界面 (*)
        • 支持核心实用程序 (*)
    • Appcompat-v7
      • 支持注释 (*)
      • 支持核心实用程序 (*)
      • 支持片段 (*)
      • 支持矢量可绘制
        • 支持注释 (*)
        • 支持兼容 (*)
      • 动画矢量可绘制
        • 支持矢量可绘制 (*)
        • 支持核心用户界面 (*)
    • 回收器视图-v7
      • 支持注释 (*)
      • 支持兼容 (*)
      • 支持核心用户界面 (*)
    • 过渡
      • 支持注释 (*)
      • 支持兼容 (*)

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

但是,如果支持设计自动添加支持v4,这似乎是不可能的。

在研究上述树时,令我自己惊讶的是,我可以确认这一点。

现在,您可以尝试从依赖项中显式删除support-v4design并查看这会将您引向何方(即您可能会因为缺少类而崩溃)。

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

如果您确实崩溃,请导入缺少的库,直到您不崩溃。

显然,Android团队已经解决了这个问题,并将在下一个支持库中发布。

相关内容

  • 没有找到相关文章

最新更新