Android 13 API соответствует уровню API 33 — именно эту цифру система возвращает при проверке Build.VERSION.SDK_INT, и именно её Google Play использует при фильтрации совместимых приложений. Если ваше приложение перестало устанавливаться на устройстве с Android 13 или наоборот требует обновления, первым делом стоит сверить значения minSdkVersion и targetSdkVersion в конфигурации проекта.
В этой статье разберём, что представляет собой API level 33, какие изменения он принёс в платформу, как проверить уровень API на конкретном смартфоне и как правильно настроить проект под Android 13. Материал полезен и разработчикам, и пользователям, которые хотят понять, почему то или иное приложение ведёт себя иначе после обновления системы.
Что такое уровень API и почему Android 13 — это API 33
Каждая версия Android получает собственный целочисленный идентификатор — API level. Он нужен, чтобы приложение могло определить, какие функции системы ему доступны. Android 13, выпущенный в 2022 году, получил уровень API 33. Кодовое имя внутри платформы — Tiramisu, хотя Google официально перестала активно использовать десертные названия в публичных материалах.
Проверить уровень API программно можно одной строкой кода:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
// Код для Android 13 и новее
}
Константа Build.VERSION_CODES.TIRAMISU как раз равна 33. Такой подход позволяет безопасно вызывать новые методы только на поддерживающих их устройствах, не ломая работу на старых версиях системы.
Ключевые нововведения API 33
Android 13 принёс несколько заметных изменений в поведении платформы. Разберём те, которые чаще всего влияют на работу приложений.
- 🔔 Разрешение на уведомления — приложения с targetSdkVersion 33 должны запрашивать
POST_NOTIFICATIONSво время выполнения, иначе уведомления не будут показываться. - 🖼️ Гранулярные разрешения на медиа — вместо единого
READ_EXTERNAL_STORAGEпоявились отдельные разрешения:READ_MEDIA_IMAGES,READ_MEDIA_VIDEOиREAD_MEDIA_AUDIO. - 📶 Разрешение на Wi-Fi поблизости —
NEARBY_WIFI_DEVICESпозволяет сканировать сети без запроса доступа к геолокации. - 🎨 Тематические иконки — поддержка монохромных иконок приложений, подстраивающихся под цветовую схему системы.
- 🌐 Языковые настройки per-app — пользователь может выбрать язык отдельного приложения в системных настройках.
Отдельно стоит упомянуть Photo Picker — новый системный инструмент выбора фото и видео, который не требует вообще никаких разрешений на хранилище. Пользователь выдаёт доступ только к конкретным выбранным файлам.
⚠️ Внимание: если приложение собрано с targetSdkVersion 33 и не запрашивает разрешение POST_NOTIFICATIONS, пользователь просто не увидит ни одного уведомления. Это одна из самых частых причин «пропавших» уведомлений после обновления приложения.
Как проверить уровень API на устройстве
Узнать версию Android и, соответственно, уровень API можно прямо на смартфоне. Откройте Настройки → О телефоне → Версия Android. Точный путь может отличаться в зависимости от оболочки производителя — Samsung One UI, MIUI, ColorOS и другие располагают эти пункты немного по-разному, поэтому при необходимости сверьтесь с инструкцией к вашей модели.
Для разработчиков доступен и второй способ — через Android SDK. Уровень API указывается при создании эмулятора в AVD Manager, а также виден в выводе команды:
adb shell getprop ro.build.version.sdk
Если команда вернула 33 — устройство работает на Android 13. Значение 34 соответствует уже Android 14.
Настройка проекта под Android 13
Чтобы приложение корректно работало на Android 13 и использовало его возможности, нужно обновить конфигурацию сборки. В файле build.gradle уровня модуля задаются три ключевых параметра:
android {
compileSdk 33
defaultConfig {
minSdk 24
targetSdk 33
}
}
compileSdk определяет, с какой версией SDK проект компилируется, targetSdk — под какое поведение системы приложение оптимизировано, а minSdk — минимальную поддерживаемую версию. Конкретные значения minSdk выбирайте исходя из вашей аудитории: чем ниже порог, тем больше устройств охватывает приложение, но тем больше кода совместимости придётся писать.
☑️ Подготовка приложения к Android 13
После обновления не забудьте протестировать сценарии, связанные с уведомлениями и доступом к файлам — именно там поведение изменилось сильнее всего.
Соответствие версий Android и уровней API
Чтобы было проще ориентироваться, соберём ближайшие к Android 13 версии в одну таблицу:
| Версия Android | API level | Кодовое имя |
|---|---|---|
| Android 11 | 30 | Red Velvet Cake |
| Android 12 | 31 | Snow Cone |
| Android 12L | 32 | Snow Cone v2 |
| Android 13 | 33 | Tiramisu |
| Android 14 | 34 | Upside Down Cake |
Обратите внимание: Android 12 и 12L имеют разные уровни API, хотя внешне это почти одна система. При проверках совместимости ориентируйтесь именно на числовой уровень, а не на маркетинговое название версии.
Типичные проблемы при переходе на API 33
На практике обновление targetSdkVersion до 33 чаще всего вызывает три группы проблем. Первая — уведомления перестают приходить, потому что разрешение не запрошено или пользователь его отклонил. Решение — запросить POST_NOTIFICATIONS в подходящий момент, объяснив пользователю, зачем оно нужно.
Вторая группа — ошибки доступа к файлам. Код, который годами работал с READ_EXTERNAL_STORAGE, на устройствах с Android 13 молча теряет доступ к медиатеке. Нужно либо перейти на новые гранулярные разрешения, либо переписать логику на Photo Picker.
⚠️ Внимание: не запрашивайте одновременно старое и новое разрешения на хранилище «про запас». На Android 13 запрос READ_EXTERNAL_STORAGE игнорируется системой, а лишние диалоги разрешений снижают доверие пользователей к приложению.
Третья группа — изменения в работе PendingIntent и точных будильников. Требование явно указывать флаг изменяемости появилось ещё раньше, но на новых уровнях API проверки строже, и старый код может падать с исключениями. Проверьте все места создания PendingIntent в проекте.
Как узнать, какие разрешения реально использует приложение
Команда adb shell dumpsys package имя_пакета | grep permission покажет список объявленных и выданных разрешений. Также состояние разрешений видно в Настройки → Приложения → выбор приложения → Разрешения.
Обратная совместимость и библиотеки
Не все новые API доступны на старых устройствах напрямую, но часть функций Google переносит через библиотеки AndroidX. Например, Photo Picker работает на старых версиях Android через backport в составе библиотеки Activity. Поэтому перед тем как писать собственную реализацию с проверками версий, проверьте, нет ли готового решения в AndroidX.
Вам также стоит регулярно обновлять зависимости проекта. Библиотеки, собранные под старые уровни API, могут конфликтовать с новыми требованиями платформы — особенно это касается компонентов, работающих с уведомлениями, фоновыми задачами и хранилищем.
Часто задаваемые вопросы
Какой уровень API у Android 13?
Android 13 соответствует API level 33. В коде эта версия обозначается константой Build.VERSION_CODES.TIRAMISU.
Почему после обновления до Android 13 пропали уведомления от приложения?
Возможная причина — новое разрешение POST_NOTIFICATIONS. Проверьте в настройках приложения, включены ли уведомления: Настройки → Приложения → нужное приложение → Уведомления. Путь может отличаться в зависимости от оболочки производителя.
Чем отличается targetSdkVersion от compileSdkVersion?
compileSdk — версия SDK, с которой компилируется код; она определяет, какие классы и методы доступны при сборке. targetSdk сообщает системе, под поведение какой версии приложение адаптировано, и влияет на то, какие ограничения платформы к нему применяются.
Будет ли приложение с targetSdk 32 работать на Android 13?
Да, система сохраняет обратную совместимость: приложения с более низким targetSdk запускаются на новых версиях Android, но к ним применяется старая модель поведения. Однако для публикации обновлений в Google Play действуют требования к минимальному целевому уровню API — актуальные значения уточняйте в официальной документации Google Play.
Как проверить уровень API без компьютера?
Откройте Настройки → О телефоне и найдите пункт «Версия Android». Если там указано Android 13 — уровень API равен 33. Точное расположение пункта зависит от модели устройства.