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
Help us understand the problem. What is going on with this article?

もっと楽に、ビルドなしでipa運用

More than 5 years have passed since last update.

はじめに

XcodeのツールであるOrganizerを使うことで
provisioning Fileの差し替えを行うことでできます。
リビルドのない運用を考えてみました。

現時点でのこの記事はXcode5だけで有効な手段を書いています。

Xcode6以降

xcarchiveの出力がGUIから見当たりませんでしたが
対象アーカイブの右クリックから保存フォルダを参照することが可能なことがわかりました。

コマンドラインでなくXcodeを使う上では、Appleとの通信による
プロビジョニングファイルの指定を意識する必要があります。

  • 証明書
  • 登録デバイス
  • provisioning Fileを作成した順番

などを考慮する必要があります。

こちらに検証をまとめました。合わせて確認してください。
http://qiita.com/nofrmm/items/2bc60313aa961baf501f

環境

  • Certificates, Identifiers & Profiles
  • Xcode5.1

差し替え可能な条件

プロビジョニングファイルの差し替えについてのまとまっている資料は見つけられませんでした。
そのため、いくつか使用条件を探るテストをします。

  • Xcode上で指定した以外のprovisioningFileは使用できるのか
  • 異なるBundle Identifierで使用できるのか

Xcode上で指定した以外のprovisioningFileは使用できるのか

Certificates, Identifiers & Profiles

次の二つのadhocファイルを作成します。

  • xcode上で指定:forAdhoc
  • ipaを書き出すときに指定:forAdhoc2

for Adhoc
スクリーンショット 2014-03-27 8.22.24.png

ワイルドカードを使用したprovisioningFileです


for Adhoc2
スクリーンショット 2014-03-27 8.22.54.png

こちらは固定のBundle Identifierです

このプロビジョニングファイルをダウンロードし、Xcodeへ追加しておきます。

Xcodeでの指定

Build SettingsでProvisioning Fileを指定します
スクリーンショット 2014-03-27 8.24.22.png

Archive

OrganizerのArchivesタブでDistributeを押します
スクリーンショット 2014-03-27 8.46.57.png

Distributeボタンを押し、画像の通りの設定を選びNext
スクリーンショット 2014-03-27 9.04.25.png

いくつか選べる状態になっている中でforAdhoc2を選びます
スクリーンショット 2014-03-27 7.55.48.png

ipaファイルを確認

他の記事であるので書くのは省きますが、ipaファイルを解凍し、Developer Provisioning Profile:mobileprovisionファイルの記述を確認します。

Payload/releaseTest.app/embedded.mobileprovision
    <key>Name</key>
    <string>forAdhoc2</string>
    <key>ProvisionedDevices</key>
    <array>
        <string>[deviceのUDID]</string>
    </array>

念のため、forAdhocのプロビジョニングファイルでexportしたipaも確認します。次のような記述がふくまれました

Payload/releaseTest.app/embedded.mobileprovision
    <key>Name</key>
    <string>forAdhoc</string>
    <key>ProvisionedDevices</key>
    <array>
        <string>[deviceのUDID]</string>
        <string>[deviceのUDID]</string>
        <string>[deviceのUDID]</string>
    </array>

異なるBundle Identifierで使用できるのか

GUI上では選べませんでした。

スクリーンショット 2014-03-27 7.55.48.png

この画像で表示されている選択可能なprovisioning Fileは、Bundle Identifierを元にフィルタリングされています。

分かったこと

adhocで使用するデバイスの変更ではビルドはいらなさそう

こんな場合に使える?

確認者によりexportするipaを変える

レイアウト変更確認は*:ワイルドカードなAppID指定で、Push通知、課金などはユニークなAppID指定が必要

配信対象deviceの変更

ビルドするのに時間がかかるようなリッチなアプリは
確認端末の変更のたびに、OTA配信で問題があるたびにビルドをしていると、たまったものじゃないです。

運用

  1. Xcode Archiveで運用
  2. プロビジョニングファイルを作成、ダウンロード
  3. Organizerでプロビジョニングファイルを変更

さいごに

生成されたipaの有効期限は、プロビジョニングファイル(一年)とプロビジョニングファイルに指定した証明書の期限から短い方が選ばれます。
Standard版のライセンスだとStoreに出すのが前提なので、証明書の有効期限が短く一年、もしかするとリビルドが年に数回必要になるかもしれません。
Enterprise版だと現状三年なので運用しやすいような印象です。

証明書をかえたプロビジョニングファイルの検証はまた今度

nofrmm
会社の人への説明用、趣味用にまとめています。 メインはiOSまわりっぽい。Photoshop、サーバまわりと記事を散文してます。 人は自由に生きるべき。 いつか北海道の良い開発会社にご縁があれば移住したい
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