有没有什么简单的方法可以在开发过程中关闭Crashlytics Android SDK ?
我不希望每次我做一些愚蠢的事情时它都会崩溃
另一方面,我不想注释掉Crashlytics.start(),可能会忘记取消注释并提交
有没有什么简单的方法可以在开发过程中关闭Crashlytics Android SDK ?
我不希望每次我做一些愚蠢的事情时它都会崩溃
另一方面,我不想注释掉Crashlytics.start(),可能会忘记取消注释并提交
当前回答
答:更新 从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
其他回答
看看最新的医生。 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);
如果你担心BuildConfig。调试没有正确设置,请使用ApplicationInfo代替:
boolean isDebug = ( mAppContext.getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE ) != 0;
Crashlytics crashlytics = new Crashlytics.Builder().disabled( isDebug ).build();
Fabric.with( uIContext, crashlytics );
另一个我喜欢的简单解决方案,因为它不需要不同的清单文件:
步骤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}" />
所选的答案不再正确。谷歌改变了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");
}
如果您的应用程序中还没有一个类,请创建一个从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"
........>