Краткий разбор ключевых компонентов Android SDK
Коротко: com.android.sdk — корневые API и ресурсы SDK (платформенные библиотеки и инструменты), com.android.tools.build — Gradle‑плагин (Android Gradle Plugin, AGP), отвечающий за компиляцию и упаковку, com.android.support — устаревшая Support Library, заменённая на AndroidX. Ниже — что они делают и как с ними работать на практике.
Что такое com.android.sdk и роль Android SDK
com.android.sdk условно обозначает платформенные компоненты Android SDK: набор API, сборок платформы (platforms/android-
- compileSdk в build.gradle указывает, к какой версии платформы привязана компиляция (например, 34).
- SDK содержит платформенные JAR/AAR, которыми пользуются плагин и компилятор для проверки API и разрешения ссылок.
- В CI ставьте нужные platform‑пакеты через sdkmanager (или в Android Studio укажите нужную версию SDK).
Что делать:
- Всегда ставьте compileSdk равным рекомендованной версии для вашей цели (новые функции и проверки).
- Отдельно обновляйте Build Tools и платформы, чтобы AGP корректно собирал проект.
com.android.tools.build — Android Gradle Plugin (AGP)
com.android.tools.build — это артефакт AGP, подключаемый в проекте как classpath 'com.android.tools.build:gradle:X.Y.Z' и/или через плагин id 'com.android.application'. Его функции:
- Компиляция Java/Kotlin → DEX/ART (вместе с R8/ProGuard для минификации).
- Обработка и упаковка ресурсов (aapt2), генерация R-класса, слияние манифестов.
- Создание APK/AAB, управление вариантами сборки (buildTypes, productFlavors). Практические рекомендации:
- Синхронизируйте версии AGP и Gradle (проверяйте матрицу совместимости в документации Android).
- Используйте Gradle Wrapper в репозитории для стабильных сборок в CI.
- Включайте кэширование и конфигурационный кэш по мере совместимости AGP и плагинов для ускорения сборки.
Если сборка медленная, проверьте версию AGP, включите конфигурационный кэш Gradle и используйте параллельную сборку; для минификации включите R8 (по умолчанию в новых AGP).
com.android.support — что это и почему переходить на AndroidX
com.android.support — набор Support Library (AppCompat, RecyclerView, CardView и др.), который обеспечивал обратную совместимость и виджеты до появления AndroidX. С 2018 Google переместил библиотеки в пространство имён androidx (AndroidX), где артефакты имеют стабильную схему версий. Почему важно мигрировать:
- com.android.support больше не обновляется и вызывает конфликты с современными зависимостями.
- Публикация и совместимость с новыми плагинами и библиотеками требует AndroidX. Как мигрировать:
- В Android Studio: Refactor → Migrate to AndroidX или заменить зависимости вручную (например, androidx.appcompat:appcompat).
- Обновите импорты в коде и проверьте сторонние зависимости на совместимость.
Не используйте com.android.support в новых проектах — это часто приводит к конфликтам версий и проблемам при сборке/публикации.
Частые ошибки
- Несовместимость AGP и Gradle: проект не синхронизируется — обновите Gradle Wrapper под требуемую версию AGP.
- Failed to resolve com.android.support: отсутствуют Google‑репозитории в repositories — убедитесь, что добавлен mavenCentral() и google().
- Компиляция против старого compileSdk: возникают ошибки ссылок на новые API — повысьте compileSdk, не меняя targetSdk без тестов.
- Конфликты зависимостей между support и AndroidX: используйте Jetifier или полностью мигрируйте на AndroidX.
FAQ
- Нужно ли обновлять AGP при каждом обновлении Android Studio? Обычно да: новые версии Studio ожидают совместимые AGP/Gradle; обновляйте по мере необходимости и тестируйте CI.
- Что важнее — compileSdk или targetSdk? compileSdk определяет доступные API при компиляции; targetSdk влияет на поведение приложения на рантайме. Для новых функциональностей поднимайте compileSdk.
- Можно ли продолжать использовать com.android.support в старом проекте? Технически — да, но это увеличивает риск конфликтов и мешает использовать современные библиотеки и плагины. Планируйте миграцию на AndroidX.