从Android本机代码抛出c ++异常会挂起线程

时间:2017-10-24 22:21:11

标签: java android c++ android-ndk java-native-interface

似乎当我从JNICALL函数外部抛出异常时,任何抛出的异常都会挂起该线程。

也就是说,如果我直接在JNICALL函数(java本机函数)中抛出异常,则可以正确捕获它。如果它是从JNICALL函数调用的函数或方法抛出的,即使只是调用一次,它也会挂起该线程。

我很困惑,但我无法找到任何有此问题的人提及。

我的项目使用最新的稳定ndk,APP_STL设置为c ++ _ shared,语言std设置为gnuc ++ 11.

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

看起来它可能与AddressSanitizer发生冲突。一旦我从手机上卸载它并禁用asan编译器标志,它现在正在工作。