Запуск сценария только для сборки «Архив» в Xcode 4 - PullRequest
36 голосов
/ 29 марта 2011

У меня есть скрипт, который я запускаю, используя osascript из Фазы сборки Run Script в XCode 4. Этот скрипт выполняет некоторые проверки, чтобы попытаться отловить любую человеческую ошибку в списках и тому подобное.

Однако я действительно хочу запускать этот сценарий, только когда разработчик выбирает «Архив», а не запускать его каждый раз при сборке.

Есть ли способ проверить эту ситуацию? Либо в Shell Script, либо в Apple Script?

Ответы [ 3 ]

52 голосов
/ 29 апреля 2011

В Xcode 4+ вы могли запускать этот сценарий как сценарий до или после действия в действии «Архив».Однако сценарии до и после действия не считаются частью самой сборки;их выходные данные не являются частью журнала сборки, и сбойный скрипт не приведет к сбою сборки.

Если вы хотите включить этот сценарий как часть сборки первого класса, так что его сбой будетвызвать сбой сборки, тогда вы захотите сделать что-то еще.Создайте новую цель «Внешняя система сборки» и настройте ее для запуска скрипта.Путь к вашему сценарию может быть относительным путем по отношению к корню проекта.

Наконец, откройте основную схему проекта, и в теге «Build» добавьте новую цель проверки и установите для нее тольковключен в действие «Архив».Это должно привести к тому, что ваш скрипт проверки запускается как часть сборки, только когда выбран «Архив», и если скрипт возвращает ненулевое значение, сборка завершится неудачей.

A screenshot showing how to configure the scheme

7 голосов
/ 06 октября 2017
  1. Добавление «Фазы нового сценария запуска» в «Фазы сборки» вашего проекта
  2. Перемещение (перетаскивание) вашего сценария в правильное положение
  3. Установите флажок «Запускать сценарий только когдаУстановка "

Если вы не выполните 3. , сценарий будет выполняться постоянно, но если вы отметите этот флажок, он будет запускаться только при архивировании.

0 голосов
/ 14 апреля 2011

Быстрый тест на моей собственной системе не показывает разницы в подробном выводе скрипта между "Build" и "Build and Archive".

Кроме того, вы не можете проверить наличие (или отсутствие) архива, поскольку он создается только в самом конце процесса, когда все сценарии были запущены.

Насколько я вижу, в Xcode 3 нет текущей возможности сделать это. Может быть, отправить запрос на улучшение в Apple?

Пока вы ждете в Apple, единственное решение, которое я могу предложить, - это использовать xcodebuild и xcrun как часть сценария оболочки командной строки, где вы бы знали , архивируете вы или нет. Это не решение «остаться в Xcode», но оно обладает большой гибкостью.

Xcode "Построить и Архивировать" из командной строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...