应用程序崩溃与Android 4.0或更高版本

Viv*_*sal 5 java-native-interface android native-code android-ndk

我正在开发一个app,我将使用android NDK和JNI.每当我在任何Android 4.0或更高版本上运行我的应用程序...我的应用程序将崩溃并给出以下错误...

A/libc(18556): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1)
D/libEGL(18606): loaded /system/lib/egl/libGLES_android.so
D/libEGL(18606): loaded /system/lib/egl/libEGL_adreno200.so
D/libEGL(18606): loaded /system/lib/egl/libGLESv1_CM_adreno200.so
D/libEGL(18606): loaded /system/lib/egl/libGLESv2_adreno200.so
I/Adreno200-EGLSUB(18606): <ConfigWindowMatch:2078>: Format RGBA_8888.
D/OpenGLRenderer(18606): Enabling debug mode 0
Run Code Online (Sandbox Code Playgroud)

主要问题是 Fatal signal 11 (SIGSEGV) at 0xdeadbaad(code=1)

如果有人知道这个...然后告诉我原因.

jcm*_*jcm 0

最初,分段错误,特别是 0xdeadbaad,意味着内存损坏或类似的情况,但我最近发现,使用 NDK,这也是断言的默认行为:在断言失败时,它发送 SIGSEGV,而不是 SIGTRAP,并且将内存指针设置为该十六进制字符串。

您应该检查您的代码是否正在调用断言,或者如果您使用第三方软件,请检查您是否向每个调用传递了正确的值。检查此问题的快速方法是将 NDEBUG 设置为 1 来构建库(默认情况下,如果您在 Application.mk 中设置 APP_OPTIM := release),并检查您是否仍然遇到完全相同的问题。

希望这可以帮助。