2017/10/31 追記
XCodeを使うときのUnityとの違いを整理しました。
XCodeでiOSアプリをつくるときに調べた、UnityとXCodeの違い - CrossRoad
2017/10/5 追記
iOS11で最初うまくいかなかったので、対処方法を9.3に追記しました。
最近知ったのですが、Xcode ver7以降であれば、iOSデバイスへの実機転送が無料になっています。これまで、iPhone、iPad実機にアプリをインストールするには、Apple Developer Program(年間10000円前後かかる)に登録し、証明書登録などの複雑な手続きが必要でした。
Xcode7以降は複雑な手続きが不要になっており、私が試した2009年頃よりもはるかに簡単になっていました。
しかし、若干つまづくところがあり、
- Unityを使っている
- 今までiOSの実機転送をしたことがない、または以前やったことがあるけどもう忘れてしまった
- Unityでのビルドから、iOSデバイスに実機転送して、起動までの方法をまとめて知りたい
という条件(私です、、)に合う情報が一発で見つからなかったので、今回整理してみました。
- 1. Xcodeをインストールする
- 2. Unityで何かを作る
- 3. Build Settingsで、PlatformをiOSにする
- 4. Player Settingsで、Targetデバイス、iOSバージョン、パッケージ名を指定する
- 5. Buildする
- 6. Xcodeからプロジェクトを開く
- 7. Xcodeでビルドを実行する
- 8. iPhoneの設定画面から、証明書を承認する
- 9. Tips
- 10. 終わりに
なお、検討時の環境は下記です。
- Mac : OS X 10.11.5
- Unity: 5.3.5f1
- Xcode : 7.3.1
1. Xcodeをインストールする
App StoreからXcodeをインストールします。2,3GBあるので少し時間がかかりますが、App Storeでインストールを選ぶだけなので特に大変なことはないです。2. Unityで何かを作る
好きなものを作ります。
3. Build Settingsで、PlatformをiOSにする
4. Player Settingsで、Targetデバイス、iOSバージョン、パッケージ名を指定する
それ以外の項目は、アプリによって設定必須の場合とそうでない場合があります。パッケージ名については、
com.<会社名>.<アプリ名>
が一般的のようです。ただし、実際のところ、<>の中は他のアプリと被ってなければ何でも良さそうです。ちなみに、Androidでは、
com.TestApp
のように"."が一つでも実機転送できます。
参考までに、最近調べているStructure Sensor向けアプリの設定は下記です。
Unityのバージョンによって表示内容が変わる可能性があります。
5. Buildする
Development Buildは、有線によるデバッグをしたい時に設定します。Buildボタンを押して、出力先を指定すると、Xcodeのプロジェクト一式ができます。6. Xcodeからプロジェクトを開く
Unity-iPhone.xcodeprj をダブルクリックします。Xcodeが開いたらiPhoneを接続し、ロックを外しておきます。 (先に接続してても良いかも)
初めて接続した場合、「このコンピュータを信頼しますか?」というメッセージがiPhoneに表示されるので、「信頼する」を選びます。
その後、Xcodeの上側で進捗バーのようなものが出ます。1,2分待つと完了します。
7. Xcodeでビルドを実行する
下記の画面が出たら、ビルドを開始します。開始するには、Xcode画面左上で三角のマークがある箇所をクリックします。これはビルドと実機転送を兼ねています。
ところで、iPhoneにはProvisioning Fileというものがあり、これがインストールされたiPhoneにしか実機転送ができません。上記手順に沿って三角ボタンを押すと、この時点ではProvisioning Fileがないので、下記のようなエラーが出ます。
6年前だと、これをiOS Developer Programのサイトから生成し、秘密鍵を作ってから〜のように色々面倒でした。しかし、Xcode7以降では、ここで "Fix Issue"をクリックすると、Apple IDの入力画面が出ます。ここでAppleIDとパスワードを入力すると、こういう画面が出ます。
ここでChooseを選べばProvisioning Fileを作ってiPhoneに転送してくれます。(便利だ、、)
うまくいくと、上記のような進捗バーが出ます。
8. iPhoneの設定画面から、証明書を承認する
転送が終了すると、そのまま起動しようとします。しかし、先ほどiPhoneに自動的に転送されたProvisioning FileをiPhoneから承認していないので、ここでエラーがでて中断します。
中断してもアプリは転送済みですので、次はiPhoneとPC間のケーブルを抜いて、iPhoneを操作します。設定→一般→プロファイルとデバイス管理 と進むと、デベロッパAppという欄に自分のAppleIDが表示されています。
2016/6/11 スクリーンショットを追加
自分のAppleIDを選択すると、このような画面がでます。
それぞれ「信頼」を選びます。これで、先ほど転送したアプリを実行することができます。
注:転送したアプリを全部削除すると、再度承認が必要になるようです。しかし、7,8の手順を実行すれば問題ありません。
ちなみに、証明書が有効であれば7の後iPhoneのアプリが起動します。しかし、転送完了時にiPhoneの画面ロックがかかっていると、下記のエラーが出て中断します。
これは、「転送は完了したら起動に失敗した。なので、手動で起動してください」 という意味ですので、特に問題はありません。Cancel Runningをクリックし、iPhone上でインストールされたアプリをタップすれば起動します。
(2016/6/11 追記)
当時試してから10日ほど経過した後、iPhoneに転送したアプリを起動したら、起動直後に落ちてしまいました。調べてみると、プロビジョニングファイルが消えてました。(一定期間で消滅する?)再度実機転送すれば問題ないですが、少し不便かもしれないですね。
9. Tips
9.1 Package Nameは7日間で10種類までしか使えない
11個目を使おうとしたらエラーがでて転送できませんでした。ただし、同じPackage Nameであれば何度実機転送しても大丈夫です。9.2 iPhone接続時の「写真」アプリの自動起動を無効化
ちなみに、iPhoneをMacにつなぐとき、Mac上で「写真」アプリが自動的に起動しますが、iPhoneの抜き差しが多いと煩わしくなります。下記のコマンドで無効化できます。
$ defaults -currentHost write com.apple.ImageCapture disableHotPlug -bool YES
こちらのサイトを参考にさせていただきました。ありがとうございます。
https://nanokamo.com/photo-app-automatic-start-off
これまでiOSアプリの実機転送の手間と、Androidスマートフォンしか持ってなかったというのもあり、iOSアプリ開発はあまりやってませんでした。
ただ、今回の実機転送無償化によって、iPhoneでもやりやすくなったのはとても助かります。なお、今回の無償化の範囲は、あくまで自分のAppleIDで紐付けたiOSデバイスだけです。
ほかのAppleIDで紐付けられたiOSデバイスに転送したい時は、従来通り、Apple Developer Programに登録してから手続きをする必要があるので注意が必要です。
9.3 Signing for "アプリ名" requires a development team. Select a development team in the project editor. というエラーが出て、ビルドに失敗する (2017/10/5追記)
あるサンプルプロジェクトを以下の環境で検証したところ、Build Failedになりました。
- Max OS X 10,12,6
- Xcode 9.0 (8.2だと、iOS11のビルドができないというエラーが出ました)
- iOS 11.0 (iPad Air2)
解決手順
(1) アカウントを設定する
まずはプロジェクトの設定画面を開きます。①の箇所をクリックすると設定画面が開きます。
次に②でApple IDを指定します。このようにAdd Accountと表示されている場合、
選択してApple IDとパスワードを入力すると選択できるようになります。
(2) Build identifierを修正する
アカウントが登録されると、自動的にProvisioning Fileの生成が始まります。しかし、以下のように Failed to create provisioning profile というエラーが出てしまうことがあります。
この場合、build identifierがおかしいようです。私の場合、
com.sample.testapp.test
のようになっていたものを、
com.sample.testapp
にしたらエラーが消えました。エラーが消えるとこのようになります。
こうなれば、あとは「7. Xcodeでビルドを実行する」、「8.iPhoneの設定画面から、証明書を承認する」の手順に沿って進めれば、iOS11でも実機転送が可能になります。
Code signing is required for product type 'Application' in SDK 'iOS 11.0' というエラーもあったはずなのですが、上記の解決によって消えます。
ちなみに、Xcodeのバージョンが古いと、ビルドに失敗して Could not locate device support files というエラーが出ます。
これが出たときはXcodeのバージョンをあげる必要があります。
App StoreからダウンロードしているとApp Storeから更新通知が来るはずですが、なぜか私の環境では更新対象に入っておらず、自分でApp Storeからインストールを選択してバージョンを上げました。
10. 終わりに
手順は多いですが、慣れると意外に早くできます。ただし、XCodeのバージョンによって細かいやり方が変わることが多いので、本記事の通りでうまくいかない場合はご連絡頂けると幸いです。