从 Fabric 迁移到 FirebaseCrashlytics 测试失败后

After migration from Fabric to FirebaseCrashlytics tests failing

最近我们尝试从 Fabric.io 迁移到 FirebaseCrashlytics。按照文档 https://firebase.google.com/docs/crashlytics/upgrade-sdk?platform=android

中描述的步骤操作
  1. 已更新 google-service.json 个文件
  2. 用 Firebase Crashlytics 替换了 fabric.io 依赖项
  3. 更新代码并仅在使用 setCrashlyticsCollectionEnabled(!BuildConfig.DEBUG)
  4. 构建产品时启用收集
  5. 更新了 proguard 规则

在那之后,我们尝试 运行 我们的测试套件,当我们注意到它花费的时间比平时长得多并且最终失败,许多测试报告 OutOfMemoryError。这组测试 运行 与 Fabric 依赖关系很好。 有人遇到过或 运行 遇到过类似的问题吗?

文档说 Fabric Crashlytics SDK 使用 ContentProvider 来初始化自己。所以在您的应用程序代码中调用 setCrashlyticsCollectionEnabled 函数为时已晚。

Fabric's API key is no longer used by the new SDK. Instead, Crashlytics now uses your app’s google-services.json file to associate your app with your Firebase project and retain your historic crash data. If you have an io.fabric.ApiKey declared in your AndroidManifest.xml file, remove it.

If you want to disable automatic crash reporting and enable it only for select users, use the Android meta-data tag in your AndroidManifest.xml file. Then, you can enable crash reporting using the new setCrashlyticsCollectionEnabled instance method.

https://firebase.google.com/docs/crashlytics/upgrade-sdk?platform=android#firebaseno_longer_works_with_the_fabric_sdk

因此您需要在清单中禁用数据收集。为此,您需要将 firebase_crashlytics_collection_enabled 元标记添加到您的清单中。

<meta-data
    android:name="firebase_crashlytics_collection_enabled"
    android:value="false" />

https://github.com/firebase/firebase-android-sdk/blob/5440af41f0d15ff1358038dc31fcd1d4eac0a89c/firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/common/DataCollectionArbiter.java#L74

您可能希望将构建变量注入清单文件,因为您只想在测试构建中禁用 Crashlytics。请参阅下面的 link。 https://developer.android.com/studio/build/manifest-build-variables.html

好的,我确实有这方面的最新消息。我们刚刚将库更新到最近发布的最新版本,问题看起来已得到解决

  • com.google.firebase:firebase-crashlytics-gradle:2.2.0 而不是 2.1.0
  • com.google.firebase:firebase-crashlytics:17.1.0 而不是 17.0.0

哪篇原创文章发表于