问题
我正在获取有关Firebase分析的数据,但无法使crashlytics报告任何内容。我卡在这个...
重现步骤:
添加Firebase Analytics和crashlytics SDK。
将google-services.json GoogleService-Info.plist文件添加到资产文件夹中的某处
添加此代码以初始化firebase
// Use this for initialization
void Start ()
{
// Initialize 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.
// Crashlytics will use the DefaultInstance, as well;
// this ensures that Crashlytics is initialized.
Firebase.FirebaseApp app = Firebase.FirebaseApp.DefaultInstance;
// Set a flag here for indicating that your project is ready to use Firebase.
VisualDebugger.SetText("crashlytics initialised");
}
else
{
UnityEngine.Debug.LogError(System.String.Format(
"Could not resolve all Firebase dependencies: {0}",dependencyStatus));
VisualDebugger.SetText("crashlytics NOT initialised: " + dependencyStatus);
// Firebase Unity SDK is not safe to use here.
}
});
Invoke("IsCrashEnabled", 5f);
}
void IsCrashEnabled()
{
VisualDebugger.AddLine("IsCrashlyticsCollectionEnabled: "+Firebase.Crashlytics.Crashlytics.IsCrashlyticsCollectionEnabled);
}
为了使该应用程序在安装了Facebook sdk的情况下运行,Ive在Proguard-user.txt中添加了这两行
-keep public class com.facebook.**{public *; }
-keep public class com.facebook.internal.**{ public *; }
并从mainTemplate.gradle中注释掉以下几行
//implementation 'com.android.support:appcompat-v7:25.3.1' // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency
//implementation 'com.android.support:customtabs:25.3.1' // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency
//implementation 'com.android.support:support-v4:25.3.1' // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency
当我运行该应用程序时,firebase已成功初始化。Firebase.Crashlytics.Crashlytics.IsCrashlyticsCollectionEnabled也会返回true。
我以多种不同的方式使应用程序崩溃,然后再次打开它而无需重新安装。但没有发送崩溃报告。
当我在启动应用程序时观看logcat时,每次打开应用程序时,我都会从firebase中看到此错误
2020-09-28 16:18:59.332 25773-25847/? E/FirebaseCrashlytics: Failed to retrieve settings from https://firebase-settings.crashlytics.com/spi/v2/platforms/android/gmp/REDACTEDblahblahblah/settings
2020年10月19日更新:
今天,开发人员更新了我在此答案中链接的问题,称Firebase团队在上周五(10月16日)修复了一个后端错误,该错误影响了一些使用Firebase注册的新Unity Android应用程序-可能是问题背后的错误。我已经使用下面的解决方案在自己的项目中解决了该问题,但是,如果您尚未更新项目,建议再次运行它,看看Crashlytics是否正在为您工作。
我本周在Unity 2019.4.11f1中一直处理相同的问题-我看到相同的错误消息,关于无法检索设置,但URL中包含我的特定项目和appIds。
我在这个Github问题中找到了解决方案,这表明问题是由与Unity Firebase Crashlytics软件包相关的android库版本引起的。我的粗略理解是,该firebase-crashlytics-unity
库是android库的包装firebase:firebase-crashlytics
,而unity包允许从Unity使用底层的本机Android代码。版本com.google.firebase:firebase-crashlytics:17.10.0
在获取Android上某些Firebase项目的设置时遇到问题。我和跟随此问题的其他几个人发现,迫使Unity使用版本17.1.1的特定依赖关系解决了该问题。
线程中存在相同问题的其他人联系了Firebase支持并被告知:
您看到的“无法检索设置”错误与所使用的SDK版本有关。如果转到“资产> Firebase>编辑器> CrashlyticsDependencies”,则可以手动更新SDK,使其指向最新的Crashlytics SDK版本17.2.2。请尝试一下,如果您仍然遇到问题,请告诉我们。
事实证明,此建议并不完全正确-我们中的一些关注该线程,然后在将Android Crashlytics SDK版本17.2.2与Unity crashlytics版本6.16.0结合使用时遇到了另一个问题。因此,我特别建议您在线程中尝试以下建议或其他解决方案,以将您的Android crashlytics库设置为v17.1.1。
我在项目中为解决此问题而进行的更改:
Crashlytics-Dependencies.xml
(通过搜索项目找到的/Library/PackageCache/[email protected]/Firebase/Editor/
)对我而言。该文件最初列出了“ com.google.firebase:firebase-crashlytics:17.0.0”,我将其更新为:“ com.google.firebase:firebase-crashlytics:17.1.1”。MyProject-Dependencies.xml
文件,该文件还指定了版本“ com.google.firebase:firebase-crashlytics:17.1.1”。mainTemplate.gradle
文件指定依赖关系,而不是使用外部依赖关系解析器来管理和嵌入统一包(“构建设置”>“ PlayerSettings”>“ Android”中的选项)。AndroidPackageInstallationEnabled
-这使解析过程更快,并.aar
从android依赖项列表中删除了一堆文件,并且在我的项目中没有引起任何问题。mainTemplate.gradle
文件中-检查此文件(在Assets / Plugins / Android中),您应该现在com.google.firebase:firebase-crashlytics:17.1.1
在该列表中看到。另外,我建议阅读Firebase开发人员倡导者之一Patrick Martin撰写的有关管理Unity Firebase依赖项的文章。它帮助我全神贯注于Unity中Android依赖项管理的工作方式以及Android gradle构建过程的工作方式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句