その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

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

通常.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 "${INSTALL_DIR}"/<バンドル名>.app -o <出力パス>/<ipaファイル名>.ipa --embed ~/Library/MobileDevice/Provisioning Profiles/<プロファイルのファイル名>.mobileprovision
fi

と<バンドル名>はプロジェクトの設定に従って置き換え、<出力パス>、はそれぞれ任意のパス、名前に置き換えてください。<プロファイルのファイル名>は、オーガナイザで該当するプロファイルを選択し、右クリックメニューの「Reveal Profile in Finder」からプロファイルの実体ファイルをFinderで表示して調べることができます。


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

if [ "${CONFIGURATION}" = "Ad Hoc" ]; then
xcrun -sdk iphoneos PackageApplication "${INSTALL_DIR}"/Hoge.app -o ~/Hoge.ipa --embed ~/Library/MobileDevice/Provisioning Profiles/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.mobileprovision
fi

実行

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

More

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