ShellScript
Objective-C
iPhone
Xcode
iOS

.ipa ファイル生成を自動化する

More than 5 years have passed since last update.

通常.ipaファイルを作成するには、Product メニューの Archive 実行後に、


  • Organizer から アーカイブを選択し Distribute ボタン押下

  • "Save for Enterprise or Ad-Hoc Deployment" を選択し Next ボタン押下

  • ドロップダウンリストから該当するプロビジョニングプロファイルを選択

  • 保存先を指定

という手順を踏みます。ウィザードに従って進めるだけなので、たまに行う程度であれば問題ないのですが、.ipaファイルを作成して共有する頻度が多い場合(例えばリリースが近く細かい修正と確認を繰り返す場合)は面倒になってきます。

Xcode の Run Script を利用し、アーカイブ完了後に自動で ipa ファイルを生成するよう設定する方法を紹介します。

※通常のアドホックビルドの準備の手順(アドホックビルド用のプロビジョニングプロファイルの作成とインストール、Configurationの作成と Code Signing Identity の設定)については説明を省略します。


準備

Build Phases タブの右下にある "Add Build Phase" ボタンから Run Script を追加し、次のようにスクリプトを登録します。

if [ "${CONFIGURATION}" = "<Configuration名>" ]; then

xcrun -sdk iphoneos PackageApplication \
"${BUILD_DIR}/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}"/"${WRAPPER_NAME}" \
-o <出力パス>/<ipaファイル名> \
--embed ~/Library/MobileDevice/Provisioning\ Profiles/<プロファイルのファイル名>
fi

<Configuration名> はプロジェクトの設定に従って置き換え、<出力パス>、<ipaファイル名> はそれぞれ任意のパス、名前に置き換えてください。(例:~/Hoge.ipa)

<プロファイルのファイル名>は、オーガナイザで該当するプロファイルを選択し、右クリックメニューの「Reveal Profile in Finder」からプロファイルの実体ファイルを Finder で表示して調べることができます。(713F1C87-93C7-4F29-9F3E-F8C5E652394B.mobileprovision というように、英数字の羅列+拡張子 .mobileprovision で構成されるファイル名です。)

たとえば、Configuration名が Ad Hoc となるプロジェクトの.ipaファイルをホームフォルダ直下に自動生成したい場合のスクリプトは次のようになります。

if [ "${CONFIGURATION}" = "Ad Hoc" ]; then

xcrun -sdk iphoneos PackageApplication \
"${BUILD_DIR}/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}"/"${WRAPPER_NAME}" \
-o ~/Hoge.ipa \
--embed ~/Library/MobileDevice/Provisioning\ Profiles/xxxxxxxxxxx.mobileprovision
fi


実行

(Build の Scheme として "Ad Hoc" を選択した状態で、)Product メニューから Build を実行するだけで、自動で.ipa ファイルが生成されます。


More

xcrunコマンド(これで .ipa ファイルを生成している)の後に curl コマンドで Testflight の API を叩くようにすれば、アーカイブ実行時に Testflight へのアップロードまで自動化することもできます。


参考