O número da versão Settings.bundle está sendo atualizado como $ (MARKETING_VERSION)


8

Eu tenho um aplicativo que estava definindo versões automaticamente quando eu aumentava de

XCode> Geral> Versão .

Mas recentemente atualizei o XCode para a 11.0 e parece que o script não está funcionando conforme o esperado:

version=`/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" $SRCROOT/MyApp/Info.plist`
version+=" ("
version+=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" $SRCROOT/MyApp/Info.plist`
version+=")"
/usr/libexec/PlistBuddy "$SRCROOT/MyApp/Settings.bundle/Root.plist" -c "set PreferenceSpecifiers:1:DefaultValue $version"

O script acima supõe a atualização automática da versão e estaria visível em Configurações> Aplicativo.

insira a descrição da imagem aqui

Mas a questão é que é necessário fazer alguma alteração nesse script para atualizar automaticamente o número da versão do XCode?

Atualmente, ele está sendo substituído por scripts como $ (MARKETING_VERSION) quando a versão é incrementada em XCode> Geral> Versão, que não está correta.



Funcionou fazendo algumas alterações, como mencionado na minha resposta. Mas não tenho certeza se é uma boa ideia extrair do storyboard como você está fazendo.
Nagarjun

Isso não é extraído do storyboard. Isso está substituindo.
Mojtaba Hosseini

Você não está usando o sourceFilePath, não é?
Nagarjun

Não (erro), mas que não faz parte do problema;)
Mojtaba Hosseini

Respostas:


5

A cadeia de versão $MARKETING_VERSIONe o número da compilação $CURRENT_PROJECT_VERSIONagora são expostos como variáveis ​​de ambiente durante o processo de compilação, pois agora são mantidos na .pbxprojconfiguração.

Você deve conseguir o que deseja assim:

version="$MARKETING_VERSION ($CURRENT_PROJECT_VERSION)"
/usr/libexec/PlistBuddy "$SRCROOT/MyApp/Settings.bundle/Root.plist" -c "set PreferenceSpecifiers:1:DefaultValue $version"

$ CURRENT_PROJECT_VERSION não exibem nada. No entanto, a versão é exibida em $ MARKETING_VERSION.
Nagarjun

2

Funcionou exibindo o próprio MARKETING_VERSION: Obrigado @dgimb e @Mojtaba Hosseini por suas respostas.

version="$MARKETING_VERSION"
version+=" ("
version+=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" $SRCROOT/MyApp/Info.plist`
version+=")"

/usr/libexec/PlistBuddy "$SRCROOT/MyApp/Settings.bundle/Root.plist" -c "set PreferenceSpecifiers:1:DefaultValue $version"

Eu tenho uma mensagem de erro Set: Entry, "PreferenceSpecifiers: 1: DefaultValue", não existe comando PhaseScriptExecution falhou com um código de saída diferente de zero
ΩlostA

Você pode compartilhar o script.
Nagarjun #
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.