有没有什么简单的方法可以在开发过程中关闭Crashlytics Android SDK ?
我不希望每次我做一些愚蠢的事情时它都会崩溃
另一方面,我不想注释掉Crashlytics.start(),可能会忘记取消注释并提交
有没有什么简单的方法可以在开发过程中关闭Crashlytics Android SDK ?
我不希望每次我做一些愚蠢的事情时它都会崩溃
另一方面,我不想注释掉Crashlytics.start(),可能会忘记取消注释并提交
当前回答
看看最新的医生。 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);
其他回答
我遇到了一个奇怪的问题:我按照夏林的答案(也出现在官网上)做了,但没有成功。原来我引用了Fabric包中的BuildConfig,其中还包含一个静态DEBUG变量,即使在调试模式下也被设置为false。
所以,如果你遵循前面提到的解决方案,你仍然得到调试报告,确保你引用了这个:
import com.yourpackagename.BuildConfig;
而不是这个:
import io.fabric.sdk.android.BuildConfig;
如果您的应用程序中还没有一个类,请创建一个从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
}
2020年后面料的答案
将下面的代码粘贴到您的Application类中,并从应用程序onCreate调用方法setCrashlyticsState。您也可以选择将您的测试设备id添加到debugDevices HashSet中,这样您的个人设备就可以被忽略,即使是在发布模式下构建。
请注意。由Settings.Secure.getString(getContext().getContentResolver(), Settings.Secure.ANDROID_ID)返回的设备id;不保证是唯一的或常量(它可以在出厂重置或在根设备上手动更改)。但它应该足够好了。
private final HashSet<String> debugDevices = new HashSet<String>(Arrays.asList("6a3d5c2bae3fd32c"));
private boolean isDebugDevice(String deviceId) {
return debugDevices.contains(deviceId);
}
private void setCrashlyticsState() {
@SuppressLint("HardwareIds")
String deviceId = Settings.Secure.getString(getContext().getContentResolver(), Settings.Secure.ANDROID_ID);
if (BuildConfig.DEBUG || isDebugDevice(deviceId)) {
Log.v("DeviceId", deviceId);
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false);
}
}
检查BuildConfig。正在查看正确的BuildConfig类。通常会有几个选项,而错误的选项可能会被拖进去。
看看最新的医生。 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);