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.

Nagarjun
fonte
1
Não é isso que você está procurando? how-to-read-atual-app-versão-in-xcode-11-com-script
Mojtaba Hosseini
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"
dgimb
fonte
$ 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"
Nagarjun
fonte
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 #