在利用NDK编译静态库的过程中,发现一个很奇怪的问题,Android.mk片段如下:
# libtde
include $(CLEAR_VARS)
LOCAL_MODULE := libtde
LOCAL_C_INCLUDES := $(LOCAL_PATH)/msp/common/include/
LOCAL_C_INCLUDES += $(LOCAL_PATH)/msp/mpi/include/
LOCAL_C_INCLUDES += $(LOCAL_PATH)/msp/graphics/tde/include/
LOCAL_C_INCLUDES += $(LOCAL_PATH)/msp/graphics/tde/driver/include/
LOCAL_C_INCLUDES := $(LOCAL_PATH)/msp_base/common/include/
LOCAL_C_INCLUDES += $(LOCAL_PATH)/msp_base/mpi/include/
LOCAL_C_INCLUDES += $(LOCAL_PATH)/msp_base/graphics/tde/include/
LOCAL_C_INCLUDES += $(LOCAL_PATH)/msp_base/graphics/tde/driver/include/
LOCAL_SRC_FILES := msp/graphics/tde/api/hi_api_tde.c
include $(BUILD_SHARED_LIBRARY)
如上编译动态库没有问题,但是如果把BUILD_SHARED_LIBRARY变为BUILD_STATIC_LIBRARY,没有任何报错,但是就是不生成libtde.a,后来发现问题所在,
如果在Android.mk中还有其他模块需要编译,而此模块依赖libtde.a那么就会生成libtde.a,否则便不生成,还有两一种情况,如果Android.mk中没有其他模块依赖libtde.a而我们又需要libtde.a那么我们可以在Appliacation.mk中添加APP_MODULES := libtde,即可。