Как я могу ограничить этап сборки «Выполнить сценарий» конфигурацией моего выпуска?


138

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

Ответы:


295
if [ "${CONFIGURATION}" = "Release" ]; then
  echo Do something really release-like
fi

Сценарий будет выполняться в конце каждой конфигурации, но в этом случае он ничего не будет делать, если конфигурация не является Release (при условии, что все, что он делает, содержится в тестовом блоке).


1
Я только что обнаружил, что он не работает с многословными именами конфигурации. Он работает с "Release", но не с "Internal Beta".
Hedin

4
@Hedin - это просто баш; если у вас есть переменная, состоящая из нескольких слов, вам нужно заключить переменную в кавычки. Таким образом, $ {CONFIGURATION} становится "$ {CONFIGURATION}". Я обновлю ответ, чтобы включить это.
Джейсон Коко,

15
У меня есть конфигурации Debug, Release (для инструментов), Ad Hoc и App Store (с другой подписью кода), поэтому я изменил их на if [ "${CONFIGURATION}" != "Debug" ]; then....
Николас Миари

1
Для условия if я хочу использовать #define TRUE / FALSE, хранящийся в файле .pch .. как мне ссылаться на него в коде скрипта?
newton_guima

2
Можно ли сделать то же самое с флагами препроцессора?
Джастин Валлели

15

Самый простой способ сделать это - установить флажок «Запускать скрипт только при установке».



4
«Установка отладки на реальном устройстве (сборка и запуск из Xcode) не считается« установкой ». Сценарий выполнения запускается только при архивировании (проверено с Xcode 9)». stackoverflow.com/questions/5913199/…
darkheartfelt

2
Это не сработает, если вы хотите создать свое приложение в Releaseконфигурации без его архивирования. Вопрос был явно о Releaseконфигурации.
Legonaftik
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.