Open2

【WIP】Firebaseを使ったUnityプロジェクトをAndroidプロジェクトに組み込んで使おうとするとDllNotFoundExceptionが発生する件の調査

yamacraftyamacraft

未解決のまま終わる可能性があります

はじめに

UnityはAndroidプロジェクトで出力し、さらにそれをAARとしてビルドすれば、既存のAndroidプロジェクトに組み込むことができます。

そうした仕組みを最近知ったので、既存のUnityプロジェクトをライブラリ化して組み込む実験をやっていたのですが、Firebase関連の初期化と思われるタイミングで DllNotFoundException: FirebaseCppApp-7_0_2 が発生してしまいました。

いまいちこの問題が解決できるものなのかそもそも解決不可能なのか、原因があるとするならどこなのかもいまいちよく分からないので、個人的な調査の公開ログとしてこのスクラップを作成しました。

環境

  • Unity editor version: 2019.4.11f1
  • Firebase Unity SDK version: 7.0.2
  • Source you installed the SDK: unitypackage
  • Firebase Realtime Databaseを利用

Androidライブラリ化に関する参考資料

やりたいこと

Firebaseを使ったUnityプロジェクトをライブラリ化しつつ、SceneをViewとして利用する。

調べたいこと

  • そもそもFirebaseを使ったUnityプロジェクトはライブラリ化+SceneをViewとして利用可能かどうか
  • Firebase RealtimeDatabaseじゃなくてFirestoreなら動くかどうか

参考資料

同様のエラー自体はSDK 6.15.xの時にも報告されているものの、6.16の時に修正された模様。
https://github.com/firebase/quickstart-unity/issues/801

ちなみに7.0.2でも同様のissueが立っている
https://github.com/firebase/quickstart-unity/issues/949

yamacraftyamacraft

UnityのプロジェクトをAndroidのライブラリとして出力して組み込むまで

まず調査の前提知識として、UnityのプロジェクトをAndroidのライブラリとして出力して組み込むまでの方法を簡単に紹介します。

Build SettingsでAndroidソースコード出力を行うように設定する

Build SettingsでプラットフォームをAndroidにして、Texture CompressionをETC(GLES 3.0)にしてExport Projectにチェックを入れる。Unityのバージョンが古いとExport Projectの項目の代わりに出力方法を選択する項目があるので、Gradleを選択する。

Build Settingsの設定

Player Settingsも一部変更する。

Player Settingsの設定

Other SettingsでpackageNameやminApiVersionなどが設定できる。
Api Compatibility Levelをいちおう.NET 4.xにする。

設定が完了したらExportで出力先を選べば、Androidのソースコードで出力される。

Exportの出力結果

Android Studioで読み込む

出力されたプロジェクトをAndroid Studioで読み込む。
Android SDKの使用先を聞かれるので、特に理由がなければUse Android Studio's SDKを選ぶ。

これでgradleなどのビルド用のファイルなどをAndroid Studioが補完してくれる。

Android Studioで読み込んだ結果

ライブラリ用にコードを修正して出力

(WIP)

Androidプロジェクトに組み込む

(WIP)