Unity/Android(ARCore)/Macでアプリを作りたい

MacでAndroidのARCoreとUnityを使ったアプリを作りたい。
Unityのバージョンは2019.4.12f1(LTS)

画像1

Unity本体に加えて、Android SDK & NDK ToolsとOpenJDKを入れる。

画像2

日本語のほうが何かとうれしい場合は日本語化も。

画像3

Unityで新しいプロジェクトを作る。テンプレートは3Dを選ぶ。プロジェクト名は数字で始まる名前をつけるとあとで困るので、英字始まりにする。「ユーザー名」のところはMacにログインしているユーザー名に置き換える。

画像4

空のプロジェクトが立ち上がる。

画像5

[ファイル] - [ビルド設定...]を開いて、Androidを選んでSwitch Platformを押してプラットフォームを切り替える。

画像6

ここでいきなりビルドを押したくなるのをグッと我慢する。

画像7

プロジェクトをエクスポートをチェックして、エクスポートを実行する。エクスポートはちょっと時間がかかる。

画像8

話は変わって、Android Studioを立ち上げる。適当に最新を入れたのでVersion 4.1を使う。

画像9

右下のConfigureを押すとメニューが出るので、SDK Managerを選ぶ。

画像10

SDK PlatformsタブでどれかのバージョンのAndroid SDKが入っていることを確認する。

画像12

SDK ToolsタブでAndroid SDK Build-Toolsが入ってることを確認してOKを押して閉じる。

画像12

最初のウィンドウに戻ってくる。Open an Existing ProjectでUnityでエクスポートしたプロジェクトを開く。

画像14

ここでどっちのSDKを使うか聞かれるが、Use Android Studio's SDKでAndroid StudioでダウンロードしたSDKを使うことにする。

画像13

プロジェクトを開くとビルドが始まる。ウィンドウ下のBuildを押すとビルド状況が表示され、BUILD SUCCESSFULが出るまで待つ(ちょい時間がかかる)

画像15

左側のGradle Scriptsの中のbuild.gradle(Project)を開くと、gradle 3.4.0を使っていることがわかる。Unityが作成したAndroidプロジェクトのgradleバージョンが、のちのち大事。

画像16

再びUnityに戻って、[ファイル] - [ビルド設定...]を開き、プロジェクトをエクスポートのチェックを外して、さっき我慢したビルドボタンを押す。ファイルを保存する場所と名前を聞かれるから、適当な場所に適当な名前(test1.apkなど)を指定する。ビルドはちょっと時間がかかるので待つ。まだAR関連は何も入れてないうえにプロジェクトも空の状態なので、ここでapkがビルドできないと困ってしまう。

画像17

さてここから、ARCoreを使うための準備や設定を色々としていく。

[ウィンドウ] - [Package Manager]を開く。まずMultiplayer HLAPIをインストールする。

画像18

次にXR Legacy Input Helpersをインストールする。2つともインストールしたらPackage Managerは閉じる。

画像19

ここで、ARCore SDK for Unityをダウンロードする。最新のパッケージはarcore-unity-sdk-1.20.0.unitypackageだったのでこれを保存しておく。

画像20

Unityで[アセット] - [パッケージをインポート] - [カスタムパッケージ...]でARCoreをインポートする。初期状態で全部チェックが付いているのでそのままインポートする。インポートはちょっと時間がかかる。

画像21

インポートしたARCore SDKにはサンプルのシーンが入っているので、これを読み込む。左下のウィンドウ領域のプロジェクトタブを開き、[Assets] - [GoogleARCore] - [Examples] - [HelloAR] - [Scenes]とたどっていき、HelloARを見つけたらダブルクリックすると読み込むことができる。

画像22

画像23

[ファイル] - [ビルド設定...]を開いて、ビルドする。ファイル名は適当(test2.apkなど)でよい。gradleのバージョンが古すぎる(?)ようで、Resolving Android Dependenciesというウィンドウが開いてgradleのダウンロードが実行される。

画像24

どうやらgradle 5.1.1にアップデートされたようだが、ビルドは失敗する。自動解決でうまくいけば楽なのに。エラーを詳しく見てみると、どうやらARCoreはgradle 5.6.4以上を必要としているようだ。

画像25

Android Studioに戻ってみると右下にgradleのupdateの通知が出ている。渡りに船を得たので、さっそくgradleのバージョンアップをやってもらう。

画像26

どうやらgradleのバージョンを6.5に上げてくれるらしい。バージョン5.6.4以上ならOKなのでUpdate。

画像27

Gradle Daemonが開始して、gradleのダウンロードとビルドが実行される。ちょっと時間がかかる。

画像28

途中、Android SDK Build-Tools 29.0.2が必要と出るが勝手にインストールしてくれる。最後にBUILD SUCCESSFULと出れば終了。

画像29

このままUnityでビルドしても、やっぱりgradleのバージョンが古くてエラーとなるので、Android Studioで入れたgradleをUnityで使えるように設定を変更する。

[Unity] - [環境設定...] - [外部ツール]を開いて、Gradle Installed with Unityのチェックを外してBrowseボタンを押してgradleの場所を指定する。

画像31

gradleはMacのホームディレクトリの.gradleディレクトリにあるのだが、.(ピリオド)で始まるディレクトリは通常不可視なので、SHIFT + COMMAND + .(ピリオド)を押して見えるようにする。

画像30

Android Studioが入れてくれたgradle 6.5を探して、ディレクトリを選択する。

画像32

これでもまだビルドは通らない。[編集] - [プロジェクト設定...] - [Player]を開き、Androidぽいタブを開いて、XR設定を出す。ここのARCoreサポートをONにする。

画像34

まだまだビルドは通らない。続いて、[公開設定] - [ビルド]にある、Custom Main Gradle TemplateとCustom Launcher Gradle TemplateのチェックをONにする。

画像35

下記のページに従ってmainTemplate.gradleとlauncherTemplate.gradleを編集する。

編集するファイルはUnityのプロジェクトディレクトリの中にある。/<Unityのプロジェクトの場所>/Assets/Plugins/Android/mainTemplate.gradleと/<Unityのプロジェクトの場所>/Assets/Plugins/Android/launcherTemplate.gradleの2つである。このファイルをCotEditor/Vim/VSCodeなどのエディタで開いて編集する。

具体的にはファイルの先頭にある下記の記述を削除し...

// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN

下記のコードを貼り付ける。

buildscript {
   repositories {
       google()
       jcenter()
   }
   dependencies {
       // Must be Android Gradle Plugin 3.6.0 or later. For a list of
       // compatible Gradle versions refer to:
       // https://developer.android.com/studio/releases/gradle-plugin
       classpath 'com.android.tools.build:gradle:3.6.0'
   }
}

allprojects {
  repositories {
     google()
     jcenter()
     flatDir {
       dirs 'libs'
     }
  }
}

Unityに戻り[編集] - [プロジェクト設定...] - [Player] - [その他の設定]を開き、Vulkanを選択して-(マイナス)をVulkanを消す。

画像36

[ファイル] - [ビルド設定...]を開き、ビルドボタンを押す。これでようやくビルドが通るはず。UnityのコンソールにBuild completedが表示されればビルド成功!指定した場所に.apkファイルがある。

画像35

ビルドしたapkファイルをAndroid端末にコピーして、インストールする。

アプリが起動したらカメラの使用を許可する。平面を認識するとメッシュ?が出るので、メッシュをタップするとARCoreのオブジェクトが出現する。

画像37

これにて、Mac + Unity + ARCoreのサンプルを動かすお話はおしまい。




いいなと思ったら応援しよう!