2012-03-17 1 views
16

Кто-нибудь использует Google Breakpad для собственного кода Android (NDK)?Использование Google Breakpad для Android NDK?

Если да, не могли бы вы рассказать о том, как его запустить и запустить (на стороне клиента). Документы очень ограничены и вообще не упоминаются Android. Система сборки содержит информацию о андроиде, хотя заставляет меня думать, что это не должно быть проблемой.

+0

Может ли он работать на Android, хотя он не поддерживает обработку исключений на C++? Мне бы это понравилось, если он работает !!! – Cipi

+0

Он также поддерживает обработку исключений C++ –

+0

Я могу создать клиент, скопировав файл android/google_breakpad/Android.mk в корень исходного сайта google google, редактируя, чтобы удалить ../ .. из файла .mk и поставить все это в моем каталоге NDK_MODULES, но не может создать хост-инструменты, чтобы на самом деле понять мини-дамп, по крайней мере, не используя cygwin. –

ответ

8

Извините, что я сделал начальный порт, но я ничего не документировал. Тем не менее, один из инженеров Chrome сделал некоторую работу над портом и написал очень хороший README: https://chromium.googlesource.com/breakpad/breakpad/+/master/README.ANDROID

Там также NDK-совместимый Android.mk файл там сейчас, так что если вы используете стандартный NDK строить система должна быть простой в использовании Breakpad.

1

Я также нашел хорошее 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).

 Смежные вопросы

  • Нет связанных вопросов^_^