web-dev-qa-db-fra.com

Le numéro de version de Settings.bundle est mis à jour en tant que $ (MARKETING_VERSION)

J'ai une application qui définissait automatiquement les versions lorsque je suis passé de

XCode> Général> Version .

Mais récemment, j'ai mis à jour XCode vers 11.0 et il semble que le script ne fonctionne pas comme prévu:

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"

Le script ci-dessus suppose de mettre à jour automatiquement la version et aurait été visible dans Paramètres> Application.

enter image description here

Mais la question est de savoir s'il faut changer ce script pour mettre automatiquement à jour le numéro de version à partir de XCode?

Actuellement, il est remplacé par des scripts comme $ (MARKETING_VERSION) lorsque la version est incrémentée de XCode> Général> Version ce qui n'est pas correct.

8
Nagarjun

Cela a fonctionné en affichant MARKETING_VERSION lui-même: merci @dgimb et @Mojtaba Hosseini pour vos réponses.

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"
2
Nagarjun

La chaîne de version $MARKETING_VERSION ainsi que le numéro de build $CURRENT_PROJECT_VERSION sont désormais exposés en tant que variable d'environnement pendant le processus de génération, car ils sont désormais persistants dans le .pbxproj configuration.

Vous devriez pouvoir réaliser ce que vous voulez comme ceci:

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