Pergunta

Meu aplicativo usa o cacau Framework faísca para atualizações implantar. Eu não costumo implantar do beta do meu software mas para a minha próxima atualização, eu sinto que eu preciso. A minha pergunta é qual é a melhor estratégia de numeração para a implantação de um beta usando faísca. Para quem testa minha beta eu gostaria a atualização para ser perfeita quando eu lançar a próxima versão oficial, mas para outros usuários gostaria todo o sistema ser totalmente invisível. Eu uso atualmente um sistema de numeração, como 1.2.3 para as minhas atualizações.

Foi útil?

Solução

A melhor maneira é provavelmente para desligar totalmente o seu CFBundleVersion (que deve conter apenas. E números, e é usado em comparação a versão de faísca eo OS), e CFBundleShortVersionString (que pode por qualquer coisa, e é o que os usuários ver).

Então, você apenas tem que certificar-se de que o seu CFBundleVersion sempre aumenta ao longo do tempo, mas de outra forma pode ser qualquer coisa [*], enquanto você usa 1.2.4b e 1.2.4 como o CFBundleStortVersionString para o beta e versões finais, respectivamente. Enquanto o CFBundleVersion para o beta é maior que o seu CFBundleVersion atual eo CFBundleVersion da eventual libertação não-beta é maior do que o beta, tudo vai funcionar do jeito que você quiser.

[*] Basta ter em mente que, apesar docs da Apple não mencioná-lo, 9999.99.99 é praticamente a versão mais alto que LaunchServices reconhecerá, e vai ignorar qualquer blocos de números para além da terceira, de modo plano para usar um esquema que não vai mesmo ir mais longe do que isso; atualizações faísca seria ainda trabalho, mas o sistema operacional seria confuso sobre qual cópia era a versão mais recente.

Outras dicas

Eu recentemente olhou para fazer isso também. A configuração de desenvolvimento para meu aplicativo é Xcode (obviamente) com faísca, e eu manter meu código em um repositório Mercurial. Como parte do meu processo de criação, eu consultar Mercurial usando o "id hg" para preencher o Info.plit. Isso é feito em um script de construção para o meu alvo Xcode. Este é o script:

/usr/libexec/PlistBuddy -c "Set :CFBundleVersion `/usr/local/bin/hg id -in`" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString `/usr/local/bin/hg id -t`" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"

Assim, para versões beta, eu só posso marcar a minha changeset como "0.29b" ou o que quer. Para fazer com que os usuários que querem obter versões beta eu implementar o método SUUpdater delegado:

#pragma mark -
#pragma mark SUUpdate Delegate methods

- (NSArray *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile {
    if([[NSUserDefaults standardUserDefaults] boolForKey:BSEnableBetaUpdates]) {
        return [NSArray arrayWithObjects:[NSDictionary dictionaryWithObjectsAndKeys:@"beta", @"key", [NSNumber numberWithBool:YES], @"value", @"Enable beta updates", @"displayKey", @"Yes", @"displayValue", nil], nil];
    } else {
        return nil;
    }
}

Onde BSEnableBetaUpdates é uma constante que se configurado pelo usuário na minha janela de preferências. O que isto faz é se certificar de que o pedido GET para o URL do feed contém beta = 1. No servidor você pode interpretar isso e fornecer uma appcast de versões beta ou se ela não existe de lançamentos normais. Eu não vou explicar como você pode fazer isso, quer utilizando php, .htaccess o que quer.

Eu gosto de usar a ferramenta de versão Apple incluiu com o Xcode. Ele mantém um número de compilação paralela (por exemplo, 12345), que é distinto do seu número de versão de marketing (1.2.3). Você chamá-lo usando o agvtool ferramenta de linha de comando.

Além do mais, se você estiver usando o Subversion ou CVS como seu sistema de controle de versão, esta ferramenta tem suporte embutido. Por exemplo, o que eu quero para incrementar o meu número de compilação, eu só digitar isso no terminal:

agvtool -usesvn bump -all

Este incrementos o número de compilação de todos os alvos na minha candidatura, atualiza os arquivos Info.plist, e depois comete a coisa toda para SVN automaticamente. Há também um new-marketing-version verbo que você pode usar para definir o CFBundleShortVersionString através alvos tudo do seu projeto. Dê uma olhada na página de manual para agvtool (ou seja, tipo man agvtool no terminal) para mais detalhes.

Então, o que isso tem a ver com a faísca? Eu uso o número de compilação como o meu número sparkle:version. Usando o número de compilação faz com que seja morto simples para a faísca para descobrir se é a versão atual ou não. Para o benefício dos usuários, eu gostaria de colocar o número de compilação direito no número da versão marketing. Então meus números de versão beta algo parecido com isto: 1.2.3 (456). Apple faz algo muito semelhante com o Safari. Se eu for Safari> Sobre o Safari agora, eu ver a versão 4.0.2 (5530,19).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top