1
我有一個庫ndk代碼庫,它正在我的特定設備上拋出sigdev,這會殺死我的應用程序。是否有可能趕上這個sigdev並拋出一個Java異常?捕捉必須在不修改拋出異常的庫的情況下完成。從Java代碼中捕獲NDK SIGABRT而無法訪問ndk代碼
例外看起來像這樣:
01-26 09:09:38.610 19393-19869/com.foo.bar A/libc: /Volumes/Android/buildbot/src/android/ndk-r12-release/ndk/sources/cxx-stl/llvm-libc++abi/libcxxabi/src/abort_message.cpp:74: void abort_message(const char *, ...): assertion "terminating with uncaught exception of type char const*" failed
01-26 09:09:38.610 19393-19869/com.foo.bar A/libc: Fatal signal 6 (SIGABRT) at 0x00004bc1 (code=-6), thread 19869 (Thread-9201)
上有SO別處問類似的問題,但它似乎在這些情況下,他們同時控制NDK和Java源程序,並使用NDK代碼觸發一個java異常。在我的情況下,我無法控制ndk代碼,它是一個封閉的源代碼庫,所以我必須完全通過Java代碼或我自己創建的其他ndk代碼來處理它。