Connect with us

Разработка

Автоматизация увеличения номера сборки Xcode в кастомном формате

Управление номерами сборок в Xcode может быть непростым делом, особенно если вы хотите использовать нестандартный формат.

Опубликовано

/

     
     

Введение

Разработчики, работающие c iOS, наверняка сталкивались с необходимостью поиска простого и эффективного способа управления номерами сборки в своем кастомном формате. Если это так, то вы не одиноки. В этой статье мы рассмотрим, как автоматизировать процесс увеличения номеров сборок в Xcode с помощью кастомного формата, основанного на дате и счетчике. Целью является не только установка версии CFBundleVersion, но и обновление настроек проекта, что значительно упрощает жизнь разработчика.

Задача

Некоторое время назад мне понадобился метод управления номерами сборок на основе комбинации даты и счетчика. Конечно, существовали уже готовые решения. Например, команда agvtool bump хорошо работает с номерами сборок, основанными на счетчике, просто добавляя +1 к номеру. Однако она не справляется с задачей настройки формата.

Аналогично, PlistBuddy предлагал способ изменения версии CFBundleVersion, но не позволял изменять настройки проекта. Казалось, я уперся в стену. Но, как оказалось, решение было совсем рядом.

Вдохновение

Прорыв произошел после прочтения статьи Тревора с сайта theswift.dev. Его статья об использовании переменных окружения Xcode для автоматического увеличения номера сборки натолкнула на мысль.

Концепция была проста, но эффективна: хранить версию и номер сборки в файле проекта (точнее, в файле project.pbxproj), затем использовать $(CURRENT_PROJECT_VERSION) для номера сборки и $(MARKETING_VERSION) для версии в настройках сборки каждой цели и в файле Info.plist.

Такой подход открывал возможность задать собственный формат для номера сборки, который затем можно было распространить по всему проекту Xcode. Это был тот самый недостающий кусочек головоломки, который я так долго искал.

Пользовательский формат

С этой новой мыслью я решил реализовать пользовательский формат номера сборки YYYYMMDDC, где C — это счетчик для данного дня (например, 202306216 будет 6-й сборкой в этот день). Вот как это можно сделать.

Шаг 1: Создание конфигурационного файла

Прежде всего, необходимо создать в проекте новый конфигурационный файл *.xcconfig. В этом файле необходимо задать две пары ключ-значение: VERSION и BUILD_NUMBER. Вот как это должно выглядеть:

Автоматизация увеличения номера сборки Xcode в кастомном формате

Шаг 2. Настройка Xcode на использование файла конфигурации

Для того чтобы Xcode использовал новый файл конфигурации, необходимо задать его для каждой из конфигураций. Это можно сделать в колонке Project → Configurations → Based on Configuration File.

Автоматизация увеличения номера сборки Xcode в кастомном формате

Добавление файла конфигурации в настройки проекта для каждой конфигурации

Далее установите значение Current Project Verision в $(BUILD_NUMBER) и Marketing Version в $(VERSION). Это гарантирует, что Xcode знает, какой номер сборки и версию использовать для проекта.

Автоматизация увеличения номера сборки Xcode в кастомном формате

Установка $(CURRENT_PROJECT_VERSION) в $(BUILD_NUMBER)

Автоматизация увеличения номера сборки Xcode в кастомном формате

Установка $(MARKETING_VERSION) в $(VERSION)

Шаг 3. Автоматизация обновления номера сборки

Последним шагом является написание скрипта, который обновляет BUILD_NUMBER при каждом запуске сборки или при архивировании для TestFlight. Этого можно добиться, добавив для каждой схемы pre-build действие, вызывающее этот сценарий. У вас есть два варианта: написать скрипт непосредственно в приведенной форме или создать отдельный файл скрипта, прикрепить его к проекту Xcode и вызывать скрипт в действии предварительной сборки.

Я выбрал последний вариант. Это позволяет мне изменять скрипт непосредственно из редактора Xcode, не погружаясь в настройки схемы. Вот мой скрипт version.sh:

Автоматизация увеличения номера сборки Xcode в кастомном формате

И вот как я его вызываю:

Автоматизация увеличения номера сборки Xcode в кастомном формате

Настройка предварительных действий для схемы Build

 Управление маркетинговыми версиями

Теперь, если вы хотите увеличить номер маркетинговой версии, достаточно изменить значение VERSION в конфигурационном файле. Таким образом, контроль версий становится простым и понятным: достаточно отредактировать один файл — и больше не нужно лезть в настройки проекта.

Резюме

Управление номерами сборок в Xcode может быть непростым делом, особенно если вы хотите использовать нестандартный формат. Однако при правильном подходе можно автоматизировать этот процесс с высокой степенью кастомизации. Храня номера версий в конфигурационном файле и используя сценарий сборки для их увеличения, можно поддерживать последовательный, индивидуальный номер сборки во всем проекте.

Этот метод не только упрощает управление номерами сборок, но и обеспечивает обновление всех соответствующих настроек в проекте. Попробуйте и убедитесь в том, насколько это изменит управление проектами в Xcode.

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Telegram

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: