Как определить потенциальные несовместимости при увеличении целевого SDK Android

Я хочу попытаться добавить функцию (каналы уведомлений), для которой требуется целевой уровень SDK 26, в проект Android с открытым исходным кодом, который в настоящее время нацелен на уровень 22 SDK.

Просматривая документацию по каналам уведомлений, я увидел кое-что тревожное: очевидно, что увеличение целевого уровня может привести к тому, что ранее допустимые использования API будут работать по-другому - в этом случае уведомления, которые не указывают канал, больше не будут отображаться. Это говорит мне о том, что могут быть и другие вещи, которые также могут сломаться только от изменения целевого уровня.

Как найти каждый вызов API в проекте, который мне нужно проверить на предмет возможной несовместимости при переходе с уровня 22 на уровень 26? В качестве альтернативы, есть ли способ изолировать участки кода, чтобы код, который я не изменял, все еще использовал уровень 22, а только новый код использовал 26?

1 ответ

Решение

Я хочу попытаться добавить функцию (каналы уведомлений), для которой требуется целевой уровень SDK 26

Если у вас есть targetSdkVersion установите значение 26 или выше, тогда требуются каналы уведомлений. Если твой targetSdkVersion установлен ниже 26, каналы уведомлений не требуются, но AFAIK вы все равно можете их настроить, если вы работаете на устройстве уровня API 26+. Лично я никогда не пробовал это; держать свой targetSdkVersion на сегодняшний день довольно важно в разработке современных приложений для Android.

Как найти каждый вызов API в проекте, который мне нужно проверить на предмет возможной несовместимости при переходе с уровня 22 на уровень 26?

В общем, вы не можете. Вы можете прочитать заметки о выпуске для Android; в последних двух выпусках Google лучше обращал особое внимание на изменения, вызванные targetSdkVersion, Вы также можете прочитать JavaDocs для связанных Build.VERSION_CODES значение (например, JavaDoc дляM), так как они перечисляют изменения, вызванные targetSdkVersion, IDE может дать вам несколько предупреждений. Кроме того, это вопрос тестирования.

В качестве альтернативы, есть ли способ изолировать участки кода, чтобы код, который я не изменял, все еще использовал уровень 22, а только новый код использовал 26?

Поместите их в совершенно независимые приложения. В противном случае нет. targetSdkVersion это настройка для приложения, а не для файла или настройки для класса.

Другие вопросы по тегам