2012-03-17 17 views
16

Czy ktoś używa Google Breakpad dla natywnego kodu Android (NDK)?Korzystanie z Google Breakpad dla Androida NDK?

Jeśli tak, czy mógłbyś opracować, jak je założyć i uruchomić (po stronie klienta). Dokumenty są bardzo ograniczone i nie wspominają wcale o systemie Android. System kompilacji zawiera informacje z Androidem, co sprawia, że ​​myślę, że nie powinno to stanowić problemu.

+0

Czy działa na systemie Android, ponieważ nie obsługuje obsługi wyjątków C++? Chciałbym, żeby to działało !!! – Cipi

+0

Obsługuje obsługę wyjątków w C++. –

+0

Mogę zbudować klienta, kopiując plik android/google_breakpad/Android.mk do katalogu głównego źródła breakpad google, edytując w celu usunięcia pliku ../ .. z pliku .mk i umieszczenia to wszystko w moim katalogu NDK_MODULES, ale nie można zbudować narzędzi hosta, aby rzeczywiście nadać sens mini-zrzutowi, przynajmniej nie używając cygwin. –

Odpowiedz

8

Przepraszam, że zrobiłem początkowy port, ale tak naprawdę niczego nie dokumentowałem. Jednak jeden z inżynierów Chrome czy niektóre prace nad portem i napisał bardzo ładne README: https://chromium.googlesource.com/breakpad/breakpad/+/master/README.ANDROID

Jest też kompatybilny NDK plik Android.mk tam teraz, więc jeśli używasz standardowego NDK budować system powinien być prosty do włączenia Breakpad.

1

Znalazłem również dobry example project do tego. Jak to jest w projekcie można skonfigurować Google Breakpad lubię:

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

w bok cpp i jak:

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

w bok java.

Po wykonaniu funkcji bool DumpCallback(const google_breakpad::MinidumpDescriptor& descriptor, void* context, bool succeeded) będzie można zrobić coś, zanim aplikacja się zawiesi.

Doświadczyłem i znalazłem również numer this, który potwierdza, że ​​w tej funkcji nie można wykonywać wywołań zwrotnych Java w ramach ART tuż pod DVM (przed Androidem 5 - Lollipop).

Powiązane problemy