Я также нашел хороший пример проекта для этого.Как и в проекте, вы можете настроить 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).