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


8

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

XCode>一般>バージョン

しかし、最近、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)としてスクリプトに置き換えられています。


1
これはあなたが探しているものではありませんか?how-to-read-current-app-version-in-xcode-11-with-script
Mojtaba Hosseini

私の回答で述べたようにいくつかの変更を行うことで機能しました。しかし、ストーリーボードから抽出するのが良いアイデアかどうかはわかりません。
Nagarjun、

それストーリーボードから抽出するものではありません。それを置き換えること。
Mojtaba Hosseini、

sourceFilePathをまったく使用していませんか?
Nagarjun

いいえ(間違い)、それは問題の一部ではありません;)
Mojtaba Hosseini '26 / 10/26

回答:


5

バージョン文字列$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"

$ CURRENT_PROJECT_VERSIONは何も表示しません。ただし、バージョンは$ MARKETING_VERSIONに表示されます。
Nagarjun

2

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"

私は、エラーメッセージ持ち、コマンドPhaseScriptExecutionは0以外の終了コードで失敗しまし存在しないエントリ、「のDefaultValue PreferenceSpecifiers:::1」を設定
ΩlostA

スクリプトを共有できますか。
Nagarjun
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.