Использование Google Breakpad для Android NDK?
Кто-нибудь использует Google Breakpad для собственного кода Android (NDK)?
Если да, не могли бы вы рассказать о том, как его запустить и запустить (на стороне клиента).
Документы очень ограничены и вообще не упоминаются Android. Система сборки содержит информацию о андроиде, хотя заставляет меня думать, что это не должно быть проблемой.
Ответы
Ответ 1
Извините, я сделал начальный порт, но я ничего не документировал. Тем не менее, один из инженеров Chrome проделал некоторую работу над портом и написал действительно хороший README:
https://chromium.googlesource.com/breakpad/breakpad/+/master/README.ANDROID
Там также есть файл Android.mk, совместимый с NDK, поэтому, если вы используете стандартную систему сборки NDK, должно быть просто включить Breakpad.
Ответ 2
Я также нашел хороший примерный проект.
Как и в проекте, вы можете настроить Google Breakpad следующим образом:
extern "C" {
void Java_com_pluusystem_breakpadjavacall_MainActivity_initNative(JNIEnv* env, jobject obj, jstring filepath)
{
const char *path = env->GetStringUTFChars(filepath, 0);
google_breakpad::MinidumpDescriptor descriptor(path);
exceptionHandler = new google_breakpad::ExceptionHandler(descriptor, NULL, DumpCallback, NULL, true, -1);
}
}
на стороне cpp и как:
// Save Dump Path
initNative(getExternalCacheDir().getAbsolutePath());
в java-стороне.
После этого, выполняя функцию bool DumpCallback(const google_breakpad::MinidumpDescriptor& descriptor, void* context, bool succeeded)
, вы сможете сделать что-то до сбоя приложения.
Я испытал, а также нашел этот вопрос, который подтверждает мне, что в этой функции вы не можете выполнять java-обратные вызовы под ART только под DVM (до android 5 - Lollipop).