iOSアプリを作ったことがない人が、Unityで作ったアプリをiOSデバイスに実機転送する方法(無料 )

=====
2017/10/5 追記

iOS11で最初うまくいかなかったので、対処方法を9.3に追記しました。

=====



最近知ったのですが、Xcode ver7以降であれば、iOSバイスへの実機転送が無料になっています。

これまで、iPhoneiPad実機にアプリをインストールするには、Apple Developer Program(年間10000円前後かかる)に登録し、証明書登録などの複雑な手続きが必要でした。

Xcode7以降は複雑な手続きが不要になっており、私が試した2009年頃よりもはるかに簡単になっていました。

しかし、若干つまづくところがあり、

・Unityを使っている

・今までiOSの実機転送をしたことがない、または以前やったことがあるけどもう忘れてしまった

・Unityでのビルドから、iOSバイスに実機転送して、起動までの方法をまとめて知りたい

という条件(私です、、)に合う情報が一発で見つからなかったので、今回整理してみました。

なお、検討時の環境は下記です。

Mac : OS X 10.11.5
Unity: 5.3.5f1
Xcode : 7.3.1

=============

[目次]

1. Xcodeをインストールする

2. Unityで何かを作る

3. Build Settingsで、PlatformをiOSにする

4. Player Settingsで、TargetデバイスiOSバージョン、パッケージ名を指定する

5. Buildする

6. Xcodeからプロジェクトを開く

7. Xcodeでビルドを実行する

8. iPhoneの設定画面から、証明書を承認する

9. Tips

=============

手順

1. Xcodeをインストールする

App StoreからXcodeをインストールします。

Xcode

Xcode


2,3GBあるので少し時間がかかりますが、App Storeでインストールを選ぶだけなので特に大変なことはないです。

2. Unityで何かを作る

好きなものを作ります。

3. Build Settingsで、PlatformをiOSにする

f:id:Takyu:20160530113440p:plain

4. Player Settingsで、TargetデバイスiOSバージョン、パッケージ名を指定する

それ以外の項目は、アプリによって設定必須の場合とそうでない場合があります。

パッケージ名については、

com.<会社名>.<アプリ名>

が一般的のようです。ただし、実際のところ、<>の中は他のアプリと被ってなければ何でも良さそうです。

ちなみに、Androidでは、

com.TestApp

のように"."が一つでも実機転送できます。

最初、上記のようにしたところ、転送はうまくいくのですが起動後の動作がおかしかったです。

ただし、試行錯誤中だったので、これが原因かは不明です。

参考までに、最近調べているStructure Sensor向けアプリの設定は下記です。

f:id:Takyu:20160530113226p:plain


5. Buildする

Development Buildは、有線によるデバッグをしたい時に設定します。

Buildボタンを押して、出力先を指定すると、Xcodeのプロジェクト一式ができます。

f:id:Takyu:20160530113615j:plain

6. Xcodeからプロジェクトを開く

Unity-iPhone.xcodeprj をダブルクリックします。

Xcodeが開いたらiPhoneを接続し、ロックを外しておきます。 (先に接続してても良いかも)

初めて接続した場合、「このコンピュータを信頼しますか?」というメッセージがiPhoneに表示されるので、「信頼する」を選びます。

その後、Xcodeの上側で進捗バーのようなものが出ます。1,2分待つと完了します。

f:id:Takyu:20160530113658p:plain

7. Xcodeでビルドを実行する

下記の画面が出たら、ビルドを開始します。

f:id:Takyu:20160530113725p:plain

開始するには、Xcode画面左上で三角のマークがある箇所をクリックします。これはビルドと実機転送を兼ねています。

f:id:Takyu:20160530113737p:plain


ところで、iPhoneにはProvisioning Fileというものがあり、これがインストールされたiPhoneにしか実機転送ができません。

上記手順に沿って三角ボタンを押すと、この時点ではProvisioning Fileがないので、下記のようなエラーが出ます。

f:id:Takyu:20160530115238j:plain

6年前だと、これをiOS Developer Programのサイトから生成し、秘密鍵を作ってから〜のように色々面倒だったのでした。

しかし、Xcode7以降では、ここで "Fix Issue"をクリックすると、Apple IDの入力画面が出ます。

ここでAppleIDとパスワードを入力すると、こういう画面が出ます。

f:id:Takyu:20160530115415j:plain

ここでChooseを選べばProvisioning Fileを作ってiPhoneに転送してくれます。(便利だ、、)

うまくいくと、こういう進捗バーが出ます。

f:id:Takyu:20160530115501p:plain

8. iPhoneの設定画面から、証明書を承認する


転送が終了すると、そのまま起動しようとします。

しかし、先ほどiPhoneに自動的に転送されたProvisioning FileをiPhoneから承認していないので、ここでエラーがでて中断します。

中断してもアプリは転送済みですので、次はiPhoneとPC間のケーブルを抜いて、iPhoneを操作します。

設定→一般→プロファイルとデバイス管理 と進むと、デベロッパAppという欄に自分のAppleIDが表示されています。

2016/6/11 スクリーンショットを追加

自分のAppleIDを選択すると、このような画面がでます。

f:id:Takyu:20160611130525j:plain

f:id:Takyu:20160611130539j:plain

それぞれ「信頼」を選びます。

これで、先ほど転送したアプリを実行することができます。


注:転送したアプリを全部削除すると、再度承認が必要になるようです。しかし、7,8の手順を実行すれば問題ありません。


ちなみに、証明書が有効であれば7の後iPhoneのアプリが起動します。しかし、転送完了時にiPhoneの画面ロックがかかっていると、下記のエラーが出て中断します。

f:id:Takyu:20160530123428j:plain

これは、「転送は完了したら起動に失敗した。なので、手動で起動してください」 という意味ですので、特に問題はありません。

Cancel Runningをクリックし、iPhone上でインストールされたアプリをタップすれば起動します。


========
2016/6/11 追記

当時試してから10日ほど経過した後、iPhoneに転送したアプリを起動したら、起動直後に落ちてしまいました。

調べてみると、プロビジョニングファイルが消えてました。(一定期間で消滅する?)

再度実機転送すれば問題ないですが、少し不便かもしれないですね。

========

9. Tips

9.1 Package Nameは7日間で10種類までしか使えない

11個目を使おうとしたらエラーがでて転送できませんでした。

ただし、同じPackage Nameであれば何度実機転送しても大丈夫です。

9.2 iPhone接続時の「写真」アプリの自動起動を無効化

ちなみに、iPhoneMacにつなぐとき、Mac上で「写真」アプリが自動的に起動しますが、iPhoneの抜き差しが多いと煩わしくなります。

下記のコマンドで無効化できます。

$ defaults -currentHost write com.apple.ImageCapture disableHotPlug -bool YES


こちらのサイトを参考にさせていただきました。ありがとうございます。

nanokamo.com


これまで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)

f:id:Takyu:20171005225942p:plain

解決手順

(1) アカウントを設定する

まずはプロジェクトの設定画面を開きます。①の箇所をクリックすると設定画面が開きます。

f:id:Takyu:20171005230350j:plain


次に②でApple IDを指定します。このようにAdd Accountと表示されている場合、

f:id:Takyu:20171005231801p:plain

選択してApple IDとパスワードを入力すると選択できるようになります。


(2) Build identifierを修正する

アカウントが登録されると、自動的にProvisioning Fileの生成が始まります。しかし、以下のように Failed to create provisioning profile というエラーが出てしまうことがあります。

f:id:Takyu:20171005232132p:plain

この場合、build identifierがおかしいようです。私の場合、

com.sample.testapp.test

のようになっていたものを、

com.sample.testapp

にしたらエラーが消えました。エラーが消えるとこのようになります。

f:id:Takyu:20171005232927p:plain

こうなれば、あとは「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 というエラーが出ます。

f:id:Takyu:20171005231501p:plain

これが出たときはXcodeのバージョンをあげる必要があります。

App StoreからダウンロードしているとApp Storeから更新通知が来るはずですが、なぜか私の環境では更新対象に入っておらず、自分でApp Storeからインストールを選択してバージョンを上げました。