web-dev-qa-db-ja.com

ファブリックからFirebaseCrashlyticsへの移行後、テストが失敗する

最近、Fabric.ioからFirebaseCrashlyticsへの移行を試みました。ドキュメントに記載されている次の手順 https://firebase.google.com/docs/crashlytics/upgrade-sdk?platform=Android

  1. Google-service.jsonファイルを更新
  2. Fabric.ioの依存関係をFirebase Crashlyticsに置き換えました
  3. コードが更新され、コレクションがsetCrashlyticsCollectionEnabled(!BuildConfig.DEBUG)でビルドされた場合にのみコレクションが有効になりました
  4. プロガードルールの更新

その後、通常よりも時間がかかっていることに気付いたときにテストスイートを実行しようとしましたが、最終的にはOutOfMemoryErrorを報告する多くのテストで失敗しました。この一連のテストは、Fabricの依存関係で問題なく実行されます。誰かが同様の問題を抱えていたり、それに遭遇したりしていますか?

3
peter_budo

はい、更新しました。最近公開された最新バージョンにライブラリを更新しました。問題はソートされているようです

  • com.google.firebase:firebase-crashlytics-gradle:2.2.0 2.1.0の代わり
  • com.google.firebase:firebase-crashlytics:17.1.0 17.0.0の代わり

元の記事が掲載された

0
peter_budo

ドキュメントによると、Fabric Crashlytics SDKはContentProviderを使用して自身を初期化しています。そのため、アプリケーションコードでsetCrashlyticsCollectionEnabled関数を呼び出すのは遅すぎます。

新しいSDKでは、FabricのAPIキーは使用されなくなりました。代わりに、Crashlyticsはアプリのgoogle-services.jsonファイルを使用してアプリをFirebaseプロジェクトに関連付け、過去のクラッシュデータを保持するようになりました。 AndroidManifest.xmlファイルでio.fabric.ApiKeyが宣言されている場合は、それを削除します。

自動クラッシュレポートを無効にして、一部のユーザーに対してのみ有効にする場合は、AndroidManifest.xmlファイルでAndroid meta-dataタグを使用します。次に、新しい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

2
MertNYuksel