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