Почему FirebaseApp не инициализируется?
Всем привет! Встраиваю FirebaseDatabase в свой Unity проект. В редакторе все работает исправно, но когда запускаю на android - выдает ошибку "The type initializer for 'Firebase.FirebaseApp' threw ап exception."
Ошибка возникает на этой строке:
databaseReference = FirebaseDatabase.DefaultInstance.RootReference;
В методе Awake добавлял фрагмент когда из документации для начала работы с Firebase:
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
var dependencyStatus = task.Result;
if (dependencyStatus == Firebase.DependencyStatus.Available)
{
// Create and hold a reference to your FirebaseApp,
// where app is a Firebase.FirebaseApp property of your application class.
app = Firebase.FirebaseApp.DefaultInstance;
FirebaseDatabase.GetInstance(app);
// Set a flag here to indicate whether Firebase is ready to use by your app.
}
else
{
UnityEngine.Debug.LogError(System.String.Format(
"Could not resolve all Firebase dependencies: {0}", dependencyStatus));
_text.text = $"Could not resolve all Firebase dependencies: {dependencyStatus}";
// Firebase Unity SDK is not safe to use here.
}
});
В поисках решения натыкался на предложение включить "Custom Main Gradle Template" в Player/Publishing Settings. После включения появляется в консоли ошибка:
Resolution Failed.
Resolution failed because EDM4U could not enable Jetifier in Unity 2022,3 without Custom Gradle Properties Template. Please enable 'Custom Gradle Properties Template' found under 'Player Settings > Settings for Android -> Publishing Settings' menu. Due to changes in Gradle project generated by Unity 2019.3 and above, our recommended way of enabling Jetifier is by injecting properties to Assets/Plugins/Android/gradleTemplate.properties.
If you like to patch this yourself, simply disable 'Patch gradleTemplate.properties' in Android Resolver settings.
UnityEngine.Debug:LogError (object)
Google.Logger:Log (string,Google.LogLevel) (at /Users/chkuang/Workspace/git/unity-jar-resolver/source/VersionHandlerImpl/src/Logger.cs:136)
GooglePlayServices.PlayServicesResolver:Log (string,Google.LogLevel) (at /Users/chkuang/Workspace/git/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:1076)
GooglePlayServices.PlayServicesResolver/<ResolveUnsafe>c__AnonStorey25:<>m__47 (bool,string) (at /Users/chkuang/Workspace/git/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:1946)
GooglePlayServices.PlayServicesResolver/<ResolveUnsafe>c__AnonStorey25:<>m__4A () (at /Users/chkuang/Workspace/git/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:2011)
Google.RunOnMainThread:ExecuteNext () (at /Users/chkuang/Workspace/git/unity-jar-resolver/source/VersionHandlerImpl/src/RunOnMainThread.cs:486)
Google.RunOnMainThread:<ExecuteAllUnnested>m__12 () (at /Users/chkuang/Workspace/git/unity-jar-resolver/source/VersionHandlerImpl/src/RunOnMainThread.cs:536)
Google.RunOnMainThread:RunAction (System.Action) (at /Users/chkuang/Workspace/git/unity-jar-resolver/source/VersionHandlerImpl/src/RunOnMainThread.cs:343)
Google.RunOnMainThread:ExecuteAllUnnested (bool) (at /Users/chkuang/Workspace/git/unity-jar-resolver/source/VersionHandlerImpl/src/RunOnMainThread.cs:530)
Google.RunOnMainThread:ExecuteAll () (at /Users/chkuang/Workspace/git/unity-jar-resolver/source/VersionHandlerImpl/src/RunOnMainThread.cs:512)
UnityEditor.EditorApplication:Internal_CallUpdateFunctions ()
Сам билд завершается ошибкой "Could not resolve all files for configuration ':launcher:releaseRuntimeClasspath'. See the Console for details.".
Ошибка в консоли:
FAILURE: Build completed with 2 failures.
1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':launcher:checkReleaseDuplicateClasses'.
> Could not resolve all files for configuration ':launcher:releaseRuntimeClasspath'.
> Could not find com.google.firebase:firebase-app-unity:11.6.0.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-app-unity/11.6.0/firebase-app-unity-11.6.0.pom
- https://repo.maven.apache.org/maven2/com/google/firebase/firebase-app-unity/11.6.0/firebase-app-unity-11.6.0.pom
- file:/C:/Unity Projects/Caviste/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/libs/firebase-app-unity-11.6.0.jar
- file:/C:/Unity Projects/Caviste/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/libs/firebase-app-unity.jar
Required by:
project :launcher > project :unityLibrary
> Could not find com.google.firebase:firebase-auth-unity:11.6.0.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-auth-unity/11.6.0/firebase-auth-unity-11.6.0.pom
- https://repo.maven.apache.org/maven2/com/google/firebase/firebase-auth-unity/11.6.0/firebase-auth-unity-11.6.0.pom
- file:/C:/Unity Projects/Caviste/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/libs/firebase-auth-unity-11.6.0.jar
- file:/C:/Unity Projects/Caviste/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/libs/firebase-auth-unity.jar
Required by:
project :launcher > project :unityLibrary
> Could not find com.google.firebase:firebase-database-unity:11.6.0.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-database-unity/11.6.0/firebase-database-unity-11.6.0.pom
- https://repo.maven.apache.org/maven2/com/google/firebase/firebase-database-unity/11.6.0/firebase-database-unity-11.6.0.pom
- file:/C:/Unity Projects/Caviste/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/libs/firebase-database-unity-11.6.0.jar
- file:/C:/Unity Projects/Caviste/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/libs/firebase-database-unity.jar
Required by:
project :launcher > project :unityLibrary
* 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.
==============================================================================
2: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':unityLibrary:generateReleaseRFile'.
> Configuration `releaseRuntimeClasspath` contains AndroidX dependencies, but the `android.useAndroidX` property is not enabled, which may cause runtime issues.
Set `android.useAndroidX=true` in the `gradle.properties` file and retry.
The following AndroidX dependencies are detected:
releaseRuntimeClasspath -> com.google.firebase:firebase-auth:22.1.2 -> androidx.collection:collection:1.1.0
releaseRuntimeClasspath -> com.google.firebase:firebase-database:20.2.2 -> androidx.annotation:annotation:1.5.0
releaseRuntimeClasspath -> com.google.android.gms:play-services-base:18.2.0 -> androidx.core:core:1.2.0
releaseRuntimeClasspath -> com.google.android.gms:play-services-base:18.2.0 -> androidx.core:core:1.2.0 -> androidx.lifecycle:lifecycle-runtime:2.0.0
releaseRuntimeClasspath -> com.google.android.gms:play-services-base:18.2.0 -> androidx.core:core:1.2.0 -> androidx.lifecycle:lifecycle-runtime:2.0.0 -> androidx.lifecycle:lifecycle-common:2.0.0
releaseRuntimeClasspath -> com.google.android.gms:play-services-base:18.2.0 -> androidx.core:core:1.2.0 -> androidx.lifecycle:lifecycle-runtime:2.0.0 -> androidx.arch.core:core-common:2.0.0
releaseRuntimeClasspath -> com.google.android.gms:play-services-base:18.2.0 -> androidx.core:core:1.2.0 -> androidx.versionedparcelable:versionedparcelable:1.1.0
releaseRuntimeClasspath -> com.google.firebase:firebase-auth:22.1.2 -> androidx.fragment:fragment:1.0.0
releaseRuntimeClasspath -> com.google.firebase:firebase-auth:22.1.2 -> androidx.fragment:fragment:1.0.0 -> androidx.legacy:legacy-support-core-ui:1.0.0
releaseRuntimeClasspath -> com.google.firebase:firebase-analytics:21.3.0 -> com.google.android.gms:play-services-measurement:21.3.0 -> androidx.legacy:legacy-support-core-utils:1.0.0
releaseRuntimeClasspath -> com.google.firebase:firebase-analytics:21.3.0 -> com.google.android.gms:play-services-measurement:21.3.0 -> androidx.legacy:legacy-support-core-utils:1.0.0 -> androidx.documentfile:documentfile:1.0.0
releaseRuntimeClasspath -> com.google.firebase:firebase-auth:22.1.2 -> androidx.fragment:fragment:1.0.0 -> androidx.loader:loader:1.0.0
releaseRuntimeClasspath -> com.google.firebase:firebase-auth:22.1.2 -> androidx.fragment:fragment:1.0.0 -> androidx.loader:loader:1.0.0 -> androidx.lifecycle:lifecycle-livedata:2.0.0
releaseRuntimeClasspath -> com.google.firebase:firebase-auth:22.1.2 -> androidx.fragment:fragment:1.0.0 -> androidx.loader:loader:1.0.0 -> androidx.lifecycle:lifecycle-livedata:2.0.0 -> androidx.arch.core:core-runtime:2.0.0
releaseRuntimeClasspath -> com.google.firebase:firebase-auth:22.1.2 -> androidx.fragment:fragment:1.0.0 -> androidx.loader:loader:1.0.0 -> androidx.lifecycle:lifecycle-livedata:2.0.0 -> androidx.lifecycle:lifecycle-livedata-core:2.0.0
releaseRuntimeClasspath -> com.google.firebase:firebase-auth:22.1.2 -> androidx.fragment:fragment:1.0.0 -> androidx.lifecycle:lifecycle-viewmodel:2.0.0
releaseRuntimeClasspath -> com.google.firebase:firebase-auth:22.1.2 -> androidx.localbroadcastmanager:localbroadcastmanager:1.0.0
releaseRuntimeClasspath -> com.google.firebase:firebase-analytics:21.3.0 -> com.google.android.gms:play-services-measurement:21.3.0 -> androidx.legacy:legacy-support-core-utils:1.0.0 -> androidx.print:print:1.0.0
releaseRuntimeClasspath -> com.google.firebase:firebase-auth:22.1.2 -> androidx.fragment:fragment:1.0.0 -> androidx.legacy:legacy-support-core-ui:1.0.0 -> androidx.customview:customview:1.0.0
releaseRuntimeClasspath -> com.google.firebase:firebase-auth:22.1.2 -> androidx.fragment:fragment:1.0.0 -> androidx.legacy:legacy-support-core-ui:1.0.0 -> androidx.viewpager:viewpager:1.0.0
releaseRuntimeClasspath -> com.google.firebase:firebase-auth:22.1.2 -> androidx.fragment:fragment:1.0.0 -> androidx.legacy:legacy-support-core-ui:1.0.0 -> androidx.coordinatorlayout:coordinatorlayout:1.0.0
releaseRuntimeClasspath -> com.google.firebase:firebase-auth:22.1.2 -> androidx.fragment:fragment:1.0.0 -> androidx.legacy:legacy-support-core-ui:1.0.0 -> androidx.drawerlayout:drawerlayout:1.0.0
releaseRuntimeClasspath -> com.google.firebase:firebase-auth:22.1.2 -> androidx.fragment:fragment:1.0.0 -> androidx.legacy:legacy-support-core-ui:1.0.0 -> androidx.slidingpanelayout:slidingpanelayout:1.0.0
releaseRuntimeClasspath -> com.google.firebase:firebase-auth:22.1.2 -> androidx.browser:browser:1.4.0 -> androidx.interpolator:interpolator:1.0.0
releaseRuntimeClasspath -> com.google.firebase:firebase-auth:22.1.2 -> androidx.fragment:fragment:1.0.0 -> androidx.legacy:legacy-support-core-ui:1.0.0 -> androidx.swiperefreshlayout:swiperefreshlayout:1.0.0
releaseRuntimeClasspath -> com.google.firebase:firebase-auth:22.1.2 -> androidx.fragment:fragment:1.0.0 -> androidx.legacy:legacy-support-core-ui:1.0.0 -> androidx.asynclayoutinflater:asynclayoutinflater:1.0.0
releaseRuntimeClasspath -> com.google.firebase:firebase-auth:22.1.2 -> androidx.fragment:fragment:1.0.0 -> androidx.legacy:legacy-support-core-ui:1.0.0 -> androidx.cursoradapter:cursoradapter:1.0.0
releaseRuntimeClasspath -> com.google.firebase:firebase-common:20.3.3 -> androidx.concurrent:concurrent-futures:1.1.0
releaseRuntimeClasspath -> com.google.firebase:firebase-auth:22.1.2 -> androidx.browser:browser:1.4.0
* 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.
==============================================================================
В чем может быть проблема и как её можно решить?
Ответы (1 шт):
Чтобы правильно обнаружить проблему, лучше использовать android logcat (например в Android Studio), указав в фильтре пакет игры (package name). После этого можно искать уже какое-то решение проблемы.
Мне подошел вариант с принудительным разрешением в android resolve. Для этого нужно поставить галочку на Custom Gradle Settings Template в разделе Publishing Settings (внутри Player Settings). После этого выбрать Force Resolve в Assets/External Dependency Manager/Android Resolve