Как настроить Android‑окружение для React Native и собрать приложение

В двух предложениях: установите Node.js и Git, JDK нужной версии, Android Studio + SDK, настройте переменные окружения (JAVA_HOME, ANDROID_HOME/PATH), создайте AVD или подключите устройство — затем npx react-native run-android для debug и ./gradlew assembleRelease / ./gradlew bundleRelease для релиза.

Оглавление {{TOC_AUTOMATIC}}

Что нужно установить и в каком порядке

Коротко: Node.js (LTS), Git, JDK (обычно 17, иногда 11), Android Studio (SDK, эмулятор), Gradle Wrapper идёт в проекте. Рекомендуемый порядок:

  1. Node.js и Git.
  2. JDK нужной версии.
  3. Android Studio → через неё установите SDK Platforms, Build-Tools, Platform-Tools и Emulator.
  4. Настройте переменные окружения.
  5. Проверьте npx react-native run-android.

Мини‑чек: после установки выполните node -v, git --version, java -version, adb version.

Настройка SDK, JDK, эмулятора и переменных окружения

  1. JDK:
    • Выберите версию по требованиям RN (проверьте docs и android/build.gradle).
    • Установите и задайте JAVA_HOME. Пример macOS/Linux:
     export JAVA_HOME=/path/to/jdk
     export PATH=$JAVA_HOME/bin:$PATH
     ```
   - Windows: задайте `JAVA_HOME` в Переменных среды и добавьте `%JAVA_HOME%\bin` в Path.

2. Android Studio и SDK:
   - В SDK Manager установите: Platform (например, Android 13/14), Android SDK Build-Tools, Platform-Tools, Emulator.
   - Обратите внимание на путь SDK (обычно `~/Library/Android/sdk`, `~/Android/Sdk` или `C:\Users\<User>\AppData\Local\Android\Sdk`).

3. Переменные окружения:
   - macOS/Linux:
     
 export ANDROID_HOME=/path/to/Android/sdk
 export ANDROID_SDK_ROOT=$ANDROID_HOME
 export PATH=$ANDROID_HOME/emulator:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$PATH
 ```
  • Windows: ANDROID_HOME = путь к SDK; в Path добавьте ...%\emulator, ...%\tools, ...%\tools\bin, ...%\platform-tools.
  1. Эмулятор (AVD):
    • В Device Manager создайте AVD (рекомендуется x86_64 образ).
    • Включите аппаратную виртуализацию (HAXM/Hypervisor).
    • Запустите эмулятор и проверьте adb devices — устройство должно быть в статусе device.

Если порт Metro (8081) занят, запускайте: npx react-native start --port 8088, и указывайте порт при разработке.

Запуск в отладке и сборка debug APK

  1. В корне проекта:
    • npm install или yarn.
    • npx react-native start (Metro).
    • В другом терминале: npx react-native run-android — соберёт и установит debug‑версию на устройство/AVD.
  2. Сборка debug APK вручную:
    • cd android && ./gradlew assembleDebug
    • Артефакт: android/app/build/outputs/apk/debug/app-debug.apk.
    • Установка: adb install -r android/app/build/outputs/apk/debug/app-debug.apk.

Подготовка релиза: keystore, подпись, сборка AAB/APK

  1. Создайте keystore:
   keytool -genkeypair -v -keystore myapp-release-key.jks -alias myapp-key-alias -keyalg RSA -keysize 2048 -validity 10000

Храните keystore в безопасном месте (не в публичном репозитории).

  1. Конфигурация (пример):
    • В android/gradle.properties добавьте переменные (лучше — в системных переменных/CI secrets, а не в VCS):
     MYAPP_UPLOAD_STORE_FILE=myapp-release-key.jks
     MYAPP_UPLOAD_KEY_ALIAS=myapp-key-alias
     MYAPP_UPLOAD_STORE_PASSWORD=store-password
     MYAPP_UPLOAD_KEY_PASSWORD=key-password
     ```
   - В `android/app/build.gradle` настройте `signingConfigs` и `buildTypes.release` с `signingConfig`.

3. Сборка релиза:
   - APK: `cd android && ./gradlew assembleRelease` → `android/app/build/outputs/apk/release/app-release.apk`.
   - AAB (рекомендуется для Google Play): `cd android && ./gradlew bundleRelease` → `android/app/build/outputs/bundle/release/app-release.aab`.

AAB позволяет Google Play формировать оптимизированные APK по ABI/плотности — пользователи получают только нужные артефакты.

Частые ошибки

  • SDK location not found / Failed to find Build Tools:
    • Проверьте local.properties (sdk.dir=/path/to/Android/sdk) и переменные окружения.
  • Unsupported Java version / Android Gradle plugin requires Java X:
    • Используйте требуемую версию JDK или согласуйте Gradle/AGP по таблице совместимости.
  • adb devices показывает nothing/unauthorized:
    • Включите USB‑отладку, подтвердите RSA‑ключ, перезапустите adb kill-server && adb start-server.
  • Metro порт занят:
    • Запустите Metro на другом порту и укажите порт при запуске.

FAQ

  • Нужно ли ставить Gradle вручную?
    • Нет: проект использует Gradle Wrapper (gradlew), которая подтянет совместимую версию.
  • Можно ли хранить keystore в репозитории?
    • Нет. Храните его в защищённом месте, лучше использовать CI/CD секреты для паролей.
  • Почему сборка на CI ломается, а локально работает?
    • Проверьте версии JDK, Android SDK, доступность SDK компонентов и переменные окружения в CI.

Практический чек‑лист: Node.js + Git, JDK + JAVA_HOME, Android Studio + SDK, ANDROID_HOME/PATH, AVD или устройство, npm install, npx react-native run-android, keystore настроен, ./gradlew assembleRelease / ./gradlew bundleRelease.