私がインクリメントしたときに自動的にバージョンを設定していたアプリがあります
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"
上記のスクリプトは、バージョンを自動的に更新することを想定しており、[設定]> [アプリ]に表示されます。
しかし、問題は、XCodeからバージョン番号を自動的に更新するために、このスクリプトで実行する必要がある変更があることでしょうか。
現在、バージョンがXCode> General> Versionからインクリメントされると、$(MARKETING_VERSION)としてスクリプトに置き換えられますが、これは正しくありません。
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"
バージョン文字列$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"