1、LOCAL_PATH:= $(callmy-dir)
‘:=’是赋值的意思,LOCAL_PATH 定义了当前模块的相对路径,必须出现在所有的编译模块之前。它用于在开发树中查找源文件。在这个例子中,宏函数’my-dir’, 由编译系统提供,用于返回当前路径(即包含Android.mk file文件的目录)。
2、include $( CLEAR_VARS)
CLEAR_VARS由编译系统提供,指定让GNU MAKEFILE为你清除许多LOCAL_XXX变量(例如 LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES, 等等...),
除LOCAL_PATH 。这是必要的,因为所有的编译控制文件都在同一个GNU MAKE执行环境中,所有的变量都是全局的。
每个编译模块由include $(CLEAR_VARS) 开始,由include $(BUILD_XXX) 结束
3、LOCAL_JACK_ENABLED:=disabled
LOCAL_JACK_ENABLED有三种模式,即分别是disabled,full和incremental。disabled是指关闭JACK编译,使用android old toolchain。full是指全部编译,即每次编译,都会将所有的code全部编译。incremental是指增量编译,即只会编译修改的代码。incremental模式默认是关闭的,需要设置。
不加本行会生成clasess.jack而非clasess.jar。
4、LOCAL_MODULE := helloworld
LOCAL_MODULE变量必须定义,以标识你在Android.mk文件中描述的每个模块。名称必须是唯一的,而且不包含任何空格。注意编译系统会自动产生合适的前缀和后缀,换句话说,一个被命名为'foo'的共享库模块,将会生成'libfoo.so'文件。
5、LOCAL_SRC_FILES := $(call all-subdir-java-files)
定义了本模块编译使用的源文件,采用的是基于LOCAL_PATH的相对路径
6、LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_TAGS :=user eng tests optional
- user: 指该模块只在user版本下才编译
- eng: 指该模块只在eng版本下才编译
- tests: 指该模块只在tests版本下才编译
- optional:指该模块在所有版本下都编译
7、LOCAL_PRIVILEGED_MODULE :=true
LOCAL_PRIVILEGED_MODULE := true 表示app应用在目录/system/priv-app/下
LOCAL_PRIVILEGED_MODULE := false 表示app应用在目录/system/app/下
8、DEVICE_PACKAGE_OVERLAYS := \
device/samsung/avl7580/overlay
‘\’表示连接符,DEVICE_PACKAGE_OVERLAYS可以设定路径,起到的作用就是替换掉原来的目录中的资源,比如图片等等,惟一的要求就是必须建立和原来图片位置相同的路径
有两种不同的overaly目录定义,来影响最终的效果:
PRODUCT_PACKAGE_OVERLAYS: used by a particular product
DEVICE_PACKAGE_OVERLAYS: used several products that share a common device model
如果包含同一资源,那么 PRODUCT_PACKAGE_OVERLAYS 将覆盖 DEVICE_PACKAGE_OVERLAYS
9、LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 android-support-v13
当前模块依赖的java静态库,这项不是必须的。
include $(CLEAR_VARS)
LOCAL_STATIC_JAVA_LIBRARIES := aa
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := aa:libs/aa.jar
include $(BUILD_MULTI_PREBUILT)
10、LOCAL_CERTIFICATE := platform
(1)AndroidManifest.xml的manifest节点中添加 android:sharedUserId=”android.uid.system”,
Android.mk中增加 LOCAL_CERTIFICATE := platform
(2)shared签名:
AndroidManifest.xml的manifest节点中增加android:sharedUserId=”android.uid.shared”,
Android.mk中增加LOCAL_CERTIFICATE := shared
(3)media签名:
AndroidManifest.xml的manifest节点中增加 android:sharedUserId=”android.media”,
Android.mk中增加 LOCAL_CERTIFICATE := media
11、LOCAL_RESOURCE_DIR += \
$(LOCAL_PATH)/res \
$(LOCAL_PATH)/res_p
资源目录
12、include $(BUILD_STATIC_JAVA_LIBRARY)
编译目标 | 说明 |
BUILD_HOST_STATIC_LIBRARY | 主机上的静态库 |
BUILD_HOST_SHARED_LIBRARY | 主机上的动态库 |
BUILD_HOST_EXECUTABLE | 主机上的可执行文件 |
BUILD_STATIC_LIBRARY | 目标设备上的静态库 |
BUILD_SHARED_LIBRARY | 目标设备上的动态库 |
BUILD_EXECUTABLE | 目标设备上的可执行文件 |
BUILD_JAVA_LIBRARY | JAVA库 |
BUILD_STATIC_JAVA_LIBRARY | 静态JAVA库 |
BUILD_HOST_JAVA_LIBRARY | 主机上的JAVA库 |
BUILD_PACKAGE | APK程序 |
参考: