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.
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.
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"
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"