【WIP】Firebaseを使ったUnityプロジェクトをAndroidプロジェクトに組み込んで使おうとするとDllNotFoundExceptionが発生する件の調査
未解決のまま終わる可能性があります
はじめに
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ライブラリ化に関する参考資料
-
UnityのSceneをAndroidのSubView(FrameLayout)として埋め込むまで - Qiita
- 記事内の参考文献も参照
- Unity をライブラリ化して Android で使う - Qiita
やりたいこと
Firebaseを使ったUnityプロジェクトをライブラリ化しつつ、SceneをViewとして利用する。
調べたいこと
- そもそもFirebaseを使ったUnityプロジェクトはライブラリ化+SceneをViewとして利用可能かどうか
- Firebase RealtimeDatabaseじゃなくてFirestoreなら動くかどうか
参考資料
同様のエラー自体はSDK 6.15.xの時にも報告されているものの、6.16の時に修正された模様。
ちなみに7.0.2でも同様のissueが立っている
UnityのプロジェクトをAndroidのライブラリとして出力して組み込むまで
まず調査の前提知識として、UnityのプロジェクトをAndroidのライブラリとして出力して組み込むまでの方法を簡単に紹介します。
Build SettingsでAndroidソースコード出力を行うように設定する
Build SettingsでプラットフォームをAndroidにして、Texture CompressionをETC(GLES 3.0)にしてExport Projectにチェックを入れる。Unityのバージョンが古いとExport Projectの項目の代わりに出力方法を選択する項目があるので、Gradleを選択する。
Player Settingsも一部変更する。
Other SettingsでpackageNameやminApiVersionなどが設定できる。
Api Compatibility Levelをいちおう.NET 4.xにする。
設定が完了したらExportで出力先を選べば、Androidのソースコードで出力される。
Android Studioで読み込む
出力されたプロジェクトをAndroid Studioで読み込む。
Android SDKの使用先を聞かれるので、特に理由がなければUse Android Studio's SDKを選ぶ。
これでgradleなどのビルド用のファイルなどをAndroid Studioが補完してくれる。
ライブラリ用にコードを修正して出力
(WIP)
Androidプロジェクトに組み込む
(WIP)