Android SDK: arm64, NDK и ZIP‑пакеты — практический гид
Короткий ответ: ставьте SDK под архитектуру вашей ОС; NDK нужен только если проект содержит C/C++ (или библиотеки с нативным кодом); ZIP‑пакеты удобны для CI и офлайн‑сред. Ниже — краткие правила и шаги установки, которые можно применить сразу.
Что это и когда что требуется
Android SDK — набор инструментов для сборки и отладки. В понятиях, которые путают новичков:
- arm64 (AArch64) как хост — это архитектура вашей машины (например, Apple Silicon).
- arm64 как target — это архитектура устройств (arm64-v8a) для нативных библиотек внутри APK/AAB.
NDK — Native Development Kit для сборки .so из C/C++. ZIP‑пакеты — это предварительно распакованные архивы SDK/NDK, удобные для серверов и CI.
Не путайте host‑архитектуру (где вы устанавливаете SDK) и target‑ABI (которую вы собираете для устройств).
Когда нужен SDK под arm64:
- Вы работаете на Mac с Apple Silicon и хотите запускать инструменты нативно.
- Ваш CI/сервер на ARM (docker/instance).
Когда нужен NDK:
- В проекте есть папки c/cpp, CMakeLists.txt или блок externalNativeBuild.
- Используются библиотеки с нативными бинарями (внешние .so, игровые движки, обработка аудио/видео).
Когда NDK не нужен:
- Чистое приложение на Kotlin/Java без JNI и без C/C++ исходников.
Если Gradle не жалуется на отсутствие NDK и сборка проходит — не ставьте NDK заранее. Подключайте по требованию.
Как установить — три рабочих сценария
1) Быстро: через Android Studio (GUI)
- Установите Android Studio для вашей ОС/архитектуры.
- Откройте SDK Manager → SDK Platforms, Tools.
- Установите: platform‑tools, build‑tools, platforms; при необходимости — Android Emulator и NDK.
Это удобно для локальной работы, автоматических обновлений и управления AVD.
2) Для CI и серверов: command‑line tools + sdkmanager
- Скачайте Command line tools (ZIP) для вашей ОС.
- Распакуйте в каталог, например ~/Android/cmdline-tools/latest.
- Пропишите переменные:
- ANDROID_SDK_ROOT или ANDROID_HOME → корень SDK.
- Добавьте в PATH: cmdline-tools/latest/bin и platform-tools.
- Установите нужные пакеты: sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0" "ndk;25.2.9519653" Этот способ легко автоматизировать и версионировать в CI.
3) Офлайн/повторяемо: распаковка ZIP‑пакетов
- Скачайте ZIP SDK/NDK нужной версии и архитектуры.
- Распакуйте: SDK → /opt/android/sdk, NDK → /opt/android/sdk/ndk/<версия>.
- Укажите пути в local.properties или переменных окружения.
Подходит для изолированных сред и гарантирует идентичность окружений.
Следите за совместимостью версий: слишком свежий или старый NDK может ломать сборку — фиксируйте версию в документации/скриптах.
Настройка Gradle и проверка сборки
- local.properties (примеры):
sdk.dir=/полный/путь/к/android/sdk
ndk.dir=/полный/путь/к/android/sdk/ndk/25.2.9519653
- Ограничение ABI в модуле (app/build.gradle):
android {
defaultConfig {
ndk {
abiFilters "armeabi-v7a", "arm64-v8a" // включите arm64-v8a если нужны 64‑бит библиотеки
}
}
}
- Для уменьшения размера собирайте split per ABI:
- Настройте splits.abi в Gradle, чтобы отдавать пользователям только нужный APK/AAB.
Проверки:
- adb, sdkmanager доступны в PATH.
- gradle assembleDebug собирает модули без ошибок.
- Если сборка жалуется на ndkVersion, укажите в build.gradle нужную версию:
android {
ndkVersion "25.2.9519653"
}
Частые ошибки
- Неправильный путь в local.properties (sdk.dir/ndk.dir).
- Отсутствие platform‑tools в PATH — adb не найден.
- Несовместимость ndkVersion и Android Gradle Plugin.
- На Apple Silicon попытка запустить x86‑AVD без Rosetta → плохая производительность или ошибка.
- На CI забыли распаковать SDK/NDK или указать права доступа.
FAQ
- Нужен ли SDK под arm64 на x86 PC? Нет — ставьте SDK для архитектуры вашей ОС; target ABI настроится в Gradle.
- Как быстро понять, нужен ли NDK? Ищите CMakeLists.txt, папки c/cpp, externalNativeBuild в Gradle.
- Можно ли использовать ZIP‑пакеты на Windows и Linux одинаково? Да, но скачивайте соответствующие билды для каждой ОС/архитектуры.
- Что проще для команды: SDK Manager или ZIP? Для разработчиков — SDK Manager; для CI и стабильности — ZIP и cmdline tools.
Если нужно — могу подготовить готовые скрипты для установки SDK/NDK на Linux, macOS или Windows и пример конфигурации для GitHub Actions/GitLab CI.