【问题标题】:Crashlytics and default exception handlerCrashlytics 和默认异常处理程序
【发布时间】:2018-10-10 06:54:11
【问题描述】:

我在我的 android 项目中使用 crashlytics,我的要求是在应用程序崩溃时,我想要自己的自定义反馈活动,并且我还想在 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);
    }
  });

但这不会启动反馈活动(尽管执行了启动反馈活动的代码),而是显示了 android 中默认的应用程序崩溃行为。 有人可以帮我吗?

【问题讨论】:

  • 看看this
  • 感谢您的回复,但这不会向 crashlytics 报告致命异常。我做了类似的事情,但我还不知道如何将其记录为 crashlytics 的致命异常。

标签: android exception-handling crashlytics google-fabric crashlytics-android


【解决方案1】:

谢谢。这不受 Crashlytics 官方支持。如果您确实找到了解决方法,我们无法确保随着我们 SDK 的更新,它会随着时间的推移继续工作。

【讨论】:

  • 感谢您的回答:)。但是,我需要记录一个异常,其严重性级别不是非致命异常,只是为了隔离问题中的异常。没有任何干净的方法可以实现这一目标吗?据我所知,只有两类异常,致命的(崩溃时)和非致命的(Crashlytics.logException)。我需要第三个,以便在发生此类事件时感到震惊,因为我目前对致命的异常感到震惊。
【解决方案2】:

来自官方代码示例https://fabric.io/kits/android/crashlytics/features

确保 Fabric.with() 行位于所有其他 3rd-party SDK 之后 设置一个 UncaughtExceptionHandler

在您的 AndroidManifest 中添加元数据

<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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多