Как настроить 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 идёт в проекте. Рекомендуемый порядок:
- Node.js и Git.
- JDK нужной версии.
- Android Studio → через неё установите SDK Platforms, Build-Tools, Platform-Tools и Emulator.
- Настройте переменные окружения.
- Проверьте
npx react-native run-android.
Мини‑чек: после установки выполните node -v, git --version, java -version, adb version.
Настройка SDK, JDK, эмулятора и переменных окружения
- JDK:
- Выберите версию по требованиям RN (проверьте docs и
android/build.gradle). - Установите и задайте
JAVA_HOME. Пример macOS/Linux:
- Выберите версию по требованиям RN (проверьте docs и
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.
- Эмулятор (AVD):
- В Device Manager создайте AVD (рекомендуется x86_64 образ).
- Включите аппаратную виртуализацию (HAXM/Hypervisor).
- Запустите эмулятор и проверьте
adb devices— устройство должно быть в статусеdevice.
Если порт Metro (8081) занят, запускайте: npx react-native start --port 8088, и указывайте порт при разработке.
Запуск в отладке и сборка debug APK
- В корне проекта:
npm installилиyarn.npx react-native start(Metro).- В другом терминале:
npx react-native run-android— соберёт и установит debug‑версию на устройство/AVD.
- Сборка 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
- Создайте keystore:
keytool -genkeypair -v -keystore myapp-release-key.jks -alias myapp-key-alias -keyalg RSA -keysize 2048 -validity 10000
Храните keystore в безопасном месте (не в публичном репозитории).
- Конфигурация (пример):
- В
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.
- Включите USB‑отладку, подтвердите RSA‑ключ, перезапустите
- Metro порт занят:
- Запустите Metro на другом порту и укажите порт при запуске.
FAQ
- Нужно ли ставить Gradle вручную?
- Нет: проект использует Gradle Wrapper (
gradlew), которая подтянет совместимую версию.
- Нет: проект использует Gradle Wrapper (
- Можно ли хранить 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.