-
1.
LOCAL_PATH:= $(call my-dir)
‘:=’是赋值的意思,LOCAL_PATH 定义了当前模块的相对路径,必须出现在所有的编译模块之前。它用于在开发树中查找源文件。在这个例子中,宏函数’my-dir’, 由编译系统提供,用于返回当前路径(即包含Android.mk file文件的目录)。 -
include$(CLEAR_VARS)
CLEAR_VARS由编译系统提供,指定让GNU MAKEFILE为你清除许多LOCAL_XXX变量(例如 LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES, 等等...),
除LOCAL_PATH 。这是必要的,因为所有的编译控制文件都在同一个GNU MAKE执行环境中,所有的变量都是全局的。
每个编译模块由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_PACKAGE_NAME:= helloworld
是同一意思;
LOCAL_MODULE变量必须定义,以标识你在Android.mk文件中描述的每个模块。名称必须是唯一的,而且不包含任何空格。注意编译系统会自动产生合适的前缀和后缀,换句话说,一个被命名为'foo'的共享库模块,将会生成'libfoo.so'文件。 -
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
①AndroidManifest.xml的manifest节点中添加android:sharedUserId=”android.uid.system”
,
Android.mk中增加LOCAL_CERTIFICATE := platform
这里是平台使用的签名,和系统同进程
②shared签名:
AndroidManifest.xml的manifest节点中增加android:sharedUserId=”android.uid.shared”
,
Android.mk中增加LOCAL_CERTIFICATE := shared
③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程序 |
- 13.
LOCAL_PROGUARD_FLAG_FILES:= proguard.flags
混淆编译;
不设置,默认使用LOCAL_PROGUARD_ENABLED := full
.即将该工程代码全部混淆
网友评论