0

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

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

谢谢奥德

4

2 回答 2

0

来自 Fabric 的 Mike。

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

于 2017-03-31T16:34:26.537 回答
0

注意:这仅适用于旧版本(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();
}

userLeft的解释:

我们在为退出应用程序的用户报告崩溃时遇到了一些错误,这就是解决方案。我们将此标志设置为 true,并将其保存在设备上 (SharedPreferences)。我们在我们的主要活动(它扩展了 NativeActivity)上完成()函数。代码:

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

之后,只需获取 USER_LEFT 值,将其分配给 userLeft 参数,然后在 SharedPerferences 上将其设置回 false。

有关此解决方案的任何见解?

于 2018-06-07T16:26:36.393 回答