CrossRoad

XRを中心とした技術ブログ。 Check also "English" category.

【2017/10/5更新】Unityで作ったアプリをiOSデバイスに転送する(無料)



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デバイスに実機転送して、起動までの方法をまとめて知りたい

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


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

  • 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にする

Unity Build SettingsのiOS選択

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

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

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

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

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

com.TestApp

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

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

Structure Sensor向けの設定
Unityのバージョンによって表示内容が変わる可能性があります。



5. Buildする

Development Buildは、有線によるデバッグをしたい時に設定します。Buildボタンを押して、出力先を指定すると、Xcodeのプロジェクト一式ができます。

UnityでビルドされたXCodeプロジェクトのフォルダ構成

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

Unity-iPhone.xcodeprj をダブルクリックします。Xcodeが開いたらiPhoneを接続し、ロックを外しておきます。 (先に接続してても良いかも)

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

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

XCodeでのiOSデバイス認識中

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

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

ビルド完了時に出る画面

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

XCodeのビルド開始ボタン

ところで、iPhoneにはProvisioning Fileというものがあり、これがインストールされたiPhoneにしか実機転送ができません。上記手順に沿って三角ボタンを押すと、この時点ではProvisioning Fileがないので、下記のようなエラーが出ます。

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を選択すると、このような画面がでます。

iPhoneでのプロビジョニングファイルインストール前の設定画面

iPhoneでのプロビジョニングファイル信頼画面

それぞれ「信頼」を選びます。これで、先ほど転送したアプリを実行することができます。

注:転送したアプリを全部削除すると、再度承認が必要になるようです。しかし、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) アカウントを設定する

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

Xcodeでの設定画面

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

Apple Account入力画面

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

(2) Build identifierを修正する

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

provisioning fileエラー

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

com.sample.testapp.test

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

com.sample.testapp

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

XCodeのエラーが消えた状

こうなれば、あとは「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バージョンが古いことで失敗する例

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

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

10. 終わりに

手順は多いですが、慣れると意外に早くできます。ただし、XCodeのバージョンによって細かいやり方が変わることが多いので、本記事の通りでうまくいかない場合はご連絡頂けると幸いです。