从Fabric迁移到FirebaseCrashlytics后测试失败

时间:2020-05-21 10:22:46

标签: android crashlytics-android fabric.io

最近,我们尝试从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. 更新的保护者规则

在那之后,当我们发现测试套件花费的时间比平时长得多时,我们尝试运行我们的测试套件,最后它失败了,并且许多测试报告了OutOfMemoryError。这组测试可以很好地与Fabric依赖项一起运行。 是否有人遇到过类似问题?

2 个答案:

答案 0 :(得分:2)

文档显示Fabric Crashlytics SDK使用ContentProvider对其进行初始化。因此,在应用程序代码中调用setCrashlyticsCollectionEnabled函数为时已晚。

新的SDK不再使用

Fabric的API密钥。相反,Crashlytics现在使用您应用的google-services.json文件将您的应用与Firebase项目相关联,并保留您的历史崩溃数据。如果您在AndroidManifest.xml文件中声明了io.fabric.ApiKey,请将其删除。

如果您要禁用自动崩溃报告并仅启用它 对于特定用户,请在您的网站中使用Android元数据标签 AndroidManifest.xml文件。然后,您可以使用以下方式启用崩溃报告 新的setCrashlyticsCollectionEnabled实例方法。

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。请参阅下面的链接。 https://developer.android.com/studio/build/manifest-build-variables.html

答案 1 :(得分:0)

好的,我对此有更新。我们刚刚将库更新为最新发布的最新版本,问题似乎需要解决

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

发表原始文章的地方