Android - 本机代码仅在模拟器上触发SIGILL

时间:2013-03-01 14:47:34

标签: android native-code fault

我的应用程序仅在我在模拟器上运行时触发SIGILL错误。该应用程序正在使用ActionBarSherlock,最低SDK目标是API级别8.当执行本机代码时会触发故障(应用程序的其余部分,用Java编写,似乎有效)。我尝试了许多不同的模拟器设置但没有成功。没有特定的代码是错误的。如果我评论错误的函数,则SIGILL由某个其他点的其他函数触发。我使用宏LOGI在控制台上编写内容,并正确调用本机代码函数。我完全不知道发生了什么。该应用程序在两个不同的手机上运行完美(运行android 2.3.4的armv6 rev 5和运行android 4.0.3的armv7 rev 9)。本机代码是我在Windows桌面系统上编写和测试的库,它可以正常工作。 救命啊!

Android.mk

OCAL_PATH := $(call my-dir)    
include $(CLEAR_VARS)    
#LOCAL_CFLAGS     := -DANDROID_NDK -Wno-psabi
LOCAL_C_INCLUDES += png++/ 
LOCAL_C_INCLUDES += libpng/
LOCAL_C_INCLUDES += zlib/
LOCAL_MODULE    := mylib
LOCAL_SRC_FILES := /* a list of .cpp files... */
LOCAL_SRC_FILES += $(wildcard ./*.c)
LOCAL_SRC_FILES += $(wildcard ./zlib/*.c)
LOCAL_SRC_FILES += $(wildcard ./libpng/*.c)
LOCAL_LDLIBS := -llog
LOCAL_LDLIBS += -ljnigraphics
LOCAL_CFLAGS += -marm -march=armv6 -mfloat-abi=softfp -mfpu=vfp -fpermissive -fwrapv -O2 -fexceptions    
include $(BUILD_SHARED_LIBRARY)

Application.mk

APP_STL := gnustl_static
APP_OPTIM := release
APP_CPPFLAGS += -frtti

1 个答案:

答案 0 :(得分:0)

我有类似的问题。我放弃了尝试模拟器;我认为这与Android模拟器上的ARMv6支持有关。由于我也在设备上工作,我不再关心这个问题。