是否有人對Android本機代碼(NDK)使用Google Breakpad?使用適用於Android NDK的Google Breakpad?
如果是這樣,你可否詳細說明如何啓動並運行(即客戶端)。 文檔非常有限,完全沒有提及Android。構建系統包含android信息,雖然這使我認爲它不應該是一個問題。
是否有人對Android本機代碼(NDK)使用Google Breakpad?使用適用於Android NDK的Google Breakpad?
如果是這樣,你可否詳細說明如何啓動並運行(即客戶端)。 文檔非常有限,完全沒有提及Android。構建系統包含android信息,雖然這使我認爲它不應該是一個問題。
對不起,我做了初始端口,但我沒有真正記錄任何東西。但是,鉻的一位工程師做了一些移植工作,並寫了一個非常好的自述: https://chromium.googlesource.com/breakpad/breakpad/+/master/README.ANDROID
還有在那裏的NDK兼容Android.mk文件現在,如果你正在使用標準的NDK編譯系統,它應該很容易納入Breakpad。
我還發現一個很好的example project。 因爲它是你可以設置谷歌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問題,這證實了我,在這個函數中,你不能在ART下正好在DVM(在android 5 - Lollipop之前)下做java回調。
它可以在Android上工作,但它不支持C++異常處理?我會喜歡它,如果它的工作! – Cipi 2012-07-13 16:37:27
它確實支持C++異常處理 – 2012-07-17 15:49:45
我可以通過將android/google_breakpad/Android.mk複製到google breakpad源的根目錄下進行編譯,從.mk文件中刪除../ ..並將其放入它都在我的NDK_MODULES目錄中,但不能構建主機工具來真正理解迷你轉儲,至少不使用cygwin。 – 2012-07-19 20:39:05