如何在Android开发过程中防止Crashlytics记录崩溃日志

7
在开发应用程序时,有时会崩溃,并且已知在开发过程中会崩溃,这会不必要地向客户发送邮件,告知应用程序中存在一些稳定性问题。
因此,我想知道是否有任何方法可以在开发过程中停止记录日志。
2个回答

4

Crashlytics 提供了选择选择加入或退出发送崩溃报告的选项。您可以在代码中使用此选项,在开发过程中防止发送崩溃报告。

为此,您可以将 AndroidManifest.xml 文件中的 firebase_crashlytics_collection_enabled 属性设置为 false

<meta-data
    android:name="firebase_crashlytics_collection_enabled"
    android:value="false" />

使用此选项,您可以在运行发布版本时重新启用 Crashlytics 数据收集:

if(!BuildConfig.DEBUG){
   FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
}

或者另一个类似的选项是仅在运行调试版本时禁用Crashlytics数据收集。在这种情况下,不需要使用清单属性。

if(BuildConfig.DEBUG){
   FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false);
}

谢谢你的回复@Gerardo,<meta-data>能否在调试模式下自动禁用并在发布时启用,还是每次构建APK时都需要手动更改true/false? - Aditya Nandardhane
您可以在应用程序中将<meta-data>属性设置为“false”(对于Debug和Release版本),然后在运行Release版本时通过编程方式调用“setCrashlyticsCollectionEnabled(true)”来覆盖此值。 - Gerardo
我需要在哪个文件中调用“setCrashlyticsCollectionEnabled(true)”? - Aditya Nandardhane
你可以在代码的任何地方调用它。对于这种情况,您可以将其放置在MainActivity的onCreate方法中,以便尽早跟踪崩溃。 - Gerardo
如果我在MainActivity中提到这个,那么它只会跟踪MainActivity还是整个应用程序? - Aditya Nandardhane
它将跟踪整个应用程序。此方法仅用于指示Crashlytics开始或停止收集数据。这是文档:https://firebase.google.com/docs/crashlytics/customize-crash-reports?platform=android#enable-reporting - Gerardo

1

您可以在调试构建中禁用映射文件和符号上传:

buildTypes {
        release {
            firebaseCrashlytics {
               mappingFileUploadEnabled true
               nativeSymbolUploadEnabled true
            }
        }
        debug {
            firebaseCrashlytics {
                // If you don't need crash reporting for your debug build,
                // you can speed up your build by disabling mapping file uploading.
                mappingFileUploadEnabled false
                nativeSymbolUploadEnabled false
            }
        }
    }
}

1
这个配置更改将防止Crashlytics上传调试版本的符号或映射文件。虽然这会使构建速度更快,但它并不会阻止Crashlytics在调试版本中报告崩溃,这正是OP所寻找的。没有映射或符号文件,崩溃报告将无法阅读,因为Crashlytics无法对其进行反混淆或符号化。 - Gerardo
你说得对。那么,选择就是通过在AndroidManifest.xml中仅针对调试版本添加元数据标签来禁用报告,或通过检查构建配置并调用FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false)来在代码中禁用报告,其只会影响调试版本。但我认为第一种方法更简单更好。 https://firebase.google.com/docs/crashlytics/customize-crash-reports?hl=en&authuser=0&platform=android#enable-reporting - Boris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接