Mobile Release Guide — Архыз.CLUB¶
Полный путь от исходников до публикации в Google Play / RuStore / App Store.
1. Требования¶
Локально (для Android)¶
- Node.js 20+
- JDK 21 (Capacitor 8 требует именно 21):
C:\Program Files\Eclipse Adoptium\jdk-21.0.10.7-hotspot - Android SDK (через Android Studio):
C:\Users\Roman\AppData\Local\Android\Sdk - Android Studio — для UI отладки и эмулятора (опционально)
Для iOS¶
- macOS (Xcode 15+)
- Apple Developer account ($99/год)
2. Android — Debug APK (для теста на телефоне)¶
cd tourist-app
bash scripts/build-android-debug.sh
Результат: tourist-app/android/app/build/outputs/apk/debug/app-debug.apk (~14 MB)
Установка на телефон:
adb install -r tourist-app/android/app/build/outputs/apk/debug/app-debug.apk
3. Android — Release AAB (для Google Play / RuStore)¶
3.1. Один раз — создать release-keystore¶
cd tourist-app/android
keytool -genkey -v -keystore arkhyz-release.keystore \
-alias arkhyz -keyalg RSA -keysize 2048 -validity 10000
Запомнить пароли: <store-password> и <key-password>.
3.2. Создать tourist-app/android/keystore.properties¶
storeFile=arkhyz-release.keystore
storePassword=<store-password>
keyAlias=arkhyz
keyPassword=<key-password>
Важно:
*.keystoreиkeystore.propertiesв.gitignore— НЕ коммитить!
3.3. Сборка¶
cd tourist-app
bash scripts/build-android-release.sh
Результат: tourist-app/android/app/build/outputs/bundle/release/app-release.aab
3.4. Публикация¶
Google Play Console → Создать приложение ru.arkhyzclub.app → Внутреннее тестирование → Загрузить AAB → Добавить тестеров (email-list).
RuStore Console → создать приложение → загрузить AAB → отправить на модерацию.
4. iOS — TestFlight (только на macOS)¶
4.1. Первая инициализация¶
cd tourist-app
bash scripts/build-ios.sh
Скрипт создаст iOS-проект (npx cap add ios), сделает cap sync и откроет Xcode.
4.2. В Xcode¶
- Product → Scheme → "App"
- Targets → App → General → Identity → Bundle Identifier
ru.arkhyzclub.app - Signing & Capabilities → выбрать Team (Apple Developer)
- + Capability → Push Notifications
- + Capability → Background Modes → ☑ Remote notifications
- Product → Archive (минут 5)
- Window → Organizer → Distribute App → App Store Connect → Upload
- App Store Connect (https://appstoreconnect.apple.com) → TestFlight → Internal Testing → добавить тестеров (Apple ID)
5. Push-нотификации — итоговая настройка¶
5.1. Firebase (Android)¶
- Создать проект на https://console.firebase.google.com
- Add app → Android → пакет
ru.arkhyzclub.app - Скачать
google-services.json→ положить вtourist-app/android/app/ - Пересобрать APK/AAB — Capacitor сам подключит FCM
5.2. APNs (iOS) — через Apple Developer + Firebase¶
- Apple Developer → Keys → создать APNs Auth Key (
.p8) - Firebase Console → Project Settings → Cloud Messaging → Apple app config → загрузить
.p8+ Key ID + Team ID - В Xcode уже включен
Push Notificationscapability — больше ничего не надо
5.3. AppMetrica server-side push¶
В кабинете https://appmetrica.yandex.ru → ваше приложение → Push-кампании → API:
- скопировать Push API key → в .env как APPMETRICA_POST_API_KEY=<...>
- скопировать Group ID (число) → APPMETRICA_GROUP_ID=<...>
cd /path/to/arkhyz-admin-main
PROJECT_ROOT="." docker compose \
-f docker-compose.yml \
-f infra/compose/docker-compose.services.yml \
up -d platform-svc
Проверка:
curl -X POST http://localhost:9108/api/v1/push/test \
-H 'Content-Type: application/json' \
-H 'X-User-Id: <real-user-id>' \
-d '{"title":"Test","body":"Hello from AppMetrica"}'
6. Versioning¶
При каждом релизе бампать:
| Файл | Поле |
|---|---|
tourist-app/package.json |
version |
tourist-app/android/app/build.gradle |
versionCode (+1) и versionName |
tourist-app/ios/App/App.xcodeproj (Xcode UI) |
Build / Version |
Текущая версия: 1.0.0 / versionCode 100
7. Быстрая команда «всё пересобрать»¶
cd tourist-app
npm run build # Vite → dist/
npx cap sync # → android/ + ios/
bash scripts/build-android-debug.sh # APK для теста
bash scripts/build-android-release.sh # AAB для сторов (нужен keystore)