LoginSignup
39
41

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-03-27

はじめに

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版だと現状三年なので運用しやすいような印象です。

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

39
41
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
41