web-dev-qa-db-ja.com

Android

Androidアプリを開発しており、firebaseとfirebase cracklyticsSDKを統合しました。

ユーザーがクラッシュレポートを無効にできるようにしたいので(GDPRへの準拠を確認するため-クラッシュレポートはGDPRに関連していると思います)、ユーザーがアプリの設定でクラッシュレポートを無効にできる方法が必要です。

https://firebase.google.com/docs/crash/disable-sdk でドキュメントを見つけましたが、試してみると次のようになります。

FirebaseCrash.setCrashCollectionEnabled(true);

AndroidStudioでエラーが発生しますcannot resolve symbol 'FirebaseCrash'

これは、アプリの実行時にプログラムで実行する必要があります。

6
Boardy

実行時に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>_要素に正しく配置されていることを確認します。私のテストでは、メタデータを使用してレポートを無効にしてから、実行時に有効にすることができます。

10
Ashvin solanki

モジュールビルド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}" />
1
Abhishek Rana

FirebaseCrash.setCrashCollectionEnabled(true);は、Crashlyticsと呼ばれる新しいバージョンのFirebaseCrashではサポートされなくなりました。詳細 https://firebase.google.com/docs/crash/

FirebaseCrash.setCrashCollectionEnabled(true);

に置き換えられます

Fabric.with(this, new Crashlytics());

ご覧ください https://firebase.google.com/docs/crashlytics/upgrade-from-crash-reporting#set_up_manual_initialization

1

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>
1
Phileo99

Fabric1に代わる新しいFirebaseCrashlyticsベータ版:

FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false)
0