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

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

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


当前回答

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

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

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

其他回答

答:更新 从gradle配置中禁用crlytics以提高构建速度。

android {
    ...
    buildTypes {
        debug {
            ext.enableCrashlytics = false
        }
    }
}

或者kotlin公里:

android {
    ...
    buildTypes {
        getByName("debug") {
            extra["enableCrashlytics"] = false
        }
    }
}

然后编程地:

// Initializes Fabric for builds that don't use the debug build type.
Crashlytics.Builder()
        .core(CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
        .build()
        .also { crashlyticsKit ->
            Fabric.with(this, crashlyticsKit)
        }

你也可以继续在调试构建中使用crashlytics,但仍然可以通过防止crashlytics为每个构建生成一个新ID来提高构建速度:

android {
    ...
    buildTypes {
        getByName("debug") {
            extra["alwaysUpdateBuildId"] = false
        }
    }
}

或groovy:

android {
    ...
    buildTypes {
        debug {
            ext.alwaysUpdateBuildId = false
        }
    }
}

查看下面的文档链接: https://developer.android.com/studio/build/optimize-your-build#disable_crashlytics

这里有很多好的答案,但对于我的测试,我使用内部测试和实验室外测试的调试版本,其中崩溃日志仍然非常有用,我仍然希望报告它们。就像OP一样,我所希望的是在活跃的开发过程中禁用它们,因为我经常导致和快速解决崩溃。

不是删除所有调试崩溃,您可以选择仅在设备连接到开发机器时禁用报告,使用以下代码。

if (!Debug.isDebuggerConnected()) {
    Fabric.with(this, new Crashlytics());
}

看看最新的医生。 https://docs.fabric.io/android/crashlytics/build-tools.html gradle-advanced-setup。

除了在构建中添加ext.enableCrashlytics = false。你需要做的成绩,

Crashlytics crashlyticsKit = new Crashlytics.Builder()
    .core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
    .build();

// Initialize Fabric with the debug-disabled crashlytics.
Fabric.with(this, crashlyticsKit);

注意,你也可以在调试构建中禁用烦人的符号上传:

def crashlyticsUploadStoredDeobsDebug = "crashlyticsUploadStoredDeobsDebug"
def crashlyticsUploadDeobsDebug = "crashlyticsUploadDeobsDebug"
tasks.whenTaskAdded { task ->
    if (crashlyticsUploadStoredDeobsDebug.equals(task.name) ||
            crashlyticsUploadDeobsDebug.equals(task.name)) {

        println "Disabling $task.name."
        task.enabled = false
    }
}

把它放到构建中。你的应用模块的Gradle。

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

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

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

快乐编码:)