1. Android.mk实例
LOCAL_PATH:= $(call my-dir) #位于最开始,用来为定位源文件的位置$(call my-dir)的作用就是返回当前目录的路径。
include $(CLEAR_VARS) #清除一些变量的值,但是LOCAL_PATH除外。
LOCAL_MODULE := fp_identify #用来指定当前待编译模块的名称。
LOCAL_SRC_FILES := libfp_identify.so #第三方库
include $(PREBUILT_SHARED_LIBRARY) #表示引用第三方库
include $(CLEAR_VARS)
LOCAL_SRC_FILES := com_FingerMechine_FingerMechine.c #用来指定参与编译的源代码文件
LDFLAGS = -llog -shared #加上Log功能
#LOCAL_CFLAGS := -DANDROID
#LOCAL_CFLAGS += -Wno-sequence-point -Wno-extra
LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include #指定头文件的路径
LOCAL_MODULE:= fp_jni_module
LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog #引用外部库文件,-L指定该lib文件的存放路径
#LOCAL_SHARED_LIBRARIES:=liblog libcutils
LOCAL_SHARED_LIBRARIES := libfp_identify #在顶层.mk中写入引入的第三方库
include $(BUILD_SHARED_LIBRARY) #编译生成动态库
include $(CLEAR_VARS)
LOCAL_SRC_FILES := com_LEDController_Gpio.c
LDFLAGS = -llog -shared
LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
LOCAL_MODULE:= gpio_jni_module
LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog #表示告诉链接器生成的模块要在加载时刻链接到/system/usr/lib/liblog.so
include $(BUILD_SHARED_LIBRARY) #用来指示将当前模块编译为共享库,加前缀lib,后缀.so
2、定义多个Android.mk文件。
有的时候,需要编译的模块比较多,我们可能会将对应的模块放置在相应的目录中,这样,我们可以在每个目录中定义对应的Android.mk文件(类似于上面的写法),最后,在根目录放置一个Android.mk文件,内容如下:
include $(call all-subdir-makefiles)
只需要这一行就可以了,它的作用就是包含所有子目录中的Android.mk文件