Septeni Engineer's Blog

セプテーニエンジニアが綴る技術ブログ

iOS アプリのprovisioning profile差し替え方法

t_konoです。

あまり需要はないと思いますが、iOSアプリのprovisioning profileを差し替える方法を説明したいと思います。

以前、弊社で提供しているSDKをクライアント様のアプリに組み込んでもらった際に、通常だとこちらの端末のUDIDをiOS Dev Centerで登録してもらってprovisioning profileを発行してもらい、ipaファイルと発行してもらったprovisioning profileを端末に入れて、動作確認を行わせて頂いているのですが、iOS Dev Centerに登録出来るUDIDは通常だと年間に100個で、クライアント様はもう登録限度ギリギリということでした。

そのため、クライアント様からはappファイルを提供するので弊社側で用意したprovisioning profileでリサインしてテストをして欲しいということで依頼を受けたのですが、提示して頂いた方法だと、なぜかできなかったんですね。

実際にやった手順は以下でした。

xcrun -sdk iphoneos PackageApplication -v test.app -o test.ipa \
--sign "iPhone Distribution: Septeni co.,ltd." \
--embed test_AdHoc.mobileprovision

これを実行しても特に標準出力に何も出ず完了するのですが、実際に出来上がったtest.ipaをprovisioning profileを入れた端末にインストールしようとしても、いつものこのメッセージが出てしまいます。

f:id:no_sugiyama:20150722170023p:plain

仕方がないので、以下手順でprovisioning profileの差し替えと再署名を行いました。
1. test.appファイルのCodeSignatureを削除し、embedded.mobileprovisionを差し替える

$ rm -r test.app/_CodeSignature

$ cp -p test_AdHoc.mobileprovision test.app/embedded.mobileprovision 

3. 証明書を書き換える

$ codesign -f -s "iPhone Distribution: Septeni co.,ltd." \
--resource-rules test.app/ResourceRules.plist test.app

4. ipaファイルを作成する

$ mkdir Payload

$ cp -pR test.app Payload/

$ zip -qr test.ipa Payload


上記行うことで、無事アプリを端末にインストールを行えました。

appファイルはipaファイルをunzipすることで展開出来るので、ipaファイルからでもこの作業は可能です。

あまりやることはない作業だと思いますが、備忘録として残しておきたいと思います。