事象
下記のエラーが出てAndroidビルドに失敗。他にもエラー出ていたが下記のエラーが根本原因。
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':launcher:mergeReleaseNativeLibs'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
> More than one file was found with OS independent path 'lib/arm64-v8a/libopenxr_loader.so'. If you are using jniLibs and CMake IMPORTED targets, see <https://developer.android.com/studio/preview/features#automatic_packaging_of_prebuilt_dependencies_used_by_cmake>
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at <https://help.gradle.org>
BUILD FAILED in 24s
重要なのは、「More than one file was found with OS independent path ‘lib/arm64-v8a/libopenxr_loader.so’」 の部分。
どうもlibopenxr_loader.soがビルド時に複数参照されていることが原因のよう。libopenxr_loader.soファイル自体はOpen XRプラグインに含まれている。
解決法
「More than one file was found with OS independent path…」のエラーをキーワードに調べたところ、下記の記事を発見。
https://kondeneenen.com/unity_android_shared_so/
解決法を簡単にまとめると、
-
UnityのProject Settings → Player → Publish Settings → BuildでCustom Main Gradle Templateにチェックボックスを入れる。
-
Assets\Plugins\Android\mainTemplate.gradleに下記の記述を加える(= gradleのビルド時にlibopenxr_loader.soをパッケージングから除外)。
android { defaultConfig { packagingOptions { exclude '**/libopenxr_loader.so' } } }
補足
筆者の環境では、libopenxr_loader.soが下記の2か所に存在していた。
- Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\jniLibs\arm64-v8a\libopenxr_loader.so
- Library\PackageCache\com.unity.xr.openxr@1.4.1\OculusQuest\Runtime\android\arm64\libopenxr_loader.so
コメント