crashlyticsDidDetectCrashDuringPreviousExecution for crashly

crashlyticsDidDetectCrashDuringPreviousExecution for crashlytics NDK

本文关键字:crashly for crashlyticsDidDetectCrashDuringPreviousExecution      更新时间:2023-10-16

我们使用crashlyticsDidDetectCrashDuringPreviousExecution来检测java崩溃并将其报告给我们的BI系统,但是我们的应用程序主要是C++并且我们正在使用crashlytics NDK,我们找不到类似于crashlyticsDidDetectCrashDuringPreviousExecution的东西。

有什么方法可以在应用程序启动时实际检测到 NDK 崩溃?

谢谢Oded

来自Fabric的Mike。

目前,无法在 Fabric 或 SDK 中针对 NDK 崩溃执行此操作。

注意:这仅适用于旧版本(Crashlytics 2.6.7 和 CrashlyticsNDK 1.1.6(

我也在寻找解决方案。我们目前找到了部分解决方案。我不确定它有多好,它绝对不是官方的,而且它是异步的(我们试图通过循环来克服(,但这是我找到的最佳解决方案,它似乎正在工作

Fabric.with(this, new Crashlytics.Builder().core(core.build()).build(), new CrashlyticsNdk(), new Crashlytics());
if (!userLeft) { // our handling to fix bug, see explanation below
    new Thread(new Runnable() {
        @Override
        public void run() {
            SessionEventData crashEventData = null;
            for (int i = 0; i < 10; i++) {
                try {
                    Thread.sleep(1000); // in ms
                } catch (InterruptedException e) { }
                crashEventData = CrashlyticsNdk.getInstance().getCrashEventData();
                if (crashEventData != null)
                {
                    // there was a crash!
                    // crash timestamp can be found at crashEventData.timestamp
                    break;
                }
            }
        }
    }).start();
}

用户左的解释:

我们在为退出应用程序的用户报告崩溃时遇到了一些错误,这就是解决方案。我们将此标志设置为 true,并将其保存在设备上(共享首选项(。我们在主要活动(扩展 NativeActivity(上执行此操作,在 finish(( func 上执行此操作。法典:

@Override
public void finish() {
    // set some key such as USER_LEFT to TRUE
    super.finish();
}

之后,只需获取该USER_LEFT值,将其分配给userLeft param,并在SharedPerferences上将其设置回false。

对此解决方案有什么见解吗?