Я также нашел хорошее example project для этого. Как это в проекте вы можете настроить 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)
, вы сможете что-то сделать до того, как приложение выйдет из строя.
Я испытал и также нашел this вопрос, подтверждающий, что в этой функции вы не можете выполнять java-обратные вызовы под ART только под DVM (до android 5 - Lollipop).
Может ли он работать на Android, хотя он не поддерживает обработку исключений на C++? Мне бы это понравилось, если он работает !!! – Cipi
Он также поддерживает обработку исключений C++ –
Я могу создать клиент, скопировав файл android/google_breakpad/Android.mk в корень исходного сайта google google, редактируя, чтобы удалить ../ .. из файла .mk и поставить все это в моем каталоге NDK_MODULES, но не может создать хост-инструменты, чтобы на самом деле понять мини-дамп, по крайней мере, не используя cygwin. –