禁用Android的firebase crashlytics

禁用Android的firebase crashlytics,android,firebase,crashlytics,Android,Firebase,Crashlytics,我正在开发一个android应用程序,并集成了firebase和firebase crashlytics SDK 我想允许用户禁用崩溃报告(以确保GDPR合规性-我假设崩溃报告与GDPR相关),因此需要一种方法让用户能够通过应用程序设置禁用它 我在上找到了文档,但当我尝试和该行时: FirebaseCrash.setCrashCollectionEnabled(true); Android Studio给了我一个错误无法解析符号“FirebaseCrash” 这需要在应用程序运行时以编程方式完

我正在开发一个android应用程序,并集成了firebase和firebase crashlytics SDK

我想允许用户禁用崩溃报告(以确保GDPR合规性-我假设崩溃报告与GDPR相关),因此需要一种方法让用户能够通过应用程序设置禁用它

我在上找到了文档,但当我尝试和该行时:

FirebaseCrash.setCrashCollectionEnabled(true);
Android Studio给了我一个错误
无法解析符号“FirebaseCrash”


这需要在应用程序运行时以编程方式完成。

FirebaseCrash.setCrashCollectionEnabled(true)。更多

被替换为

Fabric.with(this, new Crashlytics());
看一看
在运行时禁用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);       

更多

编辑2

参考:

说明了一旦在应用程序会话中启用了报告,就不能将其禁用

默认情况下,在创建
应用程序
实例之前执行的名为CrashlyticsInitProvider的
ContentProvider
中启用Crashlytics报告。CrashlyticsInitProvider根据元数据值启用或禁用报告
firebase\u crashlytics\u collection\u enabled
,默认情况下为true

如果要禁用报告,则必须显示清单元数据并将其设置为false:

<meta-data
    android:name="firebase_crashlytics_collection_enabled"
    android:value="false" />
如果消息存在,
firebase\u crashlytics\u collection\u enabled
为真。如果消息不存在,则表示您已成功将元数据设置为禁用崩溃报告

如果元数据丢失或设置为true,则无法使用调用
Fabric.with(…)
禁用代码中的报告


在对另一个答案的评论中,您指出您尝试使用元数据禁用报告,但未成功。检查拼写错误并确保声明正确放置在
元素中。在我的测试中,我能够使用元数据禁用报告,然后在运行时启用

如果您希望完全禁用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>


// ...

在您的模块构建梯度中…

    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}" />

新Firebase Crashlytics beta版取代了Fabric one:

FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false)

使用新的Firebase Crashlytics SDK,要禁用崩溃报告,必须使用

  • 禁用自动数据收集(清单)

  • 你使用的是最新版本的firebase吗?谢谢,这正是我想要的,你可能会认为谷歌能够让他们的搜索远离过时的产品文档,我犯了一个错误。我使用了来自的元数据名称(它是“firebase\u crash\u collection\u enabled”),但没有注意到示例中的名称有所不同。您关于确保它位于块中的评论是正确的。FWIW:output now通过日志中的以下消息确认它已被跳过:
    CrashlyticsInitProvider:CrashlyticsInitProvider跳过初始化
    您有关于此的链接吗?我猜它可能在应用程序中默认为:
    FirebaseCrashlytics.getInstance()。setCrashlyticsCollectionEnabled(!BuildConfig.DEBUG)
    这样开发崩溃就不会混淆产品上发生的崩溃这是文档所说的:>是否启用自动数据收集。当设置为
    false
    时,新值在应用程序的下一次运行之前不会应用。如果您想默认为所有应用程序运行禁用数据收集,请添加
    firebase\u crashlytics_collection_enabled
    标记到你的应用程序的AndroidManifest.xml。这对我(版本17.2.1)有效。但是,尽管禁用,Crashlytics仍会在设备上存储崩溃。每当你再次启用(假设使用相同的设备),它都会清除服务器上的所有内容。如果你正在测试,请记住这一点。
    <application ...>
    
        // ...
    
        <meta-data 
                android:name="firebase_crashlytics_collection_enabled" 
                android:value="${enableCrashReporting}" />
        <meta-data
                android:name="firebase_analytics_collection_deactivated"
                android:value="true"/>
    </application>
    
        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}" />
    
    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false)
    
    if (BuildConfig.DEBUG) {
      FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false)
    }
    
    <meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
    
    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(!BuildConfig.DEBUG)