name: android-release description: >- Пошаговый регламент выпуска Android-приложения MeTravel: native smoke на устройстве → подготовка стора (Google Play) → прод-сборка AAB → submit. Делегирует профильным агентам. Триггеры: «выпусти Android-приложение», «релиз Android», «опубликовать в Google Play», «что нужно для выпуска приложения».
android-release
Регламент доведения Android-приложения до публикации в Google Play. Проект web-first — поэтому первая и главная фаза не «собрать», а доказать, что native вообще работает на устройстве.
Роли (делегирование)
android-native-audit(skill) — превентивный аудит native-совместимости кода.android-expert(agent) — правки FE-кода под native, разбор крашей.android-builder(agent) — EAS-сборки, submit в Google Play, статус.task-author/ticket-board— задачи на бэкенд (push endpoint и т.п.).
Текущая база (на момент написания регламента)
app.json: package: by.metravel.app, versionCode: 2, permissions
location/camera/media, adaptive+monochrome icon, splash, deep links на
metravel.by, App Shortcuts. eas.json: профили dev/preview (apk) + production
(app-bundle, autoIncrement). Карта native — WebView+Leaflet. Push реализован
(usePushNotifications.native.ts). Сборка — EAS (облако), Windows-friendly.
Фаза 1 — поднять и прогнать native (главный гейт)
android-native-audit— закрыть очевидные краши (web-API без guard, web-only импорты в native-бандл) до сборки.android-builder:npx expo-doctor→ починить →npm run android:build:dev(EAS) → поставить на эмулятор/устройство.- Smoke-прогон ключевых сценариев: запуск/splash, табы, карта (маркеры, попап, открытие точки), открытие путешествия, фото/галерея, логин (токен в SecureStore), избранное, поиск, push-permission. Фиксируй реальные краши.
android-expertчинит найденное → повтор dev-билда до зелёного прогона. Без успешного прогона на устройстве дальше не идём.
Фаза 2 — подготовка стора (можно параллельно)
- Google Play Developer аккаунт ($25) + создать приложение
by.metravel.app. - Сервис-аккаунт в Play Console → ключ как gitignored
.secrets/google-play-service-account.json(проверитьgit check-ignore), путь вeas.json submit.production.android.serviceAccountKeyPath(правку eas.json применяет владелец/по явному запросу — файл защищён). - Store listing (RU): иконка 512×512, feature graphic 1024×500, ≥2 скриншота телефона, краткое + полное описание, Privacy Policy URL (на сайте есть экран privacy — нужен публичный URL), Data Safety form — задекларировать сбор геолокации, фото/медиа, аналитики (GA4, Метрика).
Фаза 3 — бэкенд (если нужно)
- Проверить, есть ли endpoint регистрации push-токена (его дёргает
registerPushTokenApi). Нет —task-author: TASK Owner Backend + воркборд.
Фаза 4 — релиз
android-builder:npm run release:check(lint/typecheck/tests).npm run android:build:prod→ AAB (versionCode поднимется autoIncrement).npm run android:submit:latest→ track internal → проверить на реальных устройствах.- Промоут в production track после проверки.
Правила
- Защищённые файлы (
app.json,eas.json,plugins/**,scripts/**) — правки только по явному запросу владельца, диффом. - Секреты (ключ Google Play) — только gitignored файл, никогда в чат/логи/коммит.
- Не помечать фазу «готово», пока не верифицировано (код — typecheck/lint/оба
бандла; native — прогон на устройстве). Внешний блокер — явно
verify pending. - Бэкенд не править — только задачами.