Como posso limitar uma fase de criação de "Executar script" à minha configuração de versão?


138

Eu tenho um script de shell que gostaria de executar no final da fase de construção do meu destino. No entanto, eu gostaria que esse script fosse executado apenas quando construí com a configuração da versão . Como isso pode ser feito? Obrigado!

Respostas:


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

O script será executado no final de cada configuração, mas não fará nada neste caso, a menos que a configuração seja Release (assumindo que tudo o que faz está contido no bloco de teste).


1
Acabei de descobrir que não funciona com nomes de configuração com várias palavras. Funciona com "Release", mas não com "Internal Beta".
Hedin

4
@ Hedin - isso é apenas festança; se você tiver uma variável com várias palavras, precisará colocar a variável entre aspas. Então $ {CONFIGURATION} se torna "$ {CONFIGURATION}". Vou atualizar a resposta para incluir isso.
Jason Coco

15
Eu tenho as configurações 'Debug', 'Release' (para Instruments), 'Ad Hoc' e 'App Store' (com assinatura de código diferente), então mudei para if [ "${CONFIGURATION}" != "Debug" ]; then....
Nicolas Miari 14/03

1
Para a condição if, eu quero usar um #define TRUE / FALSE armazenado no arquivo .pch .. como eu o referenciaria no código de script?
Newton_guima

2
Isso pode ser feito com sinalizadores de pré-processador?
Justin Vallely

15

A maneira mais fácil de fazer isso é marcar a caixa de seleção "Executar script apenas ao instalar".



4
"A instalação de depuração em um dispositivo real (compilação e execução no Xcode) não conta como" instalação ". O script de execução é executado apenas ao arquivar (testado com o Xcode 9)." stackoverflow.com/questions/5913199/…
darkheartfelt 15/02/19

2
Não funcionará se você quiser criar seu aplicativo na Releaseconfiguração sem arquivá-lo. A pergunta era explicitamente sobre Releaseconfiguração.
Legonaftik 30/05/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.