ProvisioningProfileはcupertino(+spaceship)を使って管理


iOSアプリ開発では開発以外のところで色々と面倒なことがあります。

その課題の1つが端末が増えた時の対応で、作業内容は以下になります。

  • 1) 新しい端末のUDIDをAppleDevCenterに登録
  • 2) ProvisioningProfileを更新。
  • 3) 更新したファイルを自身のマシンやJenkinsのマシンに設置。

上記を手動でやるのは非常に面倒です。
そこで、上記の作業をcupertinoで自動化します。

自動化方法

1) 端末の登録

本来は以下で出来るはずなのだけど、現状出来ていない。

ios devices:add "Name"=UDID -u "userid" -p "password"

issueに書かれているが、修正されていない模様。
仕方がないので、issueに書いてあるfastlaneのspaceshipを利用する。

require 'spaceship'
Spaceship.login("user", "password")
Spaceship.device.create!(name: "NAME", udid: "UDID")

2) Provisioning Profileの更新

端末を登録したら、以下のコマンドで端末を登録したいProvisioning Profiles名と端末の情報を指定してProvisioningProfileを更新する。

iOS profiles:manage:devices:add ProvisioningProfileName "Name"=UDID -u "userid" -p "password"

3) Provisioning Profileのダウンロード

設定が全て終わったProvisioning Profileをダウンロードし、ファイルを上書きする。

  • 全てをダウンロードする場合
ios profiles:download:all -u "userid" -p "password" > /dev/null 2>&1
  • 指定してダウンロードする場合
ios profiles:download ProvisioningProfile Name -u "userid" -p "password" > /dev/null 2>&1

ダウンロードが出来たら、ファイルを上書きすればOK

mv *.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/

メモ

誰でも更新ができるようにJenkinsでjobを作る場合のメモを書いておく。

  • パスワードについては、環境変数としてパスワードをインジェクトを使ったりすると値が見えなくなるので良い。
  • 3)はJenkinsのjobがはしる全てのマシンで更新をかける必要があるので「マルチ構成プロジェクトのビルド」を利用するのが良い。