Xcode
iOS
ipa
provisioningFile

Xcode6でのProvisioning File管理機能を検証

More than 3 years have passed since last update.

はじめに

Xcode6になってipaの書き出しで変ったことがいくつかあります。

  • アカウント確認
  • 書き出し時のprovisioningFileの指定ができない

provisioingFileのXcode上での指定ができないので
Certificates, Identifiers & Profilesとのプロビジョニング同期が選択される肝になります。後ろの方に追記しました。

アカウント確認

ipa書き出し時にさんざんアラートがあがりますので、登録しましょう。
これがXcode6の前提になっているようなところがあります。

個人用と法人用とで違う?

XCとつくプロビジョニングファイルを使わない方法は個人用では確認しているのですが
法人用のライセンスでも確認しました。

ipa出力時のprovisioing Fileの選択はこちらを参照してください。
http://qiita.com/nofrmm/items/2bc60313aa961baf501f#自動生成されないために

後半で書いているのは個人用のライセンスでの検証結果です。

書き出し時の仕様が違う

ipaの書き出し時に意図したProvisioning Fileがどうしても出てこない。
そして自分で選ぶこともできない。

http://stackoverflow.com/questions/25999847/xcode-6-and-ad-hoc-distribution-without-xc-provisioning
より

(1)Xcode5の最新版を別名でインストールして書き出す方法

I have a workaround for this that works for me.

I have both Xcode 6 and Xcode 5.1.1 installed, Xcode 6 is in Applications and Xcode 5.1.1 is in another directory. When I want to do a build I use Xcode 6 to create the Archive. But you can also see the created Archive in Xcode 5.1.1 so I use Xcode 5.1.1 to distribute the Ad Hoc .ipa using the provisioning profile that I want to use. So build using Xcode 6 but distribute using Xcode 5.1.1. It works for me.

(2)Xcodeに取り込んでいるProvisioing Fileを Certificates, Identifiers & Profilesが取り直す

I hit a similar problem and discovered that even if you specify the correct profiles in Xcode the Xcode6 system wants you to have the latest (from member centre) provisioning profile (for each team your account is against). It seems to walk each one in turn before using the one you need and gets blocked if you are absent any provisioning profile for the teams you belong to.

Xcode5の最新版を別名でインストールして書き出す

(1)は検証はしていないことを前提に紹介すると

Xcode6のアーカイブからXcodeArchiveファイル(.xcarchive)をOrganizer経由で取得し
スクリーンショット 2014-10-24 8.09.12.png

Xcode5へImportすれば

http://qiita.com/nofrmm/items/0b89e3c87dfd4c115858

こちらの記事で対応できそうです。

Xcodeに取り込んでいるProvisioing Fileを Certificates, Identifiers & ProfilesからXcodeから取り直す

一度ちゃんとドキュメントを読んでみることにしました。

App Distribution Guide

英語版
https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/AppDistributionGuide.pdf

日本語版(やや古い場合がある)
https://developer.apple.com/jp/devcenter/ios/library/documentation/AppDistributionGuide.pdf

ドキュメントの更新日を確認してください
https://developer.apple.com/jp/devcenter/ios/library/japanese.html

XcodeのProvisioning Fileを更新

(1)Xcode > Preference そしてAcountタブを選びます
スクリーンショット 2014-10-24 8.26.17.png

(2)Apple IDsからビルド時に使用するアカウントを選択してダブルクリックします
スクリーンショット 2014-10-24 7.04.54.png

Certificates, Identifiers & ProfilesでProvisioning Fileを消す

リフレッシュボタンで更新されました
スクリーンショット 2014-10-24 7.05.15.png

Projectファイル

(1)Team名を指定します
スクリーンショット 2014-10-24 8.57.04のコピー.png

(2)targetのBuild Settingsを確認します

Xcodeでの指定:Build Settings

スクリーンショット 2014-10-23 8.51.30.png

スクリーンショット 2014-10-23 8.28.47.png

  • Buildや、Archive時にバイナリ化するときに使用されるProvisioning File
  • 使用したProvisioning Fileを使用できるアカウント

を指定してすることで
Archive時のProvisioning Fileはここで指定できます。

Accountsからの同期のタイミングでCertificates, Identifiers & Profilesで消されたAdhoc用Provisioning Fileが選択から消えました。
スクリーンショット 2014-10-24 7.05.47.png

XcodeがProvisioning Profileを作成するとき

Archiveからipaを出力時にadhocを出そうとして
スクリーンショット 2014-10-24 8.40.20.png

この画像が表示されたタイミングで
スクリーンショット 2014-10-24 7.44.57のコピー.png

Certificates, Identifiers & Profilesに'XC Ad Hoc:[Bundle Identifier]'なProvisioning Fileが作成されました。

  • ライセンスに登録中のデバイス全部
  • その時点のAppIDの設定を反映

自動生成されたProvisioning Fileに対応する証明書

最新の証明書が紐づきました。
新規に証明書を作成し、その証明書にrevokeを行うと
対応する証明書がない、と表示される。そのためにまた新しい証明書を作成する、という・・・。

複数個ビルド用の証明書があり

デバイスを限定したい場合には余計なお世話です
Xcode経由でのipa書き出しは、今現在は全端末登録したProvisioing Fileでしか出来ないようなので、どうしてもデバイスを限定したい場合はコマンドを使っての生成になりそうです。

こちらに書きました
http://qiita.com/nofrmm/items/1debeeaac6689c2f6b30

Certificates, Identifiers & Profilesから更新してみましたが
同じく上記のワーニングアラートが表示され

全端末を登録

'XC Ad Hoc:[Bundle Identifier] adh1'のように名前を変えたら

別ファイルとして新規の'XC Ad Hoc:[Bundle Identifier]'を作成する

など
融通が利きません。

書き出し時に選びたいProvisioning Fileを指定する

設定できるようになりました。
ただし個人用のライセンスで、チームで開発する場合のライセンスではXCとつくプロビジョニングファイルがどうしても
選ばれてしまいました。

以下、個人ライセンスでの検証内容です。

XCファイルを使いたくない場合の基本ルールは

ipa書き出しのProvisioing File はAccountsの同期で追加・削除する

  • Certificates, Identifiers & Profilesで作成したプロビジョニングファイルはAccountsの同期で追加する
  • XCファイルが作成されたらCertificates, Identifiers & Profilesから消して同期する
  • ワーニングが出たらXCファイルをCertificates, Identifiers & Profilesから消す

前提

  • 書き出すアプリに対応するProvisioning Fileが作成済み(手動でダウンロードは影響されないかも)
  • Provisioning Fileに対応する証明書+秘密鍵がMacに設定されている
  • 少なくとも開発者用の証明書がCertificates, Identifiers & Profilesで作成されている(Adhoc、Release用はadmin以上?)

手順は時間の関係で別途載せようと思います。

こちらにまとめました
http://qiita.com/nofrmm/items/2bc60313aa961baf501f

参考

http://stackoverflow.com/questions/25999847/xcode-6-and-ad-hoc-distribution-without-xc-provisioning

さいごに

あんまりにも使い勝手が悪いので、次のバージョンで改良を願いつつ
現時点では暫定対応として読んでいただければ良いかと思います。

Xcode6の設定やCertificates, Identifiers & Profilesでの証明書の登録などもあり
うまくいったと思っていても、個人用のライセンスだったから、ということがありそうです。
また、この対応はサーバ側で対処が可能なレベルだと思うので
アナウンスなしにApple側が対処していつのまにか解決している、ということもあります。

書き出し時のipa指定が現状のままであれば、XCなProvisioning Fileを利用する方が安全に書き出せる方に傾いています。もしくは人を選びますが、コマンドでのipa書き出しです。