Immersalをきっかけにandroid開発を始めるときに気を付けたいポイント
Immersalについて
フィンランドImmersal社が開発提供している、空間マッピングとVisual Positioning Solutionを提供するサービスです。
公式サイト
特徴として下記が挙げられます。
- 写真をImmersalのクラウドにUploadすると自己位置推定用の空間マップを作ってくれる
- スマホやARデバイスのカメラ映像を送ると空間マップと照合して自己位置を返してくれる
- かなりの規模まで「無料」で使える!(これ重要)
このドキュメントについて
このドキュメントは下記のような読者を想定しています。
- 普段xR関連の開発をしているけど、android開発はしたことがない人
- サンプルプロジェクトを自分で触ってみたけどエラーがでてうまくいかなかった人
私自身もImmersalをきっかけに、unityでandroidビルドを触りはじめ、沼にはまったので、備忘録も兼ねておいておきます。そのためandroid向け開発に慣れた人が書いた記事ではないことをご理解ください。
大前提
- 公式ドキュメントを見ながらAndroid環境を整える
-
使用したunity:2019.4.26f
-
ImmersalのデベロッパーポータルにアクセスしサンプルプロジェクトとSDKをダウンロードしてくる
-
ARCoreに対応したスマートフォン
エラー/警告との闘い
エラー
UnityException: JDK not found
unityインストール時に、オプションでandroidモジュールにチェックを入れてインストールしていたが、"OpenJDK"はさらに個別でチェックをしないとインストールされないという罠だった。
このOpenJDKがないとビルドするときにエラーがでてビルドができない。
- 対処法・詳細
il2cpp.exe did not run properly!
unityプロジェクトのパスに日本語が含まれているという非常に初歩的なミスをしてしまっていた。androidビルドだったため、普段開発するときと別の場所にパスを指定していたが、気づかないうちに日本語パスが含まれてしまっていた。基本的なことだが、やりがちなミスなので気を付けたい。
- 対処法・詳細
androidSDKの再インストール
上記手順を行ってもどうしてもうまくいかなかったので、androidSDKを再インストールしたらエラーを吐かずに解決できた。エラーメッセージを一つずつ解消してもうまくいかないときは環境を疑ってみよう。
警告メッセージ
No active UnityEngine.XR.ARSubsystems.XRParticipantSubsystem is available. Please ensure that a valid loader configuration exists in the XR project settings.
サンプルプロジェクトをunityで立ち上げると、「No active~」で始まる警告メッセージがConsoleに吐かれます。
これは、「ARFondationがARCoreもしくはARkitのどちらかに対応したスマートフォンでのみ動作することを意図されているが、unityエディタ上ではPCに接続されているwebカメラを読み取りにいってしまい、警告がでている(要約)」というような形です。実際にこの状態でもビルドすると実機上では動作します。
私の場合は上にあげていたエラー類と一緒に出ていたため、この警告メッセージがエラーに関連していると考えこの警告メッセージをどうにかしようといろいろ試しましたが、エラーとは別問題でした。
なお、このエラーはARFondationのgithubにissueとしてあがっていて、いろいろと議論されているので、気になる方は覗いてみてください。
闘いの果てに
ビルドが通り、いざ実機というタイミングでビルドした端末がARCore非対応端末であることが発覚した。私のような愚か者になる前に、ARCoreに対応した端末がどうか確認。もしくは対応端末を用意してから開発をするようにしましょう。
(事前に対応端末一覧をチラ見していましたが、Huawei P20の文字を見て対応していると思い込んでしまった。まさかHuawei P20 Liteがピンポイントで対応していないなんて...)
Discussion