【发布时间】:2020-08-12 10:52:17
【问题描述】:
在处理 Update your apps to use latest Firebase Crashlytics SDKs before November 15, 2020 时,在我激活我的自定义 UncaughtExceptionHandler 后,它不会再向 Crashlytics 发送崩溃。
下面的代码我将它设置在Application的onCreate()中。
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();
crashlytics.setCrashlyticsCollectionEnabled(!BuildConfig.DEBUG); // only release able to send.
crashlytics.sendUnsentReports(); // send reports
Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
FirebaseCrashlytics.getInstance().recordException(e); // record exception.
// below things are restart app when crash appeared.
PackageManager packageManager = getPackageManager();
Intent intent = packageManager.getLaunchIntentForPackage(getPackageName());
if (intent != null) {
ComponentName componentName = intent.getComponent();
Intent mainIntent = Intent.makeRestartActivityTask(componentName);
startActivity(mainIntent);
Runtime.getRuntime().exit(0);
}
});
当我删除自定义 UncaughtExceptionHandler 时,它能够向 Crashlytics 报告。
以下代码在使用 Fabric 库时运行良好。 (https://stackoverflow.com/a/49266303/4316327)
CrashlyticsCore core = new CrashlyticsCore.Builder()
.disabled(BuildConfig.DEBUG)
.build();
Fabric.with(new Fabric.Builder(this).kits(new Crashlytics.Builder()
.core(core).build()).initializationCallback(new InitializationCallback<Fabric>() {
@Override
public void success(Fabric fabric) {
Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
LogWrapper.logException(e);
PackageManager packageManager = getPackageManager();
Intent intent = packageManager.getLaunchIntentForPackage(getPackageName());
if (intent != null) {
ComponentName componentName = intent.getComponent();
Intent mainIntent = Intent.makeRestartActivityTask(componentName);
startActivity(mainIntent);
Runtime.getRuntime().exit(0);
}
});
}
@Override
public void failure(Exception e) {
e.printStackTrace();
}
}).build());
对此有什么解决办法吗?任何帮助将不胜感激。非常感谢。
【问题讨论】:
-
遇到同样的问题
-
@Truong Hieu:你解决了这个问题吗?我有同样的问题。如果是,您能否提供一下您是如何做到的?谢谢
-
@ItayFeldman:你解决了吗?以及如何?
-
@nibz 还没有
标签: android firebase crashlytics