Выполнение script только для сборки "Архив" в Xcode 4
У меня есть script, который я запускаю с использованием osascript из Run script Build Phase в Xcode 4. Этот script выполняет некоторые проверки, чтобы попытаться поймать любую человеческую ошибку в plists и т.п.
Тем не менее, я действительно хочу запустить этот script, когда разработчик выбирает "Архив", а не запускает его каждый раз при их создании.
Есть ли способ тестирования для этой ситуации? Либо в оболочке script, либо в Apple Script?
Ответы
Ответ 1
В Xcode 4+ вы можете запустить этот script как предварительный или пост-действие script в действии "Архив" . Однако сценарии до и после действия не считаются частью самой сборки; их вывод не является частью журнала сборки, а сбой script не приведет к сбою сборки.
Если вы хотите включить этот script в качестве первоклассной части сборки, чтобы ее сбой привел к сбою сборки, тогда вы захотите сделать что-то еще. Создайте новую цель "Внешняя система сборки" и настройте ее для запуска script. Путь к вашему script может быть относительным путем относительно корня проекта.
Наконец, откройте основную схему проекта, а в теге "Build" добавьте новую цель проверки и установите ее только для включения в действие "Архив" . Это должно привести к тому, что ваша контрольная панель script будет запущена как часть сборки только при выборе "Архив" , а если script возвращает ненулевое значение, сборка завершится неудачно.
![A screenshot showing how to configure the scheme]()
Ответ 2
- Добавить "Новый запуск Script Этап" в проект "Сформировать фазы"
- Переместить (перетащить и сбросить) свой Script в нужное положение
- Проверьте "Запуск Script только при установке"
Если вы не выполняете 3., то Script будет работать все время, но если вы установите этот флажок, он будет работать только при архивировании.
Ответ 3
Быстрый тест в моей собственной системе не показывает разницы в подробном выходе script между прямыми "Build" и "Build and Archive".
Кроме того, вы не можете проверить наличие (или отсутствие) архива, поскольку он создается только в самом конце процесса, когда все скрипты запущены.
Насколько я вижу, в Xcode 3 нет текущей опции для этого. Может быть, файл запроса расширения с Apple?
Пока вы ожидаете Apple, единственным решением, которое я могу предложить, является использование xcodebuild и xcrun как часть оболочки командной строки script, где вы бы знали, архивируете ли вы или нет. Это не решение для пребывания в Xcode, но оно имеет большую гибкость.
Xcode "Build and Archive "" из командной строки