Автоматизация публикации приложений с помощью fastlane

Максимально быстрое выполнение рутинных и однотипных задач является важной частью при разработке приложений. К таким задачам можно отнести сборку релизной или бета-версии APK-файла и публикацию в магазине приложений. Чтобы ускорить этот процесс, существует утилита, которая называется fastlane.

fastlane — утилита, которая позволяет автоматизировать развёртывание и публикацию приложений на iOS и Android. Его работа заключается в решении утомительных задач, таких как создание скриншотов, добавление подписи кода и публикация приложения в магазине. В частности, про автоматическое создание скриншотов мы писали ранее в статье про screengrab. fastlane сразу загружает все необходимые данные при публикации, избавляя разработчика от выполнения лишних действий.

Подробная документация по fastlane доступна на их сайте.

Официально fastlane поддерживается только на macOS, однако также работает на Linux и Windows (в случае с Windows не все компоненты fastlane работают хорошо). В данной статье мы разберём установку и настройку fastlane на Linux и опубликуем с его помощью приложение в Google Play.

Перед тем, как начать пользоваться fastlane, его необходимо установить. Поскольку он находится на RubyGems, нужно будет установить компоненты Ruby, для этого в терминале напишем следующую команду.

Для Fedora:

sudo dnf install ruby-devel

Для Ubuntu:

sudo apt-get install ruby-dev

После того, как нужные компоненты будут установлены, мы сможем скачать и установить fastlane из системы управления пакетами RubyGems, введя следующую команду:

sudo gem install fastlane -NV

Теперь следующим шагом будет получение ключа, с помощью которого fastlane во время работы будет получать доступ к Google Play API. Для этого  перейдём в консоль и зайдём в Настройки.

В настройках выберем Аккаунт разработчикаДоступ к API. Если у вас аккаунт не связан с Google Play API, вы увидите сообщение о начале работы с предложением создать проект.

После того, как соединение будет установлено, нужно создать аккаунт приложения, в котором и будет сгенерирован ключ доступа к API. Для этого в разделе Аккаунты приложений выберем Создать аккаунт приложения.

Появится диалоговое окно, предлагающее перейти в Google API Console.

После того, как мы перейдём на сайт Google API Console, нам нужно будет создать новый сервисный аккаунт. Нажимаем Создать сервисный аккаунт.

В открывшемся окне вводим название сервисного аккаунта, задаём роль (Проект — Владелец или Проект — Редактор) и выбираем Создать новый закрытый ключ, в качестве типа ключа указываем JSON. После этого нажимаем создать и завершаем создание сервисного аккаунта.

Важно! При создании аккаунта на компьютер будет скачан сгенерированный ключ в формате JSON. Не теряйте его, поскольку именно он и нужен fastlane для того, чтобы работать с консолью Google Play.

Когда создание сервисного аккаунта будет завершено, возвращаемся в консоль разработчика и нажимаем Готово. В результате мы должны увидеть в списке созданный аккаунт приложения.

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

fastlane init

Появится окно приветствия, после чего нужно будет ввести имя пакета, для которого мы хотим настроить fastlane, и путь до ключа, созданного перед этим. Также fastlane предложит загрузить метаданные приложения из Google Play, нажмите y, если хотите загрузить, и n, если не хотите. В данном случае метаданные нам понадобятся, поэтому согласимся на загрузку.

После ввода нужных данных, начнётся инициализация fastlane с загрузкой данных из Google Play (в случае, если вы согласились загрузить её).

Когда инициализация будет завершена, в папке проекта будет создана папка fastlane, а в терминале появится различная справочная информация по fastlane.

Если всё прошло хорошо, в папке fastlane будут содержаться следующие файлы:

  • Appfile — конфигурация fastlane, в частности здесь прописаны имя пакета и путь до ключа.
  • Fastfile — файл, в котором описывается, какие действия должен выполнять fastlane при выполнении команд.
  • Папка metadata/android, внутри которой находятся метаданные для каждой локали (описание приложения, логи изменений и т.д.).

Примечание: из-за ограничений Google Play API, скриншоты приложений и видео не могут быть загружены.

Нам в данном случае нужен файл Fastfile, откроем его. Там уже будет заготовок кода, который выполняет определённые операции. Чтобы fastlane выполнил код из этого файла, нужно заключить его в блок.

lane :<название "линии"> do
# ваш код
end

После чего в терминале, находясь в папке проекта, прописать следующую команду.

fastlane <название "линии">

Напишем следующую конфигурацию, которая будет генерировать подписанный APK файл и публиковать его в бету.

default_platform(:android)

platform :android do

  desc "Deploy a new Beta version to the Google Play"
  lane :beta do
    # указываем путь до файла деобфускации
    mapping_path = File.absolute_path "../app/build/outputs/mapping/undertale/release/mapping.txt"

    # собираем билд
    gradle(
      task: "clean assembleUndertaleRelease",
      properties: {
        "android.injected.signing.store.file" => "путь_до_хранилища_ключей",
        "android.injected.signing.store.password" => "пароль",
        "android.injected.signing.key.alias" => "имя_ключа",
        "android.injected.signing.key.password" => "пароль",
      }
    )

    # публикуем в бета-канал
    upload_to_play_store(track: 'beta',
      mapping: mapping_path,
      skip_upload_metadata: false,
      skip_upload_images: true,
      skip_upload_screenshots: true,
      skip_upload_apk: false)
  end

end

В начале вызывается сборка нужного билда с помощью команды gradle, которой передаётся собственно команда для сборки и данные ключа подписи для публикации.

Затем выполняется команда upload_to_play_store, которая является аналогом команды supply со следующие параметрами:

  • track — канал, в который нужно опубликовать приложение.
  • mapping — путь до файла деобфускации.
  • skip_upload_metadata — true, чтобы не загружать метаданны, и false, чтобы загружать.
  • skip_upload_images — true, чтобы не загружать изображения, и false, чтобы загружать.
  • skip_upload_screenshots — true, чтобы не загружать скриншоты, и false, чтобы загружать.
  • skip_upload_apk — true, чтобы не загружать APK-файл, и false, чтобы загружать.

Примечание: если вы хотите опубликовать приложение в релиз, вам достаточно убрать параметр track, поскольку по умолчанию публикация идёт в релизный канал.

Чтобы добавить список изменений в версии, нужно открыть папку /metadata/android/ и в папке каждой локали создать файл, в котором будет собственно список изменений. При этом имя файла должно совпадать с кодом версии приложения. Например, если вы публикуете приложение с кодом версии 9, то список изменений должен иметь название 9.txt, в противном случае fastlane при выполнении не подцепит его.

Теперь, чтобы запустить команды на выполнение, достаточно в терминале написать следующую строку.

fastlane beta

fastlane начнёт выполнять операции, прописанные для этой команды.

Когда выполнение дойдёт до публикации, появится суммарная информация о том, какие операции нужно выполнить и какие файлы включить, после чего начнётся обновление метаданных и загрузка APK.

Когда публикация будет завершена, появится сообщение об успешном выполнении операций и окно со списком выполненных операций.

После этого, зайдя в консоли разработчика в Версии приложения опубликованного приложения, можно обнаружить в бета-канале новую, только что опубликованную, версию приложения.

Таким образом, один раз написав файл конфигурации, мы оптимизировали процесс создания подписанного APK и его публикации в Google Play, упростив тем самым себе работу.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *