关于这一点有很多讨论。有人说如果我有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中的所有类。
答案 0 :(得分:0)
当我们有支持设计时,我们还需要support-v4和appcompat-v7吗?
从技术上讲,这取决于你的观点。
您不需要在依赖项中指定它们,但design
在编译时和运行时仍需要所有这些类。 Gradle + maven负责自动获取这些传递依赖。
以下是最新版design
支持库的依赖关系图:
(*)表示之前已经提到过的依赖关系。
但是,如果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并将在下一个支持库中发布。