Ошибка failed to find Platform SDK with path: platforms;android-28 появляется в Android Studio, когда в проекте указан compileSdkVersion 28, но сам пакет платформы не скачан или путь к SDK прописан неверно. Это одна из самых частых проблем при открытии старых проектов, собранных под Android 9 Pie, и решается она установкой нужного пакета через SDK Manager либо корректировкой конфигурации Gradle.
Android SDK 28 — это набор инструментов разработки, соответствующий API level 28, то есть операционной системе Android 9 Pie. В комплект входят системные образы, библиотеки платформы, документация и исходники, необходимые для компиляции приложений под эту версию. Ниже разберём, что входит в пакет, как его установить, какие параметры указать в build.gradle и как устранить типичные сбои.
Что такое Android SDK 28 и зачем он нужен
Под термином «Android SDK 28» обычно понимают платформу Android SDK Platform 28 вместе с сопутствующими компонентами: SDK Build-Tools, эмулятором и системными образами. Именно против этой платформы компилятор проверяет вызовы API, доступные в Android 9.
Вам может понадобиться именно 28-й уровень API в нескольких ситуациях: поддержка legacy-проекта, требование заказчика, проверка совместимости со старыми устройствами или сборка библиотеки, где зафиксирована конкретная версия. Необходимо понимать, что compileSdkVersion влияет только на этап компиляции — реальное поведение на устройстве определяется связкой minSdkVersion и targetSdkVersion.
- 📱 minSdkVersion — минимальная версия Android, на которой приложение запустится;
- 🎯 targetSdkVersion — версия, под поведение которой оптимизировано приложение;
- 🛠️ compileSdkVersion — платформа, против которой идёт сборка (здесь и указывается 28);
- 📦 buildToolsVersion — версия утилит сборки, должна быть совместима с платформой.
Установка Android SDK 28 через SDK Manager
Самый надёжный способ — установка через встроенный SDK Manager в Android Studio. Откройте File → Settings → Appearance & Behavior → System Settings → Android SDK (на macOS путь начинается с Android Studio → Preferences). Во вкладке SDK Platforms отметьте Android 9.0 (Pie) — это и есть API 28.
Затем перейдите на вкладку SDK Tools, включите опцию Show Package Details и убедитесь, что установлена совместимая версия Android SDK Build-Tools. Нажмите Apply и дождитесь загрузки пакетов. После этого выполните синхронизацию проекта через File → Sync Project with Gradle Files.
☑️ Проверка после установки SDK 28
Если предпочитаете командную строку, используйте утилиту sdkmanager из каталога SDK:
sdkmanager "platforms;android-28" "build-tools;28.0.3"
⚠️ Внимание: перед установкой пакетов черезsdkmanagerнеобходимо принять лицензии командойsdkmanager --licenses, иначе сборка в CI или из терминала будет падать с ошибкой лицензирования.
Настройка build.gradle под API 28
Чтобы проект собирался против Android SDK 28, укажите параметры в файле build.gradle уровня модуля. Типовой блок выглядит так:
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 21
targetSdkVersion 28
}
}
Обратите внимание на зависимости: для API 28 используются библиотеки поддержки семейства com.android.support:28.0.0 — это последняя ветка support library, дальнейшее развитие продолжилось только в AndroidX. Если проект переведён на AndroidX, смешивать старые support-зависимости с новыми нельзя — возникнут конфликты классов при сборке.
Совместимость версий: таблица компонентов
Подбор согласованных версий — ключевой момент. Ниже приведены общепринятые соответствия для работы с API 28; конкретные версии Gradle и плагина зависят от вашей версии Android Studio, поэтому сверяйтесь с официальной документацией по совместимости.
| Компонент | Рекомендуемое значение | Примечание |
|---|---|---|
| compileSdkVersion | 28 | Требует установленную платформу Android 9.0 |
| Build-Tools | 28.0.3 | Финальная ревизия ветки 28 |
| Support Library | 28.0.0 | Последний релиз support library |
| Android Gradle Plugin | 3.2.x – 3.5.x | Зависит от версии Android Studio |
| targetSdkVersion | 28 | Включает поведенческие изменения Android 9 |
Поведенческие изменения Android 9 (API 28)
При выставлении targetSdkVersion 28 приложение начинает работать по правилам Android 9, и это нужно учитывать. Ключевое изменение — запрет незашифрованного HTTP-трафика по умолчанию: cleartext-запросы блокируются, если явно не разрешены в networkSecurityConfig или атрибуте android:usesCleartextTraffic="true" в манифесте.
Также в Android 9 ужесточены ограничения на фоновую работу: доступ к микрофону, камере и датчикам из фоновых сервисов ограничен, а для фонового выполнения задач рекомендуется использовать WorkManager или foreground-сервисы с уведомлением. Ещё одно заметное изменение — поддержка вырезов экрана (display cutout) через layoutInDisplayCutoutMode.
⚠️ Внимание: если ваше приложение обращается к серверу по HTTP и после установки targetSdkVersion 28 перестало получать данные, проверьте в первую очередь настройки сетевой безопасности — это наиболее вероятная причина.
Как временно разрешить HTTP-трафик
Добавьте в тег application манифеста атрибут android:usesCleartextTraffic="true". Более безопасный вариант — создать res/xml/network_security_config.xml и разрешить cleartext только для конкретных доменов, а затем сослаться на файл через android:networkSecurityConfig.
Типичные ошибки при работе с SDK 28
Разберём сбои, которые чаще всего встречаются при сборке проектов под API 28. Первое, что стоит проверить при любой ошибке платформы, — совпадает ли путь к SDK в local.properties с реальным расположением каталога, особенно если проект переносился с другого компьютера.
- ❌ Failed to find Platform SDK — платформа android-28 не установлена; установите её через SDK Manager;
- ❌ Licenses not accepted — выполните
sdkmanager --licensesи подтвердите все пункты; - ❌ Program type already present — конфликт support library и AndroidX; проведите миграцию или выровняйте зависимости;
- ❌ Cleartext HTTP traffic not permitted — настройте networkSecurityConfig, как описано выше.
Если ошибка не воспроизводится по описанным сценариям, полезно выполнить Build → Clean Project и File → Invalidate Caches / Restart — устаревшие кэши Gradle нередко маскируют реальную причину сбоя.
Часто задаваемые вопросы
Чем SDK 28 отличается от SDK 29 и выше?
API 28 соответствует Android 9 Pie, а API 29 — Android 10. Основные различия касаются поведенческих изменений: scoped storage, ограничения на фоновый геолокацию и другие нововведения появились именно в 29-м уровне. Для старых проектов 28-й уровень часто остаётся «безопасной» точкой.
Можно ли собирать проект с compileSdkVersion 28 в новых версиях Android Studio?
Да, новые версии Android Studio позволяют компилировать против старых платформ — достаточно установить Android 9.0 через SDK Manager. Однако очень старые версии Gradle-плагина могут быть несовместимы с новой IDE, и их придётся обновить с правкой конфигурации.
Где скачать Android SDK 28 отдельно от Android Studio?
Отдельного дистрибутива платформы не существует — пакеты загружаются через SDK Manager или утилиту командной строки sdkmanager из состава command line tools с официального сайта Android Developers.
Нужно ли устанавливать системные образы для API 28?
Образы нужны только для запуска эмулятора на Android 9. Если вы тестируете на физическом устройстве, достаточно платформы и Build-Tools — это сэкономит место на диске.
Что делать, если Gradle требует более новый compileSdkVersion?
Некоторые свежие библиотеки требуют compileSdkVersion выше 28. В таком случае либо понизьте версию проблемной библиотеки до совместимой, либо поднимите compileSdkVersion — это не меняет поведение приложения на устройстве, если targetSdkVersion остаётся прежним.