Mirage Soloから始めるDaydream開発


#1 概要
Lenovo社から販売されているDaydream対応スタンドアロン型VRデバイス「Mirage Solo with Daydream」の開発環境構築に関する記事になります。
対象としては0の状態でMirage Soloから初めてDaydreamの開発環境を整える方としています。ただし、前提知識としてUnityのプロジェクト作成やエディタでの基本操作は理解しているものとします。

※Unityのプロジェクト作成やエディタでの基本操作はこちら
Unityのインストールと新規プロジェクトの作成 - Unity＋ARKitで一歩先行くARアプリ開発 Think IT!
https://thinkit.co.jp/article/13337
Unityの設定方法と基本操作 - Unity＋ARKitで一歩先行くARアプリ開発 Think IT!
https://thinkit.co.jp/article/13531

Daydream(Android)の開発環境の構築ではバージョンの違いによる問題が発生しやすいことで知られています。
もし、上手くビルドできないなどの問題に当たった際にも確認していただけると幸いです。

#2 構築する開発環境
ここでは次の開発環境を構築することを目標とします。

・Unity2017.4.1.f1
・Android Studio 3.1.2
・Java SE Development Kit 8u171
・gvr-unity-sdk v1.130.1

※もしビルドに失敗するようであれば
・Andorid SDK tools r25.2.5

また、使用するGoogle VRサービスのバージョンは1.13.191930559です。

現在Windowsのみの手順紹介となっていますが、追ってMacを使用した開発環境構築手順も追記します。

#3 環境構築手順
##3.1 Unityのインストール
Unityの[アーカイブページ](https://unity3d.com/jp/get-unity/download/archive)もしくは[Long Term Support](https://unity3d.com/jp/unity/qa/lts-releases)から対象のバージョンをダウンロードします。

今回使用するのは2017.4.1f1なのでここをクリックしダウンロードします。
![unityver.png](https://qiita-image-store.s3.amazonaws.com/0/162880/91c784cc-576b-7bdd-adb6-84263de4a347.png)

Unityのインストールはインターネット上に多く公開されているため割愛します。

## 3.2 Android Studioのインストール
Android Studioは次のURLからダウンロードします。
https://developer.android.com/studio/?hl=ja
![androidstu.png](https://qiita-image-store.s3.amazonaws.com/0/162880/dcc03b41-132c-2c54-812e-52441e5e5ed2.png)
”DOWNLOAD ANDROID STUDIO”をクリックし、規約に同意した後、ダウンロードを開始します。
ダウンロード後はインストーラーに従ってインストールを行います。

##3.3 JDKのインストール
Java SE Development Kit(JDK)は8の最新である8u171を使用します。次のURLからダウンロードします。
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

ライセンスに同意した場合、赤い丸印で囲ってある"Accept License Agreement"を選択し、自分のOSにあったJDKを赤い四角で囲った部分から選択しダウンロードします。
![jdk.png](https://qiita-image-store.s3.amazonaws.com/0/162880/f9260a7c-8471-03b4-af70-e01ea9199d89.png)
ダウンロード後はインストーラーに従ってインストールを行います。

##3.4 Unityの起動と設定
インストールしたUnityを起動します。
新規プロジェクトを3Dtemplateで適当な名前で作成します。
File -> Build Settingを開きPlarformでAndroidを選択します。"Open Download Page"をクリックし、UnityのAndroid Supportをセットアップします。インストーラーに従いインストール後はUnityを再起動します。
![androidswhi.png](https://qiita-image-store.s3.amazonaws.com/0/162880/8549d4a9-c5eb-d96a-f0fb-1b610ad09654.png)

再起動後、再度Build Settingを開き、
１のSwitch Platformを押し、２の**Build SystemをInternalに変更**します。

![buildset.png](https://qiita-image-store.s3.amazonaws.com/0/162880/453d08f5-6d37-9f65-3331-c3d0ca570ed8.png)

３のPlayerSettingsを開いた後、Inspector から引き続き設定を行います。
Other Settings内のPackage NameとMinimum API Levelを変更します。

**Package Nameは好きな名前(今回はcom.Test.Mirage)**
**Minimum API LevelはAndroid 7.0 'Nougat'(API level24)を選択**しましょう。
![buildset2.png](https://qiita-image-store.s3.amazonaws.com/0/162880/c38a6b7c-127e-0efa-d18f-a2e29fce3187.png)

**XR SettingsのVirtual Reality Supportedにチェックマークを入れ、Virtual Reality SDKsの+ボタンを押しDaydreamを追加**します。
![buildset3.png](https://qiita-image-store.s3.amazonaws.com/0/162880/1ec5d6cd-4d43-8aa6-bc31-f13a6ee1e0f5.png)

続いて、Edit->Preferences->External ToolsにあるAndroidのSDKとJDKを設定します。

![prefe.png](https://qiita-image-store.s3.amazonaws.com/0/162880/78b640c2-af63-a1cd-ee1f-26fdfb2bee25.png)


Androidの**SDKはC:/Users/ユーザー名/AppData/Local/Android/Sdk**を指定します。
**JDKにはC:/Program Files/Java/jdk1.8.0_171**を指定します。


##3.5 gvr-unity-sdkの導入
gvr-unity-sdkはGoogle VR SDK for Unityのことです。

次のURLからダウンロードします。
https://github.com/googlevr/gvr-unity-sdk/releases
![gvrsdk.png](https://qiita-image-store.s3.amazonaws.com/0/162880/c70bc3e7-2810-4679-22d9-fb6d4888f148.png)

unitypackage形式になっているため、
ダウンロード後はダブルクリックでUnityにインポートします。
詳細な使用方法は別途記事にまとめます。

##3.6 Mirage Soloの開発者設定
Mirage Soloにアプリケーションを入れられるように設定します。
まずMirage Soloの開発者モードを有効にする必要があります。

Mirage SoloでDaydreamダッシュボードを開き、右上の設定->すべての設定->システム->端末情報からビルド番号を７回押すことで開発者モードに入ることができます。

![Screenshot_20180513_210230.jpg](https://qiita-image-store.s3.amazonaws.com/0/162880/c712099a-85e0-721c-bd26-ae8ee11edde1.jpeg)

開発者モードが有効にした後、設定->すべての設定->システム->開発者向けオプション内にある"USBデバッグ"を有効にします。

![Screenshot_20180513_210214.jpg](https://qiita-image-store.s3.amazonaws.com/0/162880/b00be7ae-8f97-2b82-847f-6cbe89be8163.jpeg)
これでMirage Solo側の設定は終了です。PCにUSBを使用して接続、認識されれば正常に設定されています。

##3.7 Build and Runで実機テスト
GameObjectからCubeを空間に配置し、Sceneを保存したら実機で確認してみましょう。
File -> Build Settingsを開き"Add Open Scenes"を押しSceneを追加したら"Build And Run"をクリックし、実機で動作させます。その際にMirage SoloはUSBで接続しておいてください。
この際に次のようなUSBデバッグを許可する画面がMirage Solo側に表示されることがあります。内容を確認しOKを押してください。

![Screenshot_20180513_205436.jpg](https://qiita-image-store.s3.amazonaws.com/0/162880/4ba71c29-c502-4a30-4ff7-4dda82b3b776.jpeg)

Mirage Solo側で先ほど設置したCubeが表示されれば成功です。


#4 ビルド時にエラーが出る場合
現在配布されているAndroid Studio 3.1.2のWindows版インストーラ（android-studio-ide-173.4720617-windows.exe）に含まれるSDKはUnityの2017.4.1f1でビルド時にエラーが発生することがあります。
次のURLから過去のAndroid SDKをダウンロードして使用します。
http://dl-ssl.google.com/android/repository/tools_r25.2.5-windows.zip

C:/Users/ユーザー名/AppData/Local/Android/Sdk内にあるtoolsを変更する必要があります。

ダウンロードしたzipファイルを解凍し、出てきたtoolsと入れ替えましょう。
**※バックアップをとっておき一度削除した後、新たに移動するほうが良いです。上書きだと正常に動作しないことがあります。**

#あとがき
これで今回目標としていた環境構築は終了です。お疲れさまでした。

バージョンは自分の使いたいバージョンに合わせて調整する必要がありますが、今回はOculus Goにも使えるバージョンで環境を整えました。(Oculus Goに移植できるわけではありませんが…)

また、今回はBuild and Runを使用して実機にビルドしましたが、Mirage SoloもAndroidですので、Buildしたapkファイルをadb経由でインストールすることも可能です。

6DoFの設定や、「プレイエリアの外」に出る方法は別途記事をご覧ください。

Mirage Soloで「プレイエリアの外」を解除する方法
https://qiita.com/JackMasaki/items/069af6a59f6fb8723aaf