有没有什么简单的方法可以在开发过程中关闭Crashlytics Android SDK ?

我不希望每次我做一些愚蠢的事情时它都会崩溃

另一方面,我不想注释掉Crashlytics.start(),可能会忘记取消注释并提交


当前回答

这里是Crashlytics的Marc。这里有几个方法来禁用Crashlytics,而你正在做你的调试构建!

使用不同的android:versionString进行调试和发布构建,然后从Crashlytics web仪表板禁用调试版本的崩溃报告。 将对Crashlytics.start()的调用包装在检查调试标志的if语句中。您可以使用自定义标志或类似于这里提出的方法:如何检查APK是否有签名或“调试构建”?

其他回答

最新的最简单的版本时,使用Gradle构建:

if (!BuildConfig.DEBUG) {
    Fabric.with(this, new Crashlytics());
}

它使用来自Fabric的Crashlytics的内置语法,并自动与Gradle构建一起工作。

我们可以使用fabric的isDebuggable()方法。

import static io.fabric.sdk.android.Fabric.isDebuggable;

if(! isDebuggable()){
    // set Crashlytics ... 
}

快乐编码:)

如果你使用Gradle,只需添加这个到一个风味:

ext.enableCrashlytics = false

如果您的应用程序中还没有一个类,请创建一个从Application扩展而来的类。

然后执行以下步骤:

public class BaseApplication extends Application { // extend from MultidexApplication if multidex is required by your application 

    @Override
    public void onCreate() {
        super.onCreate();

        /*
         *  Crashlytics is enabled by default,
         *  Disable it for debug builds & USB Debugging
         * */

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

不要忘记在AndroidManifest.xml中添加该类

 <application
        android:name=".BaseApplication"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        ........>

问题是没有一个解决方案适用于最新的crashlytics sdk。(我用的是2.9.0)

你不能通过代码禁用它,因为它编译到你的项目中,甚至在调用你的应用程序的onCreate之前运行。所以其他的解决方案很简单——不要在不需要的时候编译崩溃分析。 在build中将'compile'调用替换为'releaseCompile'。gradle文件。

 releaseCompile('com.crashlytics.sdk.android:crashlytics:2.9.0@aar') {
        transitive = true
    }