Мы используем crashlyticsDidDetectCrashDuringPreviousExecution для обнаружения сбоев java и сообщения о них в наши би-системы, но наше приложение в основном C ++, и мы используем NDK для аварийного отключения, мы не можем найти ничего похожего на crashlyticsDidDetectCrashDuringPreviousExecution.
Как мы можем обнаружить сбой NDK при запуске приложения?
Спасибо
Одед
Майк из ткани здесь.
В настоящее время нет способа сделать это в 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), в функции finish ().
Код:
@Override
public void finish() {
// set some key such as USER_LEFT to TRUE
super.finish();
}
После этого просто получите значение USER_LEFT, присвойте его параметру userLeft и установите для него значение false в SharedPerferences.
Есть идеи об этом решении?