Ho trovato anche un buon example project per quello. Come è nel progetto è possibile impostare Google Breakpad piace:
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);
}
}
nel lato cpp e, come:
// Save Dump Path
initNative(getExternalCacheDir().getAbsolutePath());
nel lato Java.
Dopo aver implementato la funzione bool DumpCallback(const google_breakpad::MinidumpDescriptor& descriptor, void* context, bool succeeded)
, sarà possibile fare qualcosa prima che l'app si arresti in modo anomalo.
Ho riscontrato e trovato anche il problema this che mi conferma, che in questa funzione non è possibile eseguire callback java sotto ART appena sotto DVM (prima di Android 5 - Lollipop).
Può funzionare su Android anche se non supporta la gestione delle eccezioni C++? Mi piacerebbe se funzionasse !!! – Cipi
Supporta anche la gestione delle eccezioni C++ –
Posso creare il client copiando Android/google_breakpad/Android.mk nella directory radice del google breakpad sorgente, modificando per rimuovere ../ .. dal file .mk e inserendo è tutto nella mia directory NDK_MODULES, ma non posso costruire gli strumenti host per dare un senso al mini dump, almeno non usare cygwin. –