我们正在使用 crashlyticsDidDetectCrashDuringPreviousExecution 来检测 java 崩溃并将其报告给我们的 bi 系统,但我们的应用程序主要是 C++ 并且我们使用的是 crashlytics NDK,我们找不到与 crashlyticsDidDetectCrashDuringPreviousExecution 类似的任何东西。
有什么方法可以在应用程序启动时实际检测到 NDK 崩溃?
谢谢奥德
我们正在使用 crashlyticsDidDetectCrashDuringPreviousExecution 来检测 java 崩溃并将其报告给我们的 bi 系统,但我们的应用程序主要是 C++ 并且我们使用的是 crashlytics NDK,我们找不到与 crashlyticsDidDetectCrashDuringPreviousExecution 类似的任何东西。
有什么方法可以在应用程序启动时实际检测到 NDK 崩溃?
谢谢奥德
来自 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();
}
userLeft的解释:
我们在为退出应用程序的用户报告崩溃时遇到了一些错误,这就是解决方案。我们将此标志设置为 true,并将其保存在设备上 (SharedPreferences)。我们在我们的主要活动(它扩展了 NativeActivity)上完成()函数。代码:
@Override
public void finish() {
// set some key such as USER_LEFT to TRUE
super.finish();
}
之后,只需获取 USER_LEFT 值,将其分配给 userLeft 参数,然后在 SharedPerferences 上将其设置回 false。
有关此解决方案的任何见解?