source open kodimania cody app android android-ndk google-breakpad

open - ¿Utilizando Google Breakpad para Android NDK?



xbmc android apk (2)

¿Alguien está utilizando Google Breakpad para el código nativo de Android (NDK)?

Si es así, ¿podría explicar cómo ponerlo en funcionamiento (el lado del cliente que es)? Los documentos son muy limitados y no mencionan Android en absoluto. El sistema de compilación contiene información de Android, lo que me hace pensar que no debería ser un problema.


Lo siento, hice el puerto inicial pero realmente no documenté nada. Sin embargo, uno de los ingenieros de Chrome trabajó en el puerto y escribió un README realmente bueno: https://chromium.googlesource.com/breakpad/breakpad/+/master/README.ANDROID

También hay un archivo Android.mk compatible con NDK ahora, por lo que si está utilizando el sistema de compilación estándar de NDK, debería ser sencillo incorporar Breakpad.


También encontré un buen proyecto de ejemplo para eso. Como está en el proyecto, puede configurar Google Breakpad como:

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); } }

en el lado del cpp y como

// Save Dump Path initNative(getExternalCacheDir().getAbsolutePath());

en el lado de java.

Después de implementar la función bool DumpCallback(const google_breakpad::MinidumpDescriptor& descriptor, void* context, bool succeeded) , podrá hacer algo antes de que la aplicación se bloquee.

He experimentado y también encontré this problema que me confirma, que en esta función no se pueden hacer devoluciones de llamada java bajo ART solo bajo DVM (antes de Android 5 - Lollipop).