Androidアプリを開発しており、firebaseとfirebase cracklyticsSDKを統合しました。
ユーザーがクラッシュレポートを無効にできるようにしたいので(GDPRへの準拠を確認するため-クラッシュレポートはGDPRに関連していると思います)、ユーザーがアプリの設定でクラッシュレポートを無効にできる方法が必要です。
https://firebase.google.com/docs/crash/disable-sdk でドキュメントを見つけましたが、試してみると次のようになります。
FirebaseCrash.setCrashCollectionEnabled(true);
AndroidStudioでエラーが発生しますcannot resolve symbol 'FirebaseCrash'
これは、アプリの実行時にプログラムで実行する必要があります。
実行時にCrashlyticsを無効にする
_// Set up Crashlytics, disabled for debug builds
Crashlytics crashlyticsKit = new Crashlytics.Builder()
.core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
.build();
Fabric.with(this, crashlyticsKit);
_
Ex
_@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set up Crashlytics, disabled for debug builds
Crashlytics crashlyticsKit = new Crashlytics.Builder()
.core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
.build();
Fabric.with(this, crashlyticsKit);
setContentView(R.layout.activity_main);
}
_
もっと
_boolean Agrees = value;
if(Agrees)
{
Fabric.with(this,new Crashlytics());
}
else
{
CrashlyticsCore core = new CrashlyticsCore.Builder().disabled(true).build();
Fabric.with(this, new Crashlytics.Builder().core(core).build());
throw new RuntimeException("why doesn't this show up in Firebase Crashlytics?");
}
_
編集2
参照: Firebaseを使用したFabricのCrashlyticsはDEBUGビルドでは無効にできません
Firebase Crashlyticsのドキュメント は、アプリセッションでレポートを有効にすると、無効にできないことを説明しています。
デフォルトでは、Crashlyticsレポートは、ContentProvider
インスタンスが作成される前に実行されるCrashlyticsInitProviderという名前のApplication
で有効になっています。 CrashlyticsInitProviderは、メタデータ値_firebase_crashlytics_collection_enabled
_に基づいてレポートを有効または無効にします。これはデフォルトでtrueです。
レポートを無効にする場合は、マニフェストメタデータが存在し、falseに設定されていることが重要です。
_<meta-data
Android:name="firebase_crashlytics_collection_enabled"
Android:value="false" />
_
アプリの初期化中にlogcatで次のメッセージを確認してください。
_CrashlyticsInitProvider: CrashlyticsInitProvider initialization successful
_
メッセージが存在する場合、_firebase_crashlytics_collection_enabled
_はtrueです。メッセージが表示されない場合は、クラッシュレポートを無効にするようにメタデータを正常に設定しています。
メタデータが欠落しているかtrueに設定されている場合、Fabric.with(...)
の呼び出しを使用してコードのレポートを無効にすることはできません。
別の回答へのコメントで、メタデータを使用してレポートを無効にしようとしたが成功しなかったことを示しています。タイプミスをチェックし、宣言が_<application>
_要素に正しく配置されていることを確認します。私のテストでは、メタデータを使用してレポートを無効にしてから、実行時に有効にすることができます。
モジュールビルドgradleで...
release {
//true value to send the crashlytics to the firebase
manifestPlaceholders = [crashlyticsCollectionEnabled: "true"]
}
debug {
//false value to stop sending the crashlytics to the firebase
manifestPlaceholders = [crashlyticsCollectionEnabled: "false"]
}
マニフェスト内
<meta-data
Android:name="firebase_crashlytics_collection_enabled"
Android:value="${crashlyticsCollectionEnabled}" />
FirebaseCrash.setCrashCollectionEnabled(true);
は、Crashlyticsと呼ばれる新しいバージョンのFirebaseCrashではサポートされなくなりました。詳細 https://firebase.google.com/docs/crash/
FirebaseCrash.setCrashCollectionEnabled(true);
に置き換えられます
Fabric.with(this, new Crashlytics());
Firebaseクラッシュレポートを完全に無効にし、追加する必要がない場合
com.crashlytics.sdk.Android:crashlytics:2.9.1
依存関係、次に:
これをアプリのbuild.gradleに追加します。
Android {
// ...
defaultConfig {
manifestPlaceholders = [enableCrashReporting:"false"]
....
}
}
次に、これをAndroidManifest.xmlに追加します。
<application ...>
// ...
<meta-data
Android:name="firebase_crashlytics_collection_enabled"
Android:value="${enableCrashReporting}" />
<meta-data
Android:name="firebase_analytics_collection_deactivated"
Android:value="true"/>
</application>
Fabric1に代わる新しいFirebaseCrashlyticsベータ版:
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false)