Android 10 API: уровень 29, возможности и особенности для разработчиков

Android 10 API соответствует уровню API level 29, и именно это значение указывается в параметре targetSdkVersion при сборке приложения, ориентированного на Android 10. Если при компиляции проекта возникает ошибка вроде «failed to find platform android-29», причина почти всегда в том, что в SDK Manager не установлена платформа Android 10.0 (Q) — её нужно доустановить через Tools → SDK Manager в Android Studio.

В этой статье разберём, что означает API 29, какие ключевые изменения появились в Android 10, как проверить уровень API на устройстве и как адаптировать приложение под требования этой версии. Материал полезен и разработчикам, и пользователям, которые хотят понять, почему то или иное приложение требует определённую версию системы.

Что такое уровень API и как он связан с версией Android

API level — это целочисленный идентификатор, которым Android помечает каждую версию платформы. Система использует его, чтобы определить, совместимо ли приложение с устройством: если minSdkVersion приложения выше, чем уровень API устройства, установка будет заблокирована ещё на этапе маркета.

Для Android 10 этот идентификатор равен 29. Проверить его на устройстве можно программно через Build.VERSION.SDK_INT, а в настройках телефона обычно отображается только маркетинговая версия системы — путь к ней зависит от оболочки производителя, чаще всего это раздел «О телефоне».

Важно различать три параметра в файле build.gradle: compileSdkVersion определяет, с какой версией SDK происходит компиляция, minSdkVersion — минимально поддерживаемую версию, а targetSdkVersion — версию, под которую приложение протестировано и чьи правила поведения к нему применяются.

Ключевые изменения в Android 10 (API 29)

Android 10 принёс несколько значимых изменений, повлиявших как на разработчиков, так и на пользователей. Среди них — системная тёмная тема, обновлённая модель навигации жестами и усиленные ограничения приватности.

  • 🔒 Scoped Storage — ограничение доступа приложений к внешнему хранилищу: вместо свободной работы с файловой системой приложению выделяется изолированная директория.
  • 📍 Фоновая геолокация — появилось отдельное разрешение на доступ к местоположению в фоне, пользователь может выдать доступ только «при использовании приложения».
  • 🌙 Системная тёмная тема — приложения могут реагировать на переключение темы через DayNight-режим.
  • Жестовая навигация — полноэкранные жесты стали стандартным режимом, что потребовало корректной обработки отступов (insets).
  • 📵 Ограничение фоновой активности — приложения в фоне не могут самопроизвольно запускать активности.
⚠️ Внимание: если приложение с targetSdkVersion 29 активно работает с файлами устаревшими методами прямого доступа к внешнему хранилищу, часть функций может перестать работать. Временным решением был флаг requestLegacyExternalStorage, но он не действует на более новых версиях Android.
📊 Какое изменение Android 10 (API 29) больше всего повлияло на ваши приложения?
Scoped Storage
Фоновая геолокация
Тёмная тема
Ограничение фоновой активности

Scoped Storage: главное нововведение API 29

Scoped Storage («ограниченное хранилище») — самое обсуждаемое изменение Android 10. До API 29 приложение с разрешением WRITE_EXTERNAL_STORAGE могло читать и изменять практически любые файлы на накопителе. Начиная с Android 10, такой доступ по умолчанию закрыт.

Теперь у каждого приложения есть собственная песочница во внешнем хранилище, доступ к которой не требует разрешений. Для работы с общими медиафайлами (фото, видео, аудио) предназначен API MediaStore, а для произвольных документов — системный выбор файлов через Storage Access Framework.

Если вы пользователь и после обновления до Android 10 приложение «не видит» файлы — вероятная причина именно в Scoped Storage: старая версия программы не адаптирована под новую модель. Проверьте наличие обновления приложения в маркете.

Сравнение параметров API 29 с соседними версиями

Ниже — сводная таблица, которая помогает сориентироваться в соответствии версий Android и уровней API вокруг Android 10.

Версия AndroidAPI levelКодовое имяКлючевое изменение
Android 928PieВырезы экрана, адаптивная яркость
Android 1029QScoped Storage, фоновая геолокация
Android 1130RОбязательный Scoped Storage, одноразовые разрешения
Android 1231SMaterial You, индикаторы микрофона и камеры

Обратите внимание: начиная с Android 10 Google отказался от «десертных» названий в публичном наименовании, поэтому официально система называется просто Android 10, а буква Q осталась внутренним обозначением.

Как настроить проект под Android 10 в Android Studio

Чтобы собрать приложение под API 29, необходимо выполнить несколько шагов. Порядок действий не зависит от модели устройства — настройка ведётся целиком в среде разработки.

☑️ Настройка проекта под Android 10 (API 29)

Выполнено: 0 / 5

Фрагмент конфигурации в build.gradle модуля приложения выглядит так:

android {

compileSdkVersion 29

defaultConfig {

minSdkVersion 21

targetSdkVersion 29

}

}

После изменения конфигурации выполните синхронизацию проекта (Sync Now). Если синхронизация завершается ошибкой об отсутствующей платформе, вернитесь в SDK Manager и убедитесь, что пакет Android 10.0 (Q), API Level 29 отмечен и установлен.

Новые разрешения и приватность в API 29

Модель разрешений в Android 10 стала заметно строже. Разрешение на геолокацию разделено на доступ «только при использовании» и «в фоне» — второе (ACCESS_BACKGROUND_LOCATION) запрашивается отдельно и требует обоснования необходимости при публикации в маркете.

Кроме того, появилось разрешение ACTIVITY_RECOGNITION для доступа к данным о физической активности пользователя, а доступ к неизменяемым идентификаторам устройства (IMEI, серийный номер) был ограничен — приложения без системных привилегий получают исключение при попытке их чтения.

⚠️ Внимание: не запрашивайте фоновую геолокацию «на всякий случай». Избыточные разрешения снижают доверие пользователей и могут стать причиной отклонения приложения при модерации в магазине.
Проверка уровня API на устройстве

Откройте «Настройки» → раздел «О телефоне» (название раздела зависит от оболочки) и найдите пункт «Версия Android». Если указано Android 10 — устройство работает на API 29. Программно уровень проверяется условием Build.VERSION.SDK_INT >= 29.

Совместимость: как приложения ведут себя на разных устройствах

Когда приложение с targetSdkVersion 29 запускается на устройстве со старой версией Android, новые ограничения не применяются — система использует правила той версии, которая установлена на устройстве. Обратное тоже верно: старое приложение с низким targetSdkVersion на устройстве с Android 10 получает режим совместимости, но часть ограничений всё равно действует.

Для пользователя это объясняет ситуацию, когда после обновления телефона до Android 10 давно не обновлявшееся приложение начинает работать со сбоями: система применяет к нему новые правила приватности, а код приложения к ним не готов. Единственное надёжное решение — обновление самого приложения разработчиком.

Разработчикам стоит помнить: магазины приложений периодически повышают минимально допустимый targetSdkVersion для публикации. Поэтому ориентироваться только на API 29 сегодня недостаточно — актуальные требования стоит проверять в документации Google Play на момент релиза.

Частые вопросы об Android 10 API

Какой уровень API у Android 10?

Android 10 соответствует API level 29. Именно значение 29 указывается в параметрах compileSdkVersion и targetSdkVersion при сборке приложения под эту версию системы.

Как узнать, поддерживает ли моё приложение Android 10?

Откройте файл build.gradle модуля приложения и проверьте значения minSdkVersion и targetSdkVersion. Если targetSdkVersion равен 29 или выше, приложение адаптировано под правила Android 10. Пользователю достаточно посмотреть требования к версии Android на странице приложения в магазине.

Почему после обновления до Android 10 приложение перестало видеть файлы?

Вероятная причина — Scoped Storage: начиная с API 29 прямой доступ к внешнему хранилищу ограничен. Обновите приложение до актуальной версии; если обновления нет, свяжитесь с его разработчиком, так как исправить это можно только на стороне кода приложения.

Можно ли обойти Scoped Storage на Android 10?

Для приложений с targetSdkVersion 29 временно доступен флаг requestLegacyExternalStorage в манифесте, восстанавливающий старое поведение. Однако на Android 11 и новее этот флаг игнорируется, поэтому корректное решение — переход на MediaStore или Storage Access Framework.

Чем API 29 отличается от API 28?

Основные отличия: ограниченный доступ к хранилищу, отдельное разрешение на фоновую геолокацию, системная тёмная тема, жестовая навигация и запрет на запуск активностей из фона. Полный перечень изменений приведён в официальной документации Android для разработчиков.