Crashlytics 和默认异常处理程序
Crashlytics and default exception handler
我正在为我的 android 项目使用 crashlytics,我的要求是在应用程序崩溃时,我想要我自己的自定义反馈 activity 并且我还想将此记录为致命异常在 crashlytics 中。我在接受的答案中尝试了方法:
Crashlytics Android SDK - custom UncaughtExceptionHandler ,但异步初始化对我来说没有成功。所以,我尝试同步初始化,比如:
Thread.UncaughtExceptionHandler defaultUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
// launch feed back activity
Intent intent = new Intent();
intent.setAction("com.project.SEND_LOG");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
defaultUncaughtExceptionHandler.uncaughtException(thread, ex);
}
});
但这不会启动反馈 activity(尽管启动反馈的代码 activity 已执行),而是显示 android 中的默认应用程序崩溃行为。
有人可以帮我解决这个问题吗?
谢谢。这不受 Crashlytics 的官方支持。如果您确实找到了解决方法,我们无法确保随着时间的推移它会随着我们 SDK 的更新继续工作。
来自官方代码示例https://fabric.io/kits/android/crashlytics/features :
Make sure the Fabric.with() line is after all other 3rd-party SDKs
that set an UncaughtExceptionHandler
在您的 AndroidManifest
中添加 meta-data
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="false" />
先安装 UncaughtExceptionHandlers,然后启动 Fabric。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set all your UncaughtExceptionHandlers
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler());
// Start your Crashlytics manually
Fabric.with(this, new Crashlytics());
...
}
}
然后您可以从 crashlytics 获取报告并在您自己的 UncaughtExceptionHandler 中捕获错误。
它适用于我的 API27 手机 crashlytics:2.10.1
我正在为我的 android 项目使用 crashlytics,我的要求是在应用程序崩溃时,我想要我自己的自定义反馈 activity 并且我还想将此记录为致命异常在 crashlytics 中。我在接受的答案中尝试了方法: Crashlytics Android SDK - custom UncaughtExceptionHandler ,但异步初始化对我来说没有成功。所以,我尝试同步初始化,比如:
Thread.UncaughtExceptionHandler defaultUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
// launch feed back activity
Intent intent = new Intent();
intent.setAction("com.project.SEND_LOG");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
defaultUncaughtExceptionHandler.uncaughtException(thread, ex);
}
});
但这不会启动反馈 activity(尽管启动反馈的代码 activity 已执行),而是显示 android 中的默认应用程序崩溃行为。 有人可以帮我解决这个问题吗?
谢谢。这不受 Crashlytics 的官方支持。如果您确实找到了解决方法,我们无法确保随着时间的推移它会随着我们 SDK 的更新继续工作。
来自官方代码示例https://fabric.io/kits/android/crashlytics/features :
Make sure the Fabric.with() line is after all other 3rd-party SDKs that set an UncaughtExceptionHandler
在您的 AndroidManifest
中添加 meta-data<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="false" />
先安装 UncaughtExceptionHandlers,然后启动 Fabric。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set all your UncaughtExceptionHandlers
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler());
// Start your Crashlytics manually
Fabric.with(this, new Crashlytics());
...
}
}
然后您可以从 crashlytics 获取报告并在您自己的 UncaughtExceptionHandler 中捕获错误。 它适用于我的 API27 手机 crashlytics:2.10.1