Unity⇒Oculus GOビルド時のエラーとその対策まとめ

こんにちは、飯塚です。
 
2018年夏の親子ものづくり体験では、AMGの技術部門でWeb版の花火をVRに対応させる試みをしましたが、本番直前になってOculus Goへのビルドでやたらハマりました。そんな苦い経験を教訓にエラーメッセージ別の対処法をまとめました。
 
この記事のターゲットはこんな人です。
 

ビルドの設定は一通りしてあるはずなのに、うまくいってない人
ビルド時のエラーメッセージをググっても解決策が見つからない人
細かい理屈は置いといて、対処法を知りたい人

目次

  1. UnityException: Bundle Identifier has not been set up correctly
  2. No Android devices connected
  3. AndroidManifest-main.xml Error
  4. UnityとAndroid SDKのバージョンによるエラー
  5. まとめ

Bundle Identifier has not been set up correctly

エラーログ

UnityException: Bundle Identifier has not been set up correctly
Please set the Bundle Identifier in the Player Settings. The value must follow the convention 'com.YourCompanyName.YourProductName' and can contain alphanumeric characters and underscore.
Each segment must not start with a numeric character or underscore.

 
エラーメッセージの通りパッケージ名を直すだけです。パッケージ名は一意でないといけないようなので、名前をつけてあげます。
 
 
Build Settingsをクリックをします。
 

 
次に、Player Settings…をクリックします。
 

 
次に、Inspector > Other Settings > Identification > Package Name を変更します。
 

No Android devices connected

エラーログ

Error building Player: UnityException: No Android devices connected
No Android devices connected. If you are sure that the device is attached then it might be USB driver issue, for details please check Android SDK Setup section in Unity manual.

 
ビルド先のアンドロイド端末(Oculus Go)が見つからないと言っています。
 
1. Oculus GoとPCがUSBでつながっていることを確認する。
つながっていれば、Oculus Goライトがオレンジ色から、緑色のライトに変わります。
 
2. Oculus GoがUSBデバッグを許可していることを確認する。
許可していなければ、Oculus Goを装着したときに、以下のようなポップアップが表示されるので、OKをクリックします。
 

 
3. Oculus Goが開発者モードになっていることを確認する。
 
4. コマンドプロンプトを立ち上げて、下記のコマンドを流す。
接続中のアンドロイド端末があるか確認。
adb devices

アンドロイド端末を停止。
adb kill-server

アンドロイド端末を起動。
adb start-server

 
※adbコマンドの導入方法は下記リンクで紹介されています。
Qiita ADBコマンド導入の方法
導入には、多少かさばるもののAndroid Studioを入れるのが手っ取り早いと個人的に思います。

AndroidManifest-main.xml Error

エラーログ

【Project名】\Temp\StagingArea\AndroidManifest-main.xml:4:125-150 Error:
     Attribute application@debuggable value=(true) from AndroidManifest-main.xml:4:125-150
     is also present at AndroidManifest.xml:3:148-174 value=(false).
     Suggestion: add 'tools:replace="android:debuggable"' to <application> element at AndroidManifest-main.xml:4:3-12:17 to override.

 Q:\Unity Projects\【Project名】\Temp\StagingArea\AndroidManifest-main.xml:4:16-57 Error:
     Attribute application@theme value=(@style/UnityThemeSelector) from AndroidManifest-main.xml:4:16-57
     is also present at AndroidManifest.xml:3:83-147 value=(@android:style/Theme.Black.NoTitleBar.Fullscreen).
     Suggestion: add 'tools:replace="android:theme"' to <application> element at AndroidManifest-main.xml:4:3-12:17 to override.

Suggestionの通りにAndroidManifest.xmlを修正します。
 
私の環境だと以下のパスにありました。
Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Apk\AndroidManifest.xml
 
修正前
    <application
        android:theme="@style/UnityThemeSelector"
        android:icon="@drawable/app_icon"
        android:label="@string/app_name"
        android:debuggable="true">

 
修正後
    <application
        android:icon="@drawable/app_icon"
        android:label="@string/app_name">

UnityとAndroid SDKのバージョンによるエラー

個人的にはここが一番ハマったところでした。どうやら、unityのバージョンによってはOculus Goへのビルドに失敗することがあるようです。
 
調べてわかったこと
 

unity5.6f系はビルドに失敗することがある
最新版のunity2018系もβ版の場合はビルドに失敗する可能性がある。
UnityとAndroid SDKのバージョンの組み合わせによってはビルドに失敗することがある。

 
結局成功したのは、以下のパターンです。

Unity 2018.1.0f.2
Android SDK Android 8.0 (Oreo) (API level 26)
Android Minimum API Level Android 4.1 ‘Jelly Bean’ (API level 16)

 
Android SDK (Android Studio)

 
Android Minimum API Level (unity)

 
Android SDKのバージョンとAndroid Minimum API Levelのバージョンが必ずしも一致しないことにも注意してください。私はこれに気づくのに、結構時間がかかりました。
 
試しにAndroid SDKのバージョンを、Android 4.1 (Jelly Bean) API Level 16に合わせると、以下のようなエラーが出ます。
 

 
各設定をチェックした後、それでもビルドに失敗する場合は、一度unityのバージョンを疑ってみてください。

まとめ

今から振り返ると、モックを作った時点でOculus Goで確認するところまで進めていれば、もっと余裕をもってビルドエラーに対応できたなと反省しています。
 
UnityのおかげでVR開発のハードルはかなり下がっていますが、もしこれから開発を始める方がいたら、VRにアプリをビルドするまでの環境をはじめに整えておくと、後々ラクになると思います。

記事をシェア
MOST VIEWED ARTICLES