2012-03-17 20 views
16

Qualcuno usa Google Breakpad per il codice nativo Android (NDK)?Utilizzo di Google Breakpad per NDK Android?

Se sì, potresti approfondire come farlo funzionare (il lato client). I documenti sono molto limitati e non menzionano affatto Android. Il sistema di build contiene informazioni su Android, ma questo mi fa pensare che non dovrebbe essere un problema.

+0

Può funzionare su Android anche se non supporta la gestione delle eccezioni C++? Mi piacerebbe se funzionasse !!! – Cipi

+0

Supporta anche la gestione delle eccezioni C++ –

+0

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. –

risposta

8

Mi dispiace, ho fatto la porta iniziale ma non ho davvero documentato nulla. Tuttavia, uno degli ingegneri di Chrome ha lavorato sulla porta e ha scritto un README molto bello: https://chromium.googlesource.com/breakpad/breakpad/+/master/README.ANDROID

C'è anche un file Android.mk NDK compatibile lì, quindi se stai usando la versione NDK standard sistema dovrebbe essere semplice da incorporare Breakpad.

1

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).