← Назад к вопросам

Что такое Target SDK?

1.0 Junior🔥 221 комментариев
#Android компоненты

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое Target SDK?

Target SDK (targetSdkVersion) — это один из ключевых параметров в файле build.gradle (или AndroidManifest.xml в устаревших проектах), который указывает версию Android SDK, для которой ваше приложение было протестировано и оптимизировано. Это НЕ минимальная версия, на которой может работать приложение (minSdkVersion), и не максимальная (maxSdkVersion). Target SDK — это "заявление" системе Android: "Моё приложение готово к работе с API и поведением системы, характерными для этой версии и ниже".

Основная цель и принцип работы

Когда вы устанавливаете targetSdkVersion, вы сообщаете Android:

  1. Какое системное поведение использовать. Начиная с Android 4.4 (API 19), Google ввел политику обратной совместимости через forward compatibility. Это означает, что новые версии Android содержат код для проверки targetSdkVersion приложения. Если приложение скомпилировано со старым target SDK запускается на новом устройстве, система может включить для него устаревшее поведение (compatibility modes), чтобы не сломать его работу.
  2. Какие новые функции безопасности и разрешения применять. Многие важные изменения, например, новые модели разрешений времени выполнения (Runtime Permissions, начиная с API 23) или ограничения на фоновую работу (начиная с API 26), активируются только для приложений, чей target SDK равен или выше соответствующего уровня API.

Простыми словами: Target SDK — это ваш способ сказать системе: "Я знаю о новых правилах и функциях этой версии Android и готов их соблюдать/использовать. На более старых версиях со мной нужно обращаться по-старому".

Практический пример: разрешения

Рассмотрим на примере опасных разрешений (камера, контакты, местоположение).

// build.gradle (module)
android {
    compileSdk 34
    defaultConfig {
        applicationId "com.example.myapp"
        minSdkVersion 21
        targetSdkVersion 33
        versionCode 1
        versionName "1.0"
    }
}
  • Если targetSdkVersion < 23 (Android 6.0): Приложение устанавливается на устройство с Android 9.0 (API 28). Система видит старый target SDK и применяет устаревшую модель разрешений. Все опасные разрешения запрашиваются у пользователя только во время установки приложения (через магазин приложений). В коде вы просто проверяете разрешение через checkSelfPermission() (который всегда возвращает PERMISSION_GRANTED для старых target SDK на новых системах).
  • Если targetSdkVersion >= 23: Такое же приложение устанавливается на то же устройство. Система активирует новую модель времени выполнения. Разрешения запрашиваются во время работы приложения в момент, когда они нужны. Вы обязаны реализовать логику запроса requestPermissions() и обработки ответа пользователя в onRequestPermissionsResult().
// Пример кода для targetSdkVersion >= 23
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
    != PackageManager.PERMISSION_GRANTED) {
    // Разрешение не предоставлено, нужно запросить
    ActivityCompat.requestPermissions(this,
        arrayOf(Manifest.permission.CAMERA),
        MY_CAMERA_REQUEST_CODE
    )
} else {
    // Разрешение уже есть, можно использовать камеру
    openCamera()
}

Почему важно регулярно обновлять Target SDK?

Google Play и другие магазины требуют постепенного обновления target SDK для новых приложений и обновлений. Причины:

  • Безопасность и конфиденциальность пользователей. Новые версии Android вводят улучшенные механизмы защиты данных.
  • Производительность и стабильность. Новые API часто работают эффективнее (например, фоновая обработка в Android 8.0+).
  • Доступ к новым функциям. Некоторые API (например, ограничения на фоновые службы, уведомления каналов) требуют актуального target SDK.
  • Соответствие политикам магазинов. Google Play устанавливает дедлайны для обновления target SDK.

Взаимосвязь с compileSdkVersion

Важно не путать:

  • compileSdkVersion — это версия SDK, используемая компилятором для проверки синтаксиса и доступности API во время сборки. Должна быть всегда актуальной (обычно последней стабильной).
  • targetSdkVersion — это версия SDK, которая определяет поведение приложения во время выполнения на устройстве пользователя.

Лучшая практика: compileSdkVersion == targetSdkVersion (или targetSdkVersion <= compileSdkVersion). Вы компилируетесь с последним SDK, но целенаправленно тестируете и оптимизируете поведение под определенную версию target.

Вывод

Target SDK — это мощный инструмент контроля над тем, как ваше приложение взаимодействует с разными версиями операционной системы Android. Его корректная настройка и своевременное обновление критически важны для обеспечения безопасности, стабильности и современного пользовательского опыта, а также для соблюдения требований магазинов приложений.