A Apple meio que reorganizou / redirecionou os campos.
A partir de agora, se você procurar na guia Informações o seu destino de aplicativo, deverá usar a "cadeia de versões do pacote, curta" como sua versão (por exemplo, 3.4.0) e a "versão do pacote" como sua compilação (por exemplo, 500 ou 1A500 ) Se você não vir os dois, poderá adicioná-los. Esses serão mapeados para as caixas de texto Versão e compilação apropriadas na guia Resumo; eles são os mesmos valores.
Ao visualizar a guia Informações, se você clicar com o botão direito do mouse e selecionar Mostrar Chaves / Valores Brutos , verá os nomes reais CFBundleShortVersionString
(Versão) e CFBundleVersion
(Compilação).
A versão geralmente é usada como você parece estar usando-a com o Xcode 3. Não sei em que nível você está perguntando sobre a diferença de versão / compilação; portanto, responderei filosoficamente.
Existem todos os tipos de esquemas, mas um popular é:
{MajorVersion}. {MinorVersion}. {Revisão}
- Versão principal - Principais alterações, reprojetos e alterações de funcionalidade
- Versão secundária - Pequenas melhorias, adições à funcionalidade
- Revisão - Um número de patch para correções de bugs
Em seguida, o Build é usado separadamente para indicar o número total de builds para uma liberação ou para toda a vida útil do produto.
Muitos desenvolvedores iniciam o número de compilação em 0 e, toda vez que compilam, aumentam o número em um, aumentando para sempre. Nos meus projetos, eu tenho um script que aumenta automaticamente o número da compilação toda vez que eu construo. Veja as instruções para isso abaixo.
- A versão 1.0.0 pode ser compilada 542. Foram necessárias 542 compilações para chegar a uma versão 1.0.0.
- A liberação 1.0.1 pode ser compilada 578.
- A versão 1.1.0 pode ser compilada 694.
- A versão 2.0.0 pode ser compilada 949.
Outros desenvolvedores, incluindo a Apple, têm um número de compilação composto por uma versão principal + versão secundária + número de compilações para o lançamento. Esses são os números de versão reais do software, em oposição aos valores usados para o marketing.
Se você for ao menu Xcode > Sobre o Xcode , verá os números Versão e Versão. Se você pressionar o botão Mais informações ... , verá várias versões diferentes. Desde o Mais informações ... botão foi removido em Xcode 5, esta informação está também disponível a partir do Software> desenvolvedor seção do Sistema de Informação aplicativo, disponível abrindo a Apple Menu> Sobre este Mac > Relatório do sistema ... .
Por exemplo, Xcode 4.2 (4C139). A versão 4.2 do Marketing é a versão principal do Build 4, a versão secundária do C e o número 139. O próximo lançamento (provavelmente 4.3) provavelmente será o release 4D do Build, e o número do Build começará novamente em 0 e será incrementado a partir daí.
Os números de versão / versão do simulador de iPhone são da mesma maneira, assim como os iPhones, Macs etc.
- 3.2: (7W367a)
- 4.0: (8A400)
- 4.1: (8B117)
- 4.2: (8C134)
- 4.3: (8H7)
Atualização : a pedido, aqui estão as etapas para criar um script que é executado sempre que você cria seu aplicativo no Xcode para ler o número da compilação, incrementá-lo e gravá-lo novamente no {App}-Info.plist
arquivo do aplicativo . Existem etapas adicionais opcionais se você quiser gravar seus números de versão / compilação no Settings.bundle/Root*.plist
(s) arquivo (s).
Isso é estendido do artigo de instruções aqui .
No Xcode 4.2 - 5.0:
- Carregue seu projeto do Xcode.
- No painel esquerdo, clique no seu projeto na parte superior da hierarquia. Isso carregará o editor de configurações do projeto.
- No lado esquerdo do painel da janela central, clique no seu aplicativo no cabeçalho TARGETS . Você precisará definir esta configuração para cada destino do projeto.
- Selecione a guia Construir fases .
- No Xcode 4, no canto inferior direito, clique no botão Adicionar Fase de Construção e selecione Adicionar Script de Execução .
- No Xcode 5, selecione o menu Editor > Adicionar Fase de Construção > Adicionar Fase de Construção de Script de Execução .
- Arraste e solte a nova fase Executar Script para movê-la imediatamente antes da fase Copiar Recursos do Pacote Configurável (quando o arquivo app-info.plist será fornecido com o aplicativo).
- No novo Run Script fase, definir Shell :
/bin/bash
.
Copie e cole o seguinte na área de script para obter números inteiros de compilação:
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
Como o @Bdebeez apontou, a Apple Generic Versioning Tool ( agvtool
) também está disponível. Se você preferir usá-lo, há algumas coisas a serem alteradas primeiro:
- Selecione a guia Configurações de compilação .
- Na seção Versão , defina a Versão atual do projeto como o número de compilação inicial que você deseja usar, por exemplo, 1 .
- De volta à guia Fases de Construção , arraste e solte sua fase Executar Script após a fase Copiar Recursos do Pacote para evitar uma condição de corrida ao tentar criar e atualizar o arquivo de origem que inclui seu número de construção.
Observe que, com o agvtool
método, você ainda pode periodicamente obter compilações com falha / cancelado sem erros. Por esse motivo, não recomendo usar agvtool
com este script.
No entanto, na fase Executar Script , você pode usar o seguinte script:
"${DEVELOPER_BIN_DIR}/agvtool" next-version -all
O next-version
argumento incrementa o número da compilação ( bump
também é um alias para a mesma coisa) e é -all
atualizado Info.plist
com o novo número da compilação.
E se você tiver um pacote configurável Configurações em que mostra a versão e a compilação, poderá adicionar o seguinte ao final do script para atualizar a versão e compilar. Nota: Altere os PreferenceSpecifiers
valores para corresponder às suas configurações. PreferenceSpecifiers:2
significa olhar para o item no índice 2 sob a PreferenceSpecifiers
matriz em seu arquivo plist; portanto, para um índice baseado em 0, essa é a terceira configuração de preferência na matriz.
productVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$INFOPLIST_FILE")
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root.plist
Se você estiver usando, em agvtool
vez de ler Info.plist
diretamente, poderá adicionar o seguinte ao seu script:
buildNumber=$("${DEVELOPER_BIN_DIR}/agvtool" what-version -terse)
productVersion=$("${DEVELOPER_BIN_DIR}/agvtool" what-marketing-version -terse1)
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root.plist
E se você tiver um aplicativo universal para iPad e iPhone, também poderá definir as configurações do arquivo do iPhone:
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root~iphone.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root~iphone.plist