Build PhasesでInfo.plistの動的変更
APIやmBaasを環境により向き先変更をする場合、環境ごとにSchemeを用意しScriptで変更する方法はよく用いられる方法だと思います。またInfo.plistに定義するBundle IdentifierやDisplay Nameなどを環境ごとに変えたり、開発環境やモックサーバーへの接続のためのATS設定切り替えにも昔から利用されています。
Xcode10で期待通り、Info.plist変更用、Scriptが動作しない
Xcode10で突然2回目以降のbuildでplutil,plistbuddyなどが期待動かなくなりました。
そのため、Clean Build Folder -> Buildというステップを踏む必要が出ていました。
Preprocessed-Info.plistの挙動
1.Build PhasesのShellScriptは問題なく実行される
2.Preprocessed-Info.plistは変更される
3.Build完了時に、Preprocessed-Info.plistが変更前に戻る
4.変更前の状態でInfo.plistとしてパッケージングされる。
対応方法
各RunScriptのInput Filesの項目に
${TEMP_DIR}/Preprocessed-Info.plist
を設定。
その他
- Build Phase ScriptでPreprocess Info.plistを利用する場合は Build Settingsで
Preprocess Info.plist File
をYESにする