web-dev-qa-db-ja.com

Settings.bundleのバージョン番号は$(MARKETING_VERSION)として更新されます

私がインクリメントしたときに自動的にバージョンを設定していたアプリがあります

XCode> General> Version

しかし、最近、XCodeを11.0に更新し、スクリプトが期待どおりに機能していないようです。

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"

上記のスクリプトは、バージョンを自動的に更新することを想定しており、[設定]> [アプリ]に表示されます。

enter image description here

しかし、問題は、XCodeからバージョン番号を自動的に更新するために、このスクリプトで実行する必要がある変更があることでしょうか。

現在、バージョンがXCode> General> Versionからインクリメントされると、$(MARKETING_VERSION)としてスクリプトに置き換えられますが、これは正しくありません。

8
Nagarjun

MARKETING_VERSION自体を表示することで機能しました。回答をありがとう、@ dgimbと@Mojtaba Hosseini。

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

バージョン文字列$MARKETING_VERSIONおよびビルド番号$CURRENT_PROJECT_VERSIONは、.pbxproj構成で永続化されるようになったため、ビルドプロセス中に環境変数として公開されるようになりました。

あなたはこのようにあなたが望むものを達成することができるはずです:

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