我的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)
用Google搜索任何这些消息都没有多大帮助。我错过了什么? 我一步一步地遵循了针对Unity的Firebase安装教程。这个错误让我害怕了一个星期!
答案 0 :(得分:3)
因此,在1245321653214尝试重新导入Firebase并解决此问题后,无论如何我们发现之前的另一个插件Admob覆盖了Firebase使用的一些库。
我们删除了Firebase和Admob可能使用的所有aars和jar,首先重新导入Firebase,然后选择性地重新导入Admob。 主要规则不允许Admob覆盖Firebase使用的任何文件,例如&#34; play-services-blah-blah.aar&#34;。
这篇文章中的主要建议是不要急于导入插件:导入一个,配置,构建,检查它是否有效(10次),提交,导入秒等等。这样你&#39 ;清楚地看看第三方是否在他们之间有混淆。
如果你已经陷入困境,你最好删除所有第三方并从头开始。
因此,请小心使用与下图中类似的文件。
希望这可以帮助人们预防我们遇到的问题。
答案 1 :(得分:0)
也许我的反馈意见也可以为您提供帮助,我在年龄上也遇到了同样的错误(这使Firebase Remote Config无法正常工作),直到我发现我使用异步调用在同一帧上初始化了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);
一切正常...
答案 2 :(得分: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中添加了一行以包含Firebaes / res
答案 3 :(得分:0)
我遇到的问题与上述评论相同。
拥有一个完全正常运行的项目,其统一版本为2018.3,8f1和firebase 5.4.4。将unity升级到2019.2.6f1,这迫使我也升级了firebase。我升级时没有太多问题,但是随后出现了同样的错误。在这里尝试了所有解决方案,但没有结果。我认为这也是由于与其他插件存在一些冲突,但无法弄清楚哪个插件。 (firebase也是最后安装的版本,因此我希望它会覆盖其他所有问题)
我只安装了以下模块:FirebaseAuth,FirebaseMessaging,FirebaseRemoteConfig,FirebaseAnalytics。
然后我安装了FirebaseCrashlytics模块,它解决了我的问题。