0. はじめに
XREAL用アプリ開発で用いる公式SDKのNRSDKでは数多くのサンプルシーンが提供されています。
そのサンプルシーンの中でハンドトラッキング機能の使い方について学習するのに便利なのがHandTrackingシーンです。
このシーンでは手を使ったハンドトラッキングを使用するのに必要なセットアップ、オブジェクトとのインタラクションやUI操作、手の位置の角度の取得方法を学ぶことができ初学者にとって非常に有用な情報が詰まっています。

しかし、最新版のSDKの2.2.1(2024年7月30日現在)ではビルド後のアプリの起動の際に問題が生じるケースがあります。
問題が生じない場合もあるので調査が十分ではありませんが、現時点で分かっている解決方法をメモとして残しておきます。
1. 前提
- Unity 2022.3.xでプロジェクトを作成
- NRSDK 2.2.1インストール済み
- NRSDK Project Tipsで最低限のセットアップ済み
- HandTrackingシーンを使用
- アプリはNebulaから起動
- デバイスはXREAL LightとAir2 Ultra
2. 問題点と解決方法
問題①:アプリアイコンをクリックできない

初回のビルド時に発生することがあります。おそらくアプリ起動に必要な情報の追加が初回ビルド時に間に合わなかったのではないかと考えられます。この問題が生じた場合は事前にマニフェストファイル等を生成してプロジェクトに適用することで解決できます。具体的にはメニューバーのNRSDKを開き、PreprocessBuildForAndroidをクリックします。

問題➁:アプリ起動直後にホーム画面に戻ってしまう
アプリが起動してスマホ画面にUnityのスプラッシュスクリーンが表示されるけど、その後すぐにホーム画面に戻ってしまうケースがあります。おそらくアクセスしようとしている何かしらの機能が正常に動作していないものと考えられます。
下記の記事によるとNRSDK2.2.0からはSDKの読み込みの方法が新しくなったとのこと。
Getting Started with NRSDK | NRSDK
詳細は公式ページを参照していただきたいが、要約するとAssetsフォルダにあるNRLibraryStripConfigを使うことで使用したい機能を有効化し、不要な機能はオフ(ビルドに含めないように)にすることができるようです。
ここで、BaseApiとHandTrackingを明示的にオンにしたところ問題は解決しました。

Stripと書かれているのでビルドするapkからこれらが除外されるように見えますよね?
実際、これらはapkには含まれず別の方法によってアプリでロードされるようです。apkファイルのサイズを小さくするという観点で見ればstripで問題ないのですが、アプリ内でも使われなそうな印象を受けて紛らわしいのでネーミングは変えてほしいところです。
3. まとめ
以上です。冒頭でも述べた通り、深く調査をした訳ではないのでより良い解決方法や、この問題を回避するためのセッティングがあるかと思います。私の場合、問題②が新規に作成したプロジェクトでは発生し、過去に作成したプロジェクトのNRSDKをアップデートした場合には生じませんでした。この辺の原因は要調査だと考えています。
ですがベストな方法が見つかるまでの一時しのぎとしてこちらの方法を採用できればと考えています。
もし読者の方で良い方法をご存じでしたらぜひお知らせください。