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

#はじめに
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
より

 （１）Xcode`5`の最新版を別名でインストールして書き出す方法
>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.

 （２）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.


#Xcode`5`の最新版を別名でインストールして書き出す
（１）は検証はしていないことを前提に紹介すると

Xcode6のアーカイブからXcodeArchiveファイル（.xcarchive）をOrganizer経由で取得し
![スクリーンショット 2014-10-24 8.09.12.png](https://qiita-image-store.s3.amazonaws.com/0/12362/88afb047-beba-3322-50c5-4c11efa35ace.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を更新

（１）Xcode > Preference そしてAcountタブを選びます
![スクリーンショット 2014-10-24 8.26.17.png](https://qiita-image-store.s3.amazonaws.com/0/12362/865ffc92-5df4-c82c-524e-5e8b0ef0bffc.png)
↓
（２）Apple IDsからビルド時に使用するアカウントを選択してダブルクリックします
![スクリーンショット 2014-10-24 7.04.54.png](https://qiita-image-store.s3.amazonaws.com/0/12362/e554aaa0-4fd8-41ab-0596-ca488e996a67.png)

↓ `Certificates, Identifiers & Profiles`でProvisioning Fileを消す

リフレッシュボタンで更新されました
![スクリーンショット 2014-10-24 7.05.15.png](https://qiita-image-store.s3.amazonaws.com/0/12362/bf8be149-8c18-98a2-1c0c-244f503e5748.png)

##Projectファイル

（１）Team名を指定します
![スクリーンショット 2014-10-24 8.57.04のコピー.png](https://qiita-image-store.s3.amazonaws.com/0/12362/ccb63bd2-5f94-c99a-14fd-ba0e7e1654ca.png)


（２）targetのBuild Settingsを確認します

###Xcodeでの指定：Build Settings


![スクリーンショット 2014-10-23 8.51.30.png](https://qiita-image-store.s3.amazonaws.com/0/12362/83cd18c8-d0da-0861-6af8-e295d9143691.png)

↓

![スクリーンショット 2014-10-23 8.28.47.png](https://qiita-image-store.s3.amazonaws.com/0/12362/648bcf8d-0620-496f-3d3d-44fe800ab000.png)

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

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

Accountsからの同期のタイミングで`Certificates, Identifiers & Profiles`で消されたAdhoc用Provisioning Fileが選択から消えました。
![スクリーンショット 2014-10-24 7.05.47.png](https://qiita-image-store.s3.amazonaws.com/0/12362/4362793a-69cf-c323-527f-72b89b7940e5.png)

##XcodeがProvisioning Profileを作成するとき

Archiveからipaを出力時にadhocを出そうとして
![スクリーンショット 2014-10-24 8.40.20.png](https://qiita-image-store.s3.amazonaws.com/0/12362/5d05e458-2d96-f282-496c-b7fa995eb3cc.png)


この画像が表示されたタイミングで
![スクリーンショット 2014-10-24 7.44.57のコピー.png](https://qiita-image-store.s3.amazonaws.com/0/12362/3ba51bf1-f6f0-2ec3-978b-892f75479d02.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書き出しです。