Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
102
Help us understand the problem. What is going on with this article?
@shu223

.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 へのアップロードまで自動化することもできます。

参考

102
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
shu223
フリーランスiOSエンジニア 著書:『iOS×BLE Core Bluetooth プログラミング』『Metal入門』『実践ARKit』『Depth in Depth』『iOSアプリ開発 達人のレシピ100』他 GitHubの累計スター数24,000超
engineerlife
技術力をベースに人生を謳歌する人たちのコミュニティです。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
102
Help us understand the problem. What is going on with this article?