В современном мире разработки приложений для платформ Apple важную роль играет автоматизация процессов сборки. Одним из ключевых аспектов является автоматическое увеличение номера сборки (build number), которое значительно упрощает управление версиями и помогает избежать ошибок при публикации приложения. Несмотря на множество способов реализации, не существует универсального и простого решения, подходящего для любого проекта. Однако существует проверенный и эффективный метод, который можно адаптировать под большинство задач и требований. Этот подход включает использование конфигурационных файлов, скриптов в схемах Xcode и правильную ссылку на переменные сборки внутри проекта.
Процесс автоматического инкрементирования номера сборки начинается с создания специального конфигурационного файла с расширением .xcconfig. Этот файл предназначен для хранения значений, которые Xcode применяет во время компиляции и сборки приложения. Создание такого файла позволяет централизованно управлять параметрами сборки, что особенно актуально при работе с командой или в крупных проектах. Одним из наиболее удобных способов автоматизации является добавление скрипта как Pre-Action в схемы сборки.
В Xcode существует возможность редактирования схемы через меню Product и пункт Scheme, где нужно выбрать Edit Scheme. Там можно добавить Pre-action script, который будет выполняться перед началом сборки или архивации. Такой скрипт способен автоматически генерировать актуальный номер сборки на основе текущей даты и времени. В качестве формата для номера сборки часто выбирают обратный временной штамп, например в формате «годмесяцдень.часы минуты», что позволяет получать уникальное, сортируемое и легко читаемое значение.
Этот вариант удобен тем, что сразу понятно, когда была сделана сборка, и при этом нет необходимости вручную изменять версию. В скрипте происходит получение имени проекта из пути к файлу .xcodeproj, а затем формируется и записывается строка с новым значением номера сборки в созданный ранее .xcconfig файл. После выполнения этой операции Xcode автоматически применит обновленную версию номера сборки при следующей компиляции.
Чтобы использовать такой файл конфигурации в проекте, нужно назначить его как базовый конфигурационный файл на уровне проекта или отдельной цели (target). Это делается в настройках Xcode, где открывается вкладка Info, и для проекта или цели выбирается ранее созданный BuildNumber.xcconfig. После этого в параметрах сборки указывается использовать переменную из файла, например CURRENT_PROJECT_VERSION, для параметра Current Project Version. Важно понимать, что внутри приложения актуальный номер сборки отображается через CFBundleVersion, который берётся из настроек проекта.
Использование переменной из .xcconfig позволяет быть уверенным в том, что информация о версии и номере сборки всегда синхронизирована с автоматическим скриптом, а разработчики и система сборки не забывают обновлять этот параметр вручную. Автоматизация инкрементирования номера сборки имеет ряд значительных преимуществ. Во-первых, она исключает человеческий фактор, снижая вероятность опечаток или задержек при выпуске обновлений. Во-вторых, упрощается трассировка и отладка, так как номер сборки напрямую связан со временем создания.
В-третьих, такой подход облегчает интеграцию с системами непрерывной интеграции (CI/CD), которые могут автоматически собирать и распространять новые версии без вмешательства разработчиков. Несмотря на кажущуюся простоту, данный метод можно гибко настраивать под индивидуальные требования. В скриптах можно использовать иные форматы номера, добавлять дополнительные проверки или интегрировать с системами контроля версий. Например, можно добавлять хеш коммита или номер ветки для более точного обозначения состояния проекта. Дополнительно стоит учитывать особенности работы с несколькими таргетами или конфигурациями в одном проекте.
Можно создавать отдельные конфигурационные файлы для каждого таргета и менять скрипты в зависимости от нужд. Это помогает избежать конфликтов и путаницы в больших и сложных приложениях. В итоге, автоматическое увеличение номера сборки является важной и полезной практикой для всех, кто занимается разработкой под iOS и macOS с использованием Xcode. Такой подход делает процессы публикации более прозрачными и упрощает жизненный цикл продукта. Внедрение простого скрипта и правильная конфигурация проекта позволят сэкономить время и избежать множества проблем при управлении версиями.
Подводя итог, можно сказать, что для автоматического инкрементирования номера сборки достаточно создать .xcconfig файл, добавить Pre-action скрипт с генерацией временного номера сборки, назначить этот файл в настройках проекта, а также указать использование переменной CURRENT_PROJECT_VERSION. Этот функционал обеспечивает актуальность и уникальность каждого билда и помогает эффективно организовать процесс разработки и выпуска приложений. Такой подход отлично зарекомендовал себя в среде профессиональных разработчиков и легко адаптируется под любые проекты и требования.