Я обнаружил, что использование многоуровневого xcconfigs помогает решить эту проблему.
Работая со сложными сборками с приложениями, библиотеками и SDK, вы должны иметь возможность координировать не просто числа сборок для проекта, но и совместимость номеров сборок.
Вы можете создать заголовок управления сборкой, который по сути является текстовым файлом с номерами итераций сборки (или информацией о версиях, например, beta, dev, rel), и импортировать его через цепочку импорта xcconfig для каждого проекта.
В этот момент у вас может быть целевой шаг сценария сборки, в который будет встроена информация о вашей сборке / версии.Это также лучше всего сделать, поместив удерживающий текст в plist и запустив PlistBuddy в разделы производного файла / встроенного файла.(Таким образом, ваши изменения управления исходным кодом минимальны)
Если вы можете написать сценарий выполнения сборки, который выполняет необходимый поворот номера сборки (или, что еще лучше, использовать систему, подобную bamboo, которая создает файл для вас), выможет держать это отдельно от вашего кода.Конечно, если вам нужно сделать это и отследить, вам, возможно, придется проверить измененный номер сборки, чтобы позволить ему увеличиваться.
В результате я смог сохранить номера сборок вдольстрока: 2.0.3 b34 (3473) Где у нас есть номер сборки и точка сборки SVN checkout.(Пожалуйста, не стесняйтесь, я старая школа)
Действия Pre / Post больше подходят для уведомлений или процессов Uber: отправьте электронное письмо о том, что сборка началась / не выполнена / и т. Д. Скопируйте готовый проект на сервер готового проекта.
Все остальное работает лучше, чем сценарий сборки.
(И как всегда: заставить фазу сценария вызывать внешний файл сценария. НЕ вставляйте свой сценарий в проект, это ад на контроле исходного кодафайл проекта)
Надеюсь, это поможет.