Unity Firebase中的初始化异常

10

我在我的Unity项目中遇到了Firebase的问题。Firebase SDK已经导入到项目中,并且构建过程中没有出现任何错误。

使用keytool生成了SHA-1密钥,并添加到Firebase控制台中的项目中。

google-services.json也被添加到了Assets文件夹中。

这是一个简单的初始化Firebase的脚本:

DependencyStatus dependencyStatus = DependencyStatus.UnavailableOther;
// Use this for initialization
void Start () 
{
    Debug.Log ("Start FireBase");
    dependencyStatus = FirebaseApp.CheckDependencies();

    if (dependencyStatus != DependencyStatus.Available) 
    {
        FirebaseApp.FixDependenciesAsync().ContinueWith(task => 
        {
            dependencyStatus = FirebaseApp.CheckDependencies();
            if (dependencyStatus == DependencyStatus.Available) 
            {
                InitializeFirebase();
            } 
            else 
            {
                Debug.LogError("Could not resolve all Firebase dependencies: " + dependencyStatus);
            }
        });
    } 
    else 
    {
        InitializeFirebase();
    }
}

void InitializeFirebase() 
{
    FirebaseAnalytic.Instance().setAnalyticsCollectionEnabled(true);
    FirebaseAnalytic.Instance().setUserProperty(FirebaseAnalytics.UserPropertySignUpMethod, "Google");
    FirebaseAnalytic.Instance().setUserId(SystemInfo.deviceUniqueIdentifier);
    FirebaseAnalytic.Instance().logEvent("LogIn", FirebaseAnalytics.EventLogin);
    Debug.Log ("FirebaseAnalytics Logined");
}

应用程序可以构建和运行而不崩溃。但是通过 adb logcat -s Unity 命令,我可以看到以下内容:

I/Unity   (27030): Start FireBase

I/Unity   (27030): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
I/Unity   (27030):

I/Unity   (27030): Firebase App initializing app com.boldstatementproductions.mcpro (default 1).

I/Unity   (27030): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)
I/Unity   (27030):

W/Unity   (27030): Callback module already shut down

W/Unity   (27030): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)

E/Unity   (27030): java_app

E/Unity   (27030): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)

I/Unity   (27030): Firebase App initializing app com.boldstatementproductions.mcpro (default 1).

I/Unity   (27030): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)

W/Unity   (27030): Callback module already shut down

W/Unity   (27030): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)

E/Unity   (27030): java_app

E/Unity   (27030): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)

I/Unity   (27030): InitializationException: Failed to initialize the default Firebase App.

I/Unity   (27030):   at Firebase.FirebaseApp.CreateAndTrack (Firebase.CreateDelegate createDelegate) [0x00000] in <filename unknown>:0

I/Unity   (27030):   at Firebase.FirebaseApp.Create () [0x00000] in <filename unknown>:0

I/Unity   (27030):   at Firebase.FirebaseApp.get_DefaultInstance () [0x00000] in <filename unknown>:0

I/Unity   (27030):   at Firebase.Analytics.FirebaseAnalytics..cctor () [0x00000] in <filename unknown>:0

I/Unity   (27030): Rethrow as TypeInitializationException: An exception was thrown by the type initializer for Firebase.Analytics.FirebaseAnalytics

I/Unity   (27030):   at FirebaseDependencyResolver.InitializeFirebase () [0x00000] in <filename unknown>:0

I/Unity   (27030):   at FirebaseDependencyResolver.Start () [0x00000] in <filename unknown>:0

I/Unity   (27030): (Filename:  Line: -1)

我在谷歌上搜索这些信息,但并没有得到太多帮助。我已经按照Unity Firebase设置教程一步一步进行了操作,但这个错误已经困扰我一个星期了!


1
你是在开发iOS还是Android? - adbitx
1
我们在生产环境中也收到了成千上万个类似的错误报告... 在安卓设备上。 - pertz
1
@adbitx适用于Android。问题包含来自adb(Android调试桥)的日志,这些日志在应用程序非常启动时就已经存在。 - D. Rudenko
1
Firebase工程师在此。您能否发布完整的日志?如果您能通过我们的支持门户网站https://firebase.google.com/support/分享一个演示问题的项目,那就更好了。我一直在尝试复制这个问题(破坏捆绑ID、删除配置文件、删除随机的Android AAR),但并没有复制成功。 - stewartmiles
1
@stewartmiles 其实这只是一条日志。我已经向支持团队报告了这个问题。不幸的是,我不能分享项目。我会尝试将其放入测试项目中,但情况可能会有所不同。 - D. Rudenko
显示剩余3条评论
4个回答

6

因此,在第1245321653214次尝试重新导入Firebase并以任何方式解决此问题后,我们发现之前的其他插件Admob覆盖了Firebase使用的一些库。

我们删除了Firebase和Admob可能使用的所有aar和jar,首先重新导入Firebase,然后有选择地导入Admob。 主要原则是不允许Admob覆盖Firebase使用的任何文件,例如“play-services-blah-blah.aar”。

本文的主要建议是不要急于导入插件:导入一个,配置,构建,检查是否工作(10次),提交,再导入第二个,以此类推...这样,您就可以清楚地看到第三方之间是否存在冲突。

如果您已经陷入困境,最好删除所有第三方并从头开始。

因此,请非常小心与下图中类似的文件。

Be VEEERY careful with files similar to those

希望这可以帮助人们避免我们遇到的问题。


2

我遇到了与上面评论中描述的相同问题。

我有一个完全可用的Unity 2018.3.8f1和Firebase 5.4.4的项目。将Unity升级到2019.2.6f1时,不得不同时升级Firebase。我升级时没有遇到太多问题,但是之后出现了相同的错误。尝试了这里提供的所有解决方案,但是没有任何结果。我认为这可能是由于其他插件之间的冲突引起的,但是无法确定是哪些插件。(而且Firebase是最后一个安装的,所以我希望它能覆盖掉其他任何问题)

我只安装了这些模块:FirebaseAuth、FirebaseMessaging、FirebaseRemoteConfig和FirebaseAnalytics。

然后我安装了FirebaseCrashlytics模块,问题得到了解决。


这是最好的答案,而不是删除您添加的所有文件。谢谢。 - Lasitha Lakmal

0
也许我的反馈也能帮到你,我曾经遇到过同样的错误(导致 Firebase 远程配置无法正常工作),直到我发现我在同一帧中使用异步调用初始化了 Firebase Analytics 和 Remote Config,这似乎是问题所在。
一旦我将两个初始化都替换为同步版本:
DependencyStatus dependencyStatus = FirebaseApp.CheckDependencies();
    if (dependencyStatus == DependencyStatus.Available)
        InitializeFirebase();
    else Debug.LogError("Remote Config Could not resolve all Firebase dependencies: " + dependencyStatus);

一切都正常运行...


0
已解决 - 在Unity中初始化时,我遇到了相同的错误。这里的关键区别是,我正在使用自己的gradle进行构建(mainTemplate.gradle),而Plugins/Android/Firebase/res/values.xml中的值未与最终的values.xml合并。
解决方案: 编辑我的gradle以将Firebase/res文件夹也包含在res文件夹中 - 在android块下的mainTemplate.gradle中添加以下行:
    sourceSets {
        main {
                res.srcDirs += 'Firebase/res'
        }
}

调试步骤: 1. 确认Plugins文件夹中的google-services.xml文件是否存在 2. 构建后,确认Unity项目中Temp/文件夹中的值 3. 发现Temp/Firebase文件夹中的值不在主生成的values.xml文件中 4. 在mainTemplate.gradle文件中添加一行以包含Firebase/res文件夹

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接