Unityのアプリケーションを転送するには「USB接続」が必要な訳ですが、Unityのアプリ転送は内部的にはADBを使用しているらしく、この接続をwifi経由で行えばUSB接続せずアプリをデバイスへ転送出来たりします。
このアプローチを使用することで、GearVR開発時のアプリ実行工程がだいぶシンプルになります。あとはUSB端子の寿命が延びるのかもしれません。
具体的には下のように変化します。
通常の方法
Wifi経由で転送
- ビルド&ラン
- ラーメンを食べる
- Gear VRを被る
ほらこんなもん。
これで面倒くさいGear VRの抜き差しから解放されると期待した人は私です。
目次
adb接続をwifi経由で行う
アプリをWifi経由でインストール&実行するには、adbの接続をwifi経由行います。
adb tcpip 5555 adb connect IPアドレス:5555
"connected to IPアドレス:5555"のような表示が出れば成功です。
あとは、この状態でBuild & Runを行えばWifiUSB接続を行わなくともアプリがインストールされ、アプリケーションを起動することが出来ます。
コマンドプロンプト経由で行う
このBuild&Runですが、WifiはUSBほど高速ではないので非常に時間がかかります。具体的には30秒で終わるものは3分くらいかかります。
そしてUnityの「ビルド完了まで操作出来ない」の範囲は「アプリケーション転送まで」を含めてしまうので、このままBuild&Runすると非常に長い時間PC操作出来なくなります。
なので、Unityではビルドのみを行いアプリケーションに転送する処はコマンドから行うことで、操作出来ない時間を減らします。
adb install -r 出力したapkのパス
adb shell am start -n バンドルID/com.unity3d.player.UnityPlayerActivity
これを実行すると、アプリケーションを転送しアプリを起動(場合によっては再起動)します。
ちなみに、このadb installはUSB接続時もそれなりに効果があります。アプリサイズがデカいゲームとかは特に。
Wifi転送をGear VRで行う
Gear VRに対して上の手順でインストールを行った場合、インストール&転送にわざわざGalaxyS6を抜き差しせずアプリケーションの転送を行うことが出来ます。
また転送後の起動も(少なくともBuild & Runを使用する限りは)完了しているので、いちいちアプリを開いて確認…みたいな事をしなくても良いのもGoodです。
但し、この接続は対象との接続が確立されていることが最低条件となり、(多分)スリープするとadb connectが外れるのでスリープしないような設定にする必要があります。
またGear VRはデバイスに刺した状態だとUSB給電していても電池をモリモリ消費するので、ちゃんと急速充電対応の給電気を使用しないと気づいたら電池が0になってたりします。(Gear VRの被ってない状態は、ディスプレイを非表示にするだけで内部的にはガンガン動いてるそうな)
もう少しwifi転送が高速なら実用的なのですが…
というか、なぜGear VR下のUSBはUSB転送に対応していないのか。コレガワカラナイ