Unity+ARCoreを使ったAndroid用アプリを開発していますが、Ubuntuで開発している記事があまり見当たらなかったので、主に環境構築についてまとめました。
現時点(2020/12/30)時点で、極力新しいバージョンのUnityとARCoreを使用しました。
開発したアプリ
「はじめようARCore in 札幌」で解説されている、画面をタップしたらその場所にオブジェクトを置くアプリを開発しました。
ただし、こちらの記事で使用しているARCoreのバージョンは少し古るいため、一部最新に合わせて変更しました。
環境
- 開発マシン
- Ubuntu 16.04
- Unity Hub v2.0.0
- Unity 2019.4.17f1 (LTS)
- ARCore v1.22.0 Download link
- Gradle v5.6.4
- 検証デバイス
- Xperia 5 (J9210)
開発環境構築
UbuntuへのUnityのインストール方法は、他にも解説記事があるため詳細は説明しません。
Unityのインストール
-
ダウンロードページから、Unity Hubをダウンロードします
- 「Unity Hub の詳細はこちら」を選択
- 「Unity Unity Hub v2.0.0 Release」を探して選択
- Download Linkの中から「Hub for Linux」を選択してダウンロード
- UnityHub.AppImageというファイルがダウンロードされます
- 実行権限の付与
$ chmod +x UnityHub.AppImage
- Unity Hubの実行
$ ./UnityHub.AppImage
- Unityのインストール
- 左のメニューで「インストール」を選択し、右上の「インストール」ボタンを選択
- Unity 2019.4.17f1 (LTS)
- ダウンロードするプラグインで「Android Build Support」を追加
しばらく待つとインストール完了です。
ARCoreのインストール
- 必要なパッケージのインストール
「Window -> Package Manager」を選択し、以下パッケージをインストールします- Multiplayer HLAPI
- XR Legacy Input Helper
- パッケージを「ここ」からダウンロードします
arcore-unity-sdk-1.22.0.unitypackage - Unityプロジェクトを開いた後、パッケージを追加します
- 「Assets -> Import Package -> Custom Package」と選択
- 上記でダウンロードしたarcore-unity-sdk-1.22.0.unitypackageを選択
Gradleのインストール
Unityのインストール時にAndroid Build Supportを追加しておけばGradleもインストールされますが、ARCoreではversion 5.6.4以上が要求されます。
自分の環境ではデフォルトでインストールされたGradleのバージョンがこれより古くビルドエラーがでたため、追加でインストールしました。
自分がインストールしたのはversion 5.6.4です。
- Gradleのダウンロード
- 「こちらのページ」からv5.6.4を探し Downlowdでcompleteを選択します
- gradle-5.6.4-all.zipというファイルがダウンロードされます
- ファイルの移動、展開
- ダウンロードしがファイルを任意のディレクトリに移動します。自分はUnityがダウンロードしたGradleが入っているディレクトリと同じディレクトリに移動しました
$ mv gradle-5.6.4-all.zip ~/Unity/Hub/Editor/2019.4.17f1/Editor/Data/PlaybackEngines/AndroidPlayer/Tools
- 展開
$ unzip gradle-5.6.4-all.zip
Unityのビルド設定
こちらも詳しく解説した記事が他にあるため簡単に記述します。以下はUnityのプロジェクトでの設定となります。
- PlatformをAndroidに変更
- File -> Build Settingsで「Android」を選択し「Switch Platform」を押下
- Gradleのパス設定
-
Edit -> Preferences -> External Tools -> Android -> Gradle でRecommendedのチェックを外し、追加インストールしたGradleのフォルダを選択する
(自分の環境の場合):/home/{ユーザ}/Unity/Hub/Editor/2019.4.17f1/Editor/Data/PlaybackEngines/AndroidPlayer/Tools/gradle-5.6.4
-
Edit -> Preferences -> External Tools -> Android -> Gradle でRecommendedのチェックを外し、追加インストールしたGradleのフォルダを選択する
- Playerの設定
-
Edit - > Player Settings -> Player
- Other Settings
- Graphics APIからVulkanを削除
- Minimum API Levelを7.0以上
- XR Settings
- ARCore Supportedにチェック
- Publishing Settings
- Custom Main Gradle Templateにチェック
- Custom Launcher Gradle Templateにチェック
- Other Settings
-
Edit - > Player Settings -> Player
Android deviceの認識
UbuntuにAndroid deviceを接続してアプリをインストールするには、以下設定が必要になります。
初めにPCにAndroidデバイスを接続した後、ベンダーID確認のためlsusb
コマンドを実行します
$ lsusb
Bus 001 Device 015: ID 0fce:520a Sony Ericsson Mobile Communications AB
複数のUSBデバイスがPCに接続されているときは、その数だけ結果が出力されます。その中からAndroidデバイスを探します。列の最後がメーカー名で、それから分かると思います。
上記は自分の環境で、Xperia 5を接続した時の結果です。この中の0fceというのがベンダーIDです。
この値を使って、デバイスの接続ルールを追加します。
$ sudo vi /etc/udev/rules.d/51-android.rules
# 以下をファイルに記述する。Vendor IDは環境に応じて変更する
UBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0666", GROUP="plugdev"
アプリ実装
「はじめようARCore in 札幌」のP.50 ~ P.88の内容をほぼそのまま実装しましたが、ARCoreのバージョンに合わせて下記だけ変更しました。
- P.52
- AndyGreenDiffuseがなかったため、Assets -> GoogleARCore -> Examples -> Common -> PrefabsのARCorePawnを代わりに使用しました。
参考
UbuntuへのUnityのインストール
Gradle関連
- Build for Android 11 with Unity
- [Gradleのダウンロード]{https://gradle.org/releases/}
Unityアプリ実装
Android deviceの認識