Нужны ли нам support-v4 и appcompat-v7, когда у нас есть support-design?
Существует много дискуссий по этому поводу. Некоторые говорят, что если у меня appcompat-v7, мне не нужна support-v4, так как appcompat-v7 уже имеет все классы support-v4. Кроме того, этот дизайн поддержки уже имеет все классы из appcompat-v7, поэтому нам это даже не нужно. Есть некоторые ответы, которым уже много лет, поэтому, возможно, все уже изменилось. Я сделал тест, в моем проекте у меня есть support-design, support-v4 и appcompatv7, после удаления support-v4 и appcompatv7 я все еще могу использовать все классы из support-v4 и appcompatv7, просто имея support-design. Кто-нибудь может уточнить это?
Все, что я пытаюсь сделать, это удалить support-v4 из моего проекта и включить в него только независимые модули из support-v4, такие как support-compat, support-coreui и т. Д. Однако, если support-design автоматически добавляет support-v4, это не кажется возможным. Я удалил support-v4 из gradle и appcompat-v7, и все классы из support-v4 все еще находятся в моем проекте, просто сохранив support-design.
1 ответ
Нужны ли нам support-v4 и appcompat-v7, когда у нас есть support-design?
Технически это зависит от вашей точки зрения.
Вам не нужно указывать их в ваших зависимостях, но design
все еще нужны все эти классы во время компиляции и во время выполнения. Gradle + maven позаботится об автоматическом извлечении этих переходных зависимостей.
Вот график зависимости недавней версии design
поддержка библиотеки:
- дизайн
- Поддержка-v4
- опорно-Compat
- Опорно-аннотаций
- android.arch.lifecycle: во время выполнения
- android.arch.lifecycle: общий
- android.arch.core: общий
- Опорно-аннотаций
- Поддержка СМИ-Compat
- поддержка-аннотации (*)
- support-compat (*)
- Опорно-CORE-Utils
- поддержка-аннотации (*)
- support-compat (*)
- Поддержка процессоров-интерфейс
- поддержка-аннотации (*)
- support-compat (*)
- поддержка-фрагмент
- поддержка-аннотации (*)
- support-compat (*)
- support-core-ui (*)
- support-core-utils (*)
- опорно-Compat
- AppCompat-v7
- поддержка-аннотации (*)
- support-core-utils (*)
- опорный фрагмент (*)
- Поддержка вектор-вытяжка
- поддержка-аннотации (*)
- support-compat (*)
- анимированный вектор-вытяжка
- support-vector-drawable (*)
- support-core-ui (*)
- recyclerview-v7
- поддержка-аннотации (*)
- support-compat (*)
- support-core-ui (*)
- переход
- поддержка-аннотации (*)
- support-compat (*)
- Поддержка-v4
(*) обозначает зависимость, уже упомянутую ранее.
Однако, если support-design добавляет support-v4 автоматически, это не представляется возможным.
Исследуя вышеуказанное дерево, я, к своему удивлению, могу это подтвердить.
А пока вы можете попробовать явно удалить support-v4
от design
зависимости и посмотрите, к чему это приведет (т.е. вы можете потерпеть крах из-за отсутствия классов).
implementation ('com.android.support:design:27.0.2') {
exclude group: 'com.android.support', module: 'support-v4'
}
Если вы потерпите крах, импортируйте отсутствующие библиотеки, пока вы этого не сделаете.
Очевидно, команда Android исправила это и будет добавлена в следующей библиотеке поддержки.