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)

  1. Установите Android Studio для вашей ОС/архитектуры.
  2. Откройте SDK Manager → SDK Platforms, Tools.
  3. Установите: platform‑tools, build‑tools, platforms; при необходимости — Android Emulator и NDK.
    Это удобно для локальной работы, автоматических обновлений и управления AVD.

2) Для CI и серверов: command‑line tools + sdkmanager

  1. Скачайте Command line tools (ZIP) для вашей ОС.
  2. Распакуйте в каталог, например ~/Android/cmdline-tools/latest.
  3. Пропишите переменные:
  • ANDROID_SDK_ROOT или ANDROID_HOME → корень SDK.
  • Добавьте в PATH: cmdline-tools/latest/bin и platform-tools.
  1. Установите нужные пакеты: sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0" "ndk;25.2.9519653" Этот способ легко автоматизировать и версионировать в CI.

3) Офлайн/повторяемо: распаковка ZIP‑пакетов

  1. Скачайте ZIP SDK/NDK нужной версии и архитектуры.
  2. Распакуйте: SDK → /opt/android/sdk, NDK → /opt/android/sdk/ndk/<версия>.
  3. Укажите пути в local.properties или переменных окружения.
    Подходит для изолированных сред и гарантирует идентичность окружений.

Следите за совместимостью версий: слишком свежий или старый NDK может ломать сборку — фиксируйте версию в документации/скриптах.

Настройка Gradle и проверка сборки

  1. local.properties (примеры):
sdk.dir=/полный/путь/к/android/sdk
ndk.dir=/полный/путь/к/android/sdk/ndk/25.2.9519653
  1. Ограничение ABI в модуле (app/build.gradle):
android {
  defaultConfig {
    ndk {
      abiFilters "armeabi-v7a", "arm64-v8a" // включите arm64-v8a если нужны 64‑бит библиотеки
    }
  }
}
  1. Для уменьшения размера собирайте 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.