· Publishing · 6 мин чтения

Публикация карточки приложения без fastlane

Публикация карточки приложения без fastlane
TL;DR. Команды deliver и supply из fastlane отправляют метаданные, скриншоты и бинарник в оба стора прямо из командной строки — бесплатно, с открытым кодом, и всегда актуально, если подключить их к CI. Цена в том, что кто-то должен построить и поддерживать этот пайплайн: Ruby, Xcode или Gradle, Fastfile и поддержку UI-тестов. Если пайплайн вам не нужен, no-code пути — это веб-консоли сторов, сами API сторов или инструмент, который составит карточку за вас. Mokbi — тот самый no-code путь, который реально публикует: он оформляет твои скриншоты и feature graphic, пишет и переводит всю карточку на 50 языков и отправляет её прямо в Google Play через Play Developer API, а версию для App Store подготавливает в App Store Connect — тебе останется только нажать «Отправить». Никакого Ruby, Xcode и UI-тестов.

fastlane — стандартный ответ не просто так. Это бесплатный набор инструментов с лицензией MIT, и его команда deliver (псевдоним upload_to_app_store) одной командой загружает скриншоты, видео App Preview, метаданные и бинарник в App Store Connect. На стороне Android supply (псевдоним upload_to_play_store) делает то же самое для Google Play — метаданные, скриншоты и APK или app bundle. Запусти любую из них из CI, и карточка будет пересобираться при каждом релизе, никогда не расходясь с самим приложением.

Так что честный вопрос не «хорош ли fastlane» — он хорош. Вопрос в том, готов ли ты сам поддерживать пайплайн, который делает его хорошим, или предпочтёшь обновлять карточку без него.

Что на самом деле делают deliver и supply

Оба — обёртки над официальными API сторов. За кулисами fastlane делает те же вызовы, что мог бы сделать ты сам.

  • deliver (iOS). Загружает название приложения, описание, ключевые слова, release notes, ссылки, категории и информацию для ревью, плюс локализованные скриншоты и превью-видео. Бинарник уходит через iTMSTransporter от Apple, а метаданные — через API App Store Connect. Может также отправить на ревью после загрузки.
  • supply (Android). Загружает метаданные, скриншоты и APK или AAB в Google Play, выбирая трек и продвигая сборки. Есть острый угол: загруженные скриншоты заменяют существующие для локали, а не добавляются к ним.

Оба аутентифицируются по API-ключам — ключ App Store Connect API для Apple, JSON сервисного аккаунта для Google, — так что после настройки они работают без присмотра в CI. В этом вся суть: метаданные и скриншоты как код, версионируются в репозитории, отгружаются с каждой сборкой.

Реальная цена fastlane

fastlane бесплатен для установки и запуска. Цена — настройка и поддержка, и платится она инженерным временем.

  • Рантайм, который нужно поддерживать. fastlane — это тулчейн на Ruby (3.0+), обычно управляемый через Bundler. Работа с iOS требует Xcode на Mac; Android — стороны Gradle. Это реальная машинерия, которую нужно ставить и держать пропатченной.
  • Конфиги, которые нужно писать. Fastfile описывает твои lanes; Deliverfile или папка метаданных Android хранит детали карточки. Настроить первую рабочую версию обычно занимает день-два.
  • CI, который нужно поднять. Автоматизация окупается только внутри пайплайна, а значит нужны API-ключи, секреты подписи и настроенный, поддерживаемый в рабочем состоянии билд-раннер.
  • Поддержка захвата скриншотов, если ты им пользуешься. snapshot из fastlane прогоняет UI-тесты в симуляторе, чтобы захватить скриншоты по локалям. Эти тесты хрупкие: обычно установка нормально работает пару месяцев, потом изменение интерфейса ломает флоу, и код тестов приходится переписывать под новые состояния. snapshot по умолчанию перезапускает нестабильные прогоны, что маскирует недетерминизм из-за сети и данных, а не устраняет его. А сырой вывод не содержит подписей и фонов — команды часто всё равно доводят дизайн в отдельном инструменте.

Ничего из этого не в упрёк инструменту. Это честный обмен: fastlane превращает повторяющуюся ручную рутину в код, а взамен ты поддерживаешь код. Для команды, отгружающейся еженедельно, с инженером, отвечающим за автоматизацию релизов, это хорошая сделка. Для соло-разработчика или менеджера, обновляющего карточку пару раз в год, пайплайн может стоить дороже в поддержке, чем экономит.

Обновление карточки без fastlane

Если пропускаешь fastlane, остаются три способа доставить метаданные и скриншоты в сторы.

1. Веб-консоли сторов

Самый простой путь. В App Store Connect ты редактируешь каждую локализацию вручную и вставляешь скриншоты в слоты нужного размера экрана; в Google Play Console редактируешь карточку по языкам и загружаешь скриншоты там. Никакого кода, ключей, ничего поддерживать — просто кликаешь. Минус в том, что это полностью вручную, и делать это по многим локалям по одному экрану за раз медленно и чревато ошибками. Нормально для одного-двух языков; мучительно для 20.

2. API сторов напрямую

Оба стора предоставляют те же API, что вызывает fastlane, так что можно писать скрипты против них, не подключая стек Ruby от fastlane. App Store Connect API от Apple — это REST API с аутентификацией через короткоживущий JWT (ES256, подписанный твоим ключом), с эндпоинтами для создания наборов скриншотов, резервирования и загрузки байтов изображений и патча метаданных. Play Developer API от Google использует модель «edits» — открываешь edit, меняешь карточки и изображения, потом коммитишь его. Это даёт полный контроль и подходит для кастомной внутренней панели, но теперь ты сам пишешь и поддерживаешь эту интеграцию. Это меньшее обязательство, чем полноценный пайплайн fastlane, но не нулевое.

3. Управляемый инструмент, составляющий карточку

Другой no-code путь — инструмент, который сам создаёт карточку за тебя, так что единственное, что остаётся, — доставить её в стор. Здесь баланс меняется на противоположный: вместо инженера, владеющего пайплайном, менеджер или дизайнер владеет карточкой напрямую в браузере. Ты меняешь CI-автоматизацию на полное отсутствие потребности в инженере.

Где здесь место Mokbi — честно

Mokbi не пытается заменить CI-историю fastlane. Если твоя цель — скриншоты, пересобирающиеся при каждой сборке без участия человека, пайплайн fastlane — правильный инструмент, и он бесплатный. Мы — для другого случая: для того, кто хочет отгрузить отполированную карточку, не трогая Ruby, Xcode, Fastfile или UI-тест.

В браузере ты оформляешь скриншоты, пишешь черновик текста карточки и переводишь всю карточку на 50 языков — без симулятора, без CI, без кода. Дизайнер или менеджер может владеть всей маркетинговой поверхностью от начала до конца.

А вот и последняя миля, и Mokbi её тоже покрывает. Он оформляет скриншоты и feature graphic, пишет и переводит всю карточку на 50 языков, а затем отправляет результат прямо в Google Play через Play Developer API и готовит версию для App Store в App Store Connect — остаётся только нажать «Отправить»: этот финальный шаг и само ревью требует именно Apple, это её правило, а не пробел с нашей стороны. Те же эндпоинты, что вызывает fastlane, минус пайплайн.

Что выбрать в твоём случае

  • Отгружаешься еженедельно, есть инженер, нужен нулевой разрыв? fastlane. Он бесплатный, автоматизированный и не даёт скриншотам и метаданным разойтись с приложением. Ничего лучше здесь нет.
  • Обновляешь карточку пару раз в год, лишнего CI нет? Веб-консоль или инструмент, составляющий карточку. Поддержка пайплайна не окупается при такой частоте.
  • Нужен программный контроль, но не стек fastlane? Вызывай напрямую App Store Connect API и Play Developer API.
  • Хочешь, чтобы дизайнер или менеджер владел карточкой на многих языках? Пиши черновик, переводи и публикуй прямо из браузера — Mokbi отправит в Google Play и подготовит версию для App Store, готовую к отправке.

fastlane заслуженно занимает место бесплатного автоматизированного лидера. No-code путь не «лучше» — это другой обмен: ты отказываешься от CI-автоматизации, а взамен никому не нужно строить или нянчить пайплайн, чтобы обновить карточку.

Что почитать дальше

Открыть редактор →