关于这个问题有很多讨论。有人说,如果我有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仍然存在于我的项目中,只需保持支持设计。
发布于 2018-01-28 20:08:10
当我们有支持设计时,我们还需要支持-v4和appcompat-v7吗?
从技术上讲,这取决于你的观点。
您不需要在依赖项中指定它们,但是design在编译时和运行时仍然需要所有这些类。Gradle + maven负责自动获取这些传递依赖项。
下面是design支持库的最新版本的依赖关系图:
- support-media-compat
- support-annotations (\*)
- support-compat (\*)
- support-core-utils
- support-annotations (\*)
- support-compat (\*)
- support-core-ui
- support-annotations (\*)
- support-compat (\*)
- support-fragment
- support-annotations (\*)
- support-compat (\*)
- support-core-ui (\*)
- support-core-utils (\*)
- appcompat-v7
- support-annotations (\*)
- support-core-utils (\*)
- support-fragment (\*)
- support-vector-drawable
- support-annotations (\*)
- support-compat (\*)
- animated-vector-drawable
- support-vector-drawable (\*)
- support-core-ui (\*)
- recyclerview-v7
- support-annotations (\*)
- support-compat (\*)
- support-core-ui (\*)
- transition
- support-annotations (\*)
- support-compat (\*)
(*)表示前面已经提到的依赖项。
但是,如果支持设计自动添加了支持-v4,这似乎是不可能的。
在研究上面这棵树的时候,我可以让我自己感到惊讶的是,我证实了这一点。
现在,您可以尝试显式地从support-v4依赖项中删除design,并查看它会导致什么结果(也就是说,您可能会因为缺少类而崩溃)。
implementation ('com.android.support:design:27.0.2') {
exclude group: 'com.android.support', module: 'support-v4'
}如果您确实崩溃了,请导入缺少的库,直到没有。
显然,Android团队已经解决了这个问题将在下一个支持库中发布。
https://stackoverflow.com/questions/48490091
复制相似问题