ad-hoc用IPAパッケージを再ビルドしないで修正してみた
業務的に同一のソースコードからBundle IdentifierやAppアイコン、スプラッシュイメージが異なるだけのIPAパッケージをいくつも作る必要があった。
今までは差分ファイルを切り替えるシェルスクリプトと自動ビルドさせるシェルスクリプトを組み合わせてパッケージの数だけ再ビルドを行っていた。
これがソースコードに変更がないのであれば既存のIPAパッケージを元に、再ビルド無しにパッケージを作ることが可能だというのでやってみた。
やりたいこと
既存のIPAパッケージを元に、
- Appアイコン、スプラッシュイメージの差し替え
- Appタイトルの変更(Sample1 -> Sample2)
- Bundle Identifierの変更(com.myapp.sample2 -> com.myapp.sample2)
- 別のプロビジョニングプロファイルに切り替える
- 別の署名に切り替える
必要な物
手順
1.適当なフォルダにIPAパッケージをunzipする
以下の様なフォルダ構造で解凍される
Payload └Sample.app ├Info.plst ├Default.png └(略) iTunesMetadata.plist
2.xcodeでPayload/Sample.app/Info.plistファイルを編集して保存
3.Payload/Sample.app内のAppアイコン、スプラッシュイメージを差し替える
4.myprovision2.mobileprovisionファイルをembedded.mobileprovisionという名前でPayload/Sample.app以下に上書きコピー
5.xcodeでiTunesMetadata.plistを編集してInfo.plistと合わせておく
6.ターミナルを起動して以下のコマンドを実行
export EMBEDDED_PROFILE_NAME=embedded.mobileprovision export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate" codesign -f -s -vv "iPhone Distribution: MyDistribution2" -i "com.myapp.sample2" ./Payload/Sample.app
※環境変数EMBEDDED_PROFILE_NAMEとCODESIGN_ALLOCATEはcodesignが必要とする
7.PayloadフォルダとiTunesMetadata.plistをまとめてzip
8.zipしたファイルの拡張子をipaに変更