有没有什么简单的方法可以在开发过程中关闭Crashlytics Android SDK ?
我不希望每次我做一些愚蠢的事情时它都会崩溃
另一方面,我不想注释掉Crashlytics.start(),可能会忘记取消注释并提交
有没有什么简单的方法可以在开发过程中关闭Crashlytics Android SDK ?
我不希望每次我做一些愚蠢的事情时它都会崩溃
另一方面,我不想注释掉Crashlytics.start(),可能会忘记取消注释并提交
当前回答
我们可以使用fabric的isDebuggable()方法。
import static io.fabric.sdk.android.Fabric.isDebuggable;
if(! isDebuggable()){
// set Crashlytics ...
}
快乐编码:)
其他回答
我遇到了一个奇怪的问题:我按照夏林的答案(也出现在官网上)做了,但没有成功。原来我引用了Fabric包中的BuildConfig,其中还包含一个静态DEBUG变量,即使在调试模式下也被设置为false。
所以,如果你遵循前面提到的解决方案,你仍然得到调试报告,确保你引用了这个:
import com.yourpackagename.BuildConfig;
而不是这个:
import io.fabric.sdk.android.BuildConfig;
另一个我喜欢的简单解决方案,因为它不需要不同的清单文件:
步骤1 -在build.gradle中定义清单占位符
android {
...
buildTypes {
release {
manifestPlaceholders = [crashlytics:"true"]
}
debug {
manifestPlaceholders = [crashlytics:"false"]
}
}
...
}
步骤2 -在AndroidManifest.xml中使用它们
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="${crashlytics}" />
在MyApplication#onCreate()中使用
if (!BuildConfig.DEBUG) Crashlytics.start(this);
编辑 如果您升级到Fabric,请使用这个答案。
如果你想捕获所有的崩溃(用于调试和发布版本),但想在Crashlytics仪表板中分离它们,你可以添加这行代码到build.gradle:
debug {
versionNameSuffix "-DEBUG"
}
例如,如果你的应用程序的versionName是1.0.0,你的发布版本将被标记为1.0.0,而调试版本将被标记为1.0.0- debug
所选的答案不再正确。谷歌改变了Crashlytics的整合。我目前的版本是2.9.1,我唯一要做的是,添加实现'com.crashlytics.sdk.android:crashlytics:2.9.1'到我的Gradle文件。没有更多的事情需要,很好,但这意味着Crashlytics一直在运行。
解决方案1
只在发布版本编译Crashlytics:
dependencies {
...
releaseImplementation 'com.crashlytics.sdk.android:crashlytics:2.9.1' // update version
}
解决方案2
如果你想额外配置Crashlytics,那么解决方案1是行不通的,因为在调试版本中找不到Crashlytics类。因此,将Gradle实现更改为:
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.1' // update version
然后转到你的Manifest,在应用程序标签中添加以下元数据标签:
<application
android:name="...>
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="false" />
...
</application>
添加到您的启动活动(只需要一次,而不是每个活动)
if (!BuildConfig.DEBUG) { // only enable bug tracking in release version
Fabric.with(this, new Crashlytics());
}
这只会在发布版本中启用Crashlytics。注意,还要检查BuildConfig。调试当你配置Crashlytics,例如:
if (!BuildConfig.DEBUG) {
Crashlytics.setUserIdentifier("HASH_ID");
}