Должны ли библиотеки Android определять targetSdkVersion?
Я понимаю, почему для библиотеки полезно определять minSdkVersion, но добавляет ли библиотека, имеющая определенный targetSdkVersion, какое-либо значение?
Я не уверен, возникнут ли какие-либо проблемы с библиотеками, у которых targetSdkVersions ниже и выше, чем у основного проекта. Будут ли они просто проигнорированы, если основной проект определит это? Или взять более низкий / более высокий? Приложения Android могут по-разному работать с разными targetSdkVersion (например, с правами на выполнение Marshmallow).
2 ответа
Документация относительно targetSDKVersion:
Целое число, обозначающее уровень API, на который нацелено приложение. Если не установлено, значение по умолчанию равно значению, данному minSdkVersion. Этот атрибут информирует систему, которую вы протестировали с целевой версией, и система не должна разрешать какие-либо действия совместимости, чтобы поддерживать прямую совместимость вашего приложения с целевой версией. Приложение все еще может работать на более старых версиях (вплоть до minSdkVersion).
Библиотека Android targetSdkVersion сообщит хост-приложению, как ваша библиотека должна вести себя в этом вопросе. У слияния манифеста есть определенные правила слияния targetSdkVersion:
Атрибуты в элементе всегда используют значение из манифеста с более высоким приоритетом, за исключением следующих ситуаций:
- Когда манифест с более низким приоритетом имеет значение minSdkVersion, которое выше, возникает ошибка, если вы не примените правило слияния overrideLibrary.
- Когда манифест с более низким приоритетом имеет значение targetSdkVersion, которое ниже, инструмент слияния использует значение из манифеста с более высоким приоритетом, но он также добавляет любые системные разрешения, необходимые для обеспечения правильной работы импортированной библиотеки (для случаев, когда который более высокая версия Android имеет увеличенные ограничения разрешений). Для получения дополнительной информации об этом поведении см. Раздел о неявных системных разрешениях.
Веб-страница Android @ использует-sdk говорит, что targetSdkVersion
Указывает уровень API, на котором разработано приложение.
Что касается вашего вопроса, библиотека указывает targetSdkVersion, чтобы требовать API Android, в котором он был протестирован. Если фактический API на устройстве Android выше, то Android обеспечивает прямую совместимость. Вы можете найти текст "прямая совместимость" на этой веб-странице для получения подробной информации.
Надеюсь, это ответит на все ваши вопросы. Повеселись...