【XCode】AppExtensionのバージョンを本体アプリのバージョンと一致させるスクリプト

仕事で現在NotificationServiceExtensionについて調べながら作業をしています

そこでこんな情報を得ました

アプリ本体のバージョンとExtensionのバージョン異なると
ストア申請時のメールにて怒られるらしい

そこで、ビルド時のRunScriptにてバージョンを合わせるようにしてやろうと考えて実装をしてみました

versionNumber="$MARKETING_VERSION"

buildNumber="$CURRENT_PROJECT_VERSION"

/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $versionNumber""{extensionの名前}/Info.plist"

/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber""{extensionの名前}/Info.plist"


上記をアプリ本体側の「Build Phase」の先頭に「RunScript」を追加して登録します
ビルドを実行するとアプリ本体→Extensionの順でビルドが行われるので、Extension側実行前に書き換えが終わります

StackOverFlowとかでXCode10までの手法だと
Extension側にスクリプトを登録して本体側からバージョンを取得するやり方ばかりでしたが
XCode11になってからInfo.plistから表記場所が変わったことにより
めっちゃめんどくさいことになってしまったため、本体からならさくっと取れるので順番を逆にしてやりました


この記事へのコメント