首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我们有支持设计时,我们还需要支持-v4和appcompat-v7吗?

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

Stack Overflow用户
提问于 2018-01-28 18:49:26
回答 1查看 934关注 0票数 2

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

我所要做的就是删除支持--从我的项目中删除v4,只包括支持中的附属模块-v4,如support-compat、support-coreui等等。然而,如果支持设计自动添加支持-v4,这似乎是不可能的。我已经从gradle和appcompat中删除了支持-v4和appcompat-v7,以及支持中的所有类-v4仍然存在于我的项目中,只需保持支持设计。

EN

回答 1

Stack Overflow用户

发布于 2018-01-28 20:08:10

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

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

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

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

  • 设计
    • 支持-v4
      • 支持-compat
        • 支持-说明
        • android.arch.lifecycle:runtime
          • android.arch.lifecycle:common
          • android.arch.core:common
          • 支持-说明

代码语言:javascript
复制
    - support-media-compat  
        - support-annotations (\*)
        - support-compat (\*)

代码语言:javascript
复制
    - support-core-utils  
        - support-annotations (\*)
        - support-compat (\*)

代码语言:javascript
复制
    - support-core-ui  
        - support-annotations (\*)
        - support-compat (\*)

代码语言:javascript
复制
    - support-fragment  
        - support-annotations (\*)
        - support-compat (\*)
        - support-core-ui (\*)
        - support-core-utils (\*)

代码语言:javascript
复制
- appcompat-v7  
    - support-annotations (\*)
    - support-core-utils (\*)
    - support-fragment (\*)
    - support-vector-drawable  
        - support-annotations (\*)
        - support-compat (\*)

代码语言:javascript
复制
    - animated-vector-drawable  
        - support-vector-drawable (\*)
        - support-core-ui (\*)

代码语言:javascript
复制
- recyclerview-v7  
    - support-annotations (\*)
    - support-compat (\*)
    - support-core-ui (\*)

代码语言:javascript
复制
- transition  
    - support-annotations (\*)
    - support-compat (\*)

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

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

在研究上面这棵树的时候,我可以让我自己感到惊讶的是,我证实了这一点。

现在,您可以尝试显式地从support-v4依赖项中删除design,并查看它会导致什么结果(也就是说,您可能会因为缺少类而崩溃)。

代码语言:javascript
复制
implementation ('com.android.support:design:27.0.2') {
    exclude group: 'com.android.support', module: 'support-v4'
}

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48490091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档