2012-03-17 12 views
16

Có ai đang sử dụng Google Breakpad cho mã gốc Android (NDK) không?Sử dụng Google Breakpad cho Android NDK?

Nếu có, bạn có thể xây dựng cách làm thế nào để thiết lập và chạy (phía máy khách). Tài liệu rất hạn chế và không đề cập đến Android. Hệ thống xây dựng chứa thông tin Android mặc dù điều đó khiến tôi nghĩ rằng đó không phải là vấn đề.

+0

Ứng dụng có hoạt động trên Android dù nó không hỗ trợ xử lý ngoại lệ C++? Tôi rất thích nó nếu nó hoạt động !!! – Cipi

+0

Nó hỗ trợ xử lý ngoại lệ C++ cũng như –

+0

Tôi có thể tạo ứng dụng khách bằng cách sao chép android/google_breakpad/Android.mk vào thư mục gốc của nguồn breakpad google, chỉnh sửa để xóa ../ .. khỏi tệp .mk và đặt tất cả trong thư mục NDK_MODULES của tôi, nhưng không thể xây dựng các công cụ lưu trữ để thực sự có ý nghĩa về bãi chứa nhỏ, ít nhất là không sử dụng Cygwin. –

Trả lời

8

Xin lỗi về điều đó, tôi đã thực hiện cổng ban đầu nhưng tôi không thực sự ghi lại bất cứ điều gì. Tuy nhiên, một trong những kỹ sư Chrome đã thực hiện một số công việc trên cổng và đã viết một README thực sự tốt đẹp: https://chromium.googlesource.com/breakpad/breakpad/+/master/README.ANDROID

Còn có tệp Android.mk tương thích NDK trong đó ngay bây giờ, vì vậy nếu bạn đang sử dụng NDK chuẩn hệ thống nên đơn giản để kết hợp với Breakpad.

1

Tôi cũng tìm thấy một số tốt example project cho điều đó. Vì nó là trong dự án bạn có thể thiết lập Google Breakpad thích:

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

ở phía cpp và như:

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

ở phía java.

Sau khi thực hiện chức năng bool DumpCallback(const google_breakpad::MinidumpDescriptor& descriptor, void* context, bool succeeded), bạn sẽ có thể làm điều gì đó trước khi ứng dụng gặp sự cố.

Tôi đã gặp phải và cũng tìm thấy sự cố this xác nhận tôi, rằng trong chức năng này bạn không thể thực hiện cuộc gọi lại java dưới ART ngay dưới DVM (trước android 5 - Lollipop).