Android.mk的作用
Android.mk是Android提供的一个makefile文件,可以将源文件分组为模块。用来引用的头文件目录、需要编译的*.c/.cpp文件、jni源文件、指定编译生成.so共享库文件或者*.a静态库文件,可以定义一个或多个模块,也可以多个模块中使用同一个源文件;
Android.mk语法
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello.cpp
include $(BUILD_SHARED_LIBRARY)
以LOCAL_PATH变量开始 LOCAL_PATH := $(call my-dir)
紧接着是CLEAR_VARS变量 include $(CLEAR_VARS)
接下来LOCAL_MODULE变量,定义来将要输出的so文件的名,默认情况下,输出的so为 lib+LOCAL_MODULE变量值+.so,如果变量值前面有了lib,就不会加了,或者变量值后面有.xxx,也会去掉。
接下来是LOCAL_SRC_FILES变量,声明我们的原文件路径,如LOCAL_SRC_FILES := hello-jni.c
最后一行是帮助构建系统联系在一起的。include $(BUILD_SHARED_LIBRARY)
————————————————
构建系统提供了许多变量和宏
基本语法
LOCAL_MODULE_TAGS := optional
user: 指该模块只在user版本下才编译
eng: 指该模块只在eng版本下才编译
tests: 指该模块只在tests版本下才编译
optional:指该模块在所有版本下都编译
默认,optional。