有没有什么简单的方法可以在开发过程中关闭Crashlytics Android SDK ?
我不希望每次我做一些愚蠢的事情时它都会崩溃
另一方面,我不想注释掉Crashlytics.start(),可能会忘记取消注释并提交
有没有什么简单的方法可以在开发过程中关闭Crashlytics Android SDK ?
我不希望每次我做一些愚蠢的事情时它都会崩溃
另一方面,我不想注释掉Crashlytics.start(),可能会忘记取消注释并提交
当前回答
我知道这是个愚蠢的回答 只需注释掉Fabric。with(this, new Crashlytics());,当你想要发布它时,处理它并取消注释。
其他回答
如果你担心BuildConfig。调试没有正确设置,请使用ApplicationInfo代替:
boolean isDebug = ( mAppContext.getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE ) != 0;
Crashlytics crashlytics = new Crashlytics.Builder().disabled( isDebug ).build();
Fabric.with( uIContext, crashlytics );
这里有很多好的答案,但对于我的测试,我使用内部测试和实验室外测试的调试版本,其中崩溃日志仍然非常有用,我仍然希望报告它们。就像OP一样,我所希望的是在活跃的开发过程中禁用它们,因为我经常导致和快速解决崩溃。
不是删除所有调试崩溃,您可以选择仅在设备连接到开发机器时禁用报告,使用以下代码。
if (!Debug.isDebuggerConnected()) {
Fabric.with(this, new Crashlytics());
}
有两个选项可以禁用以下版本的Firebase Crashlytics:
添加元标签的应用程序的清单
<元数据android:name="firebase_crashlytics_collection_enabled" android:value="false" />
OR
直接在应用程序中配置(请记住,当设置为false时,新值直到下次运行应用程序才适用)
FirebaseCrashlytics.getInstance () .setCrashlyticsCollectionEnabled(真正的)
我从Crashlytics找到了解决方案(与Fabric集成)
将以下代码放在应用程序类onCreate()中
Crashlytics crashlytics = new Crashlytics.Builder().disabled(BuildConfig.DEBUG).build();
Fabric.with(this, crashlytics);
编辑:
在Crashalitics 2.3及以上版本中,这是不推荐的。正确的代码是:
CrashlyticsCore core = new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build();
Fabric.with(this, new Crashlytics.Builder().core(core).build());
or
Fabric.with(this, new Crashlytics.Builder().core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()).build());
(复制自Crashlytics deprecated method disabled())
EDIT2:
你也可以选择将它添加到gradle中的buildType中。这个命令禁止发送crashlytics映射文件,并为每个构建生成一个ID,这可以加快那些风格的gradle构建。(它不会在运行时禁用Crashlytics。)请看迈克B的回答。
buildTypes {
release {
....
}
debug {
ext.enableCrashlytics = false
}
}
如果你想要一个可调试的版本,方法如下:
buildTypes {
release {
signingConfig signingConfigs.config
debuggable true //-> debuggable release build
minifyEnabled true
multiDexEnabled false
ext.enableCrashlytics = true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
buildConfigField 'boolean', 'BUILD_TYPE_DEBUG', 'false'
}
debug {
minifyEnabled false
multiDexEnabled true
ext.enableCrashlytics = false
ext.alwaysUpdateBuildId = false
// Disable fabric build ID generation for debug builds
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
buildConfigField 'boolean', 'BUILD_TYPE_DEBUG', 'true'
}
}
当你将debuggable设置为true时,你的BuildConfig。DEBUG将初始化为true,这就是为什么我在BuildConfig类中添加了这个变量。
Init织物:
Crashlytics crashlytics = new Crashlytics.Builder()
// disable crash reporting in debug build types with custom build type variable
.core(new CrashlyticsCore.Builder().disabled(BuildConfig.BUILD_TYPE_DEBUG).build())
.build();
final Fabric fabric = new Fabric.Builder(this)
.kits(crashlytics)
//enable debugging with debuggable flag in build type
.debuggable(BuildConfig.DEBUG)
.build();
// Initialize Fabric with the debug-disabled crashlytics.
Fabric.with(fabric);