読者です 読者をやめる 読者になる 読者になる

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

Unity iOS

最近知ったのですが、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の設定画面から、証明書を承認する

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に転送したアプリを起動したら、起動直後に落ちてしまいました。

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

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

========

Tips

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

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

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

(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に登録してから手続きをする必要があるので注意が必要です。