LOCAL_PACKAGE_NAME :=---->编译后模块的名称
LOCAL_PRIVILEGED_MODULE :=true ---->编译后系统系统路径/system/priv-app/
如果不填加该属性表示编译后路径为:---->/system/app/
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, src) \
src/com/android/systemui/EventLogTags.logtags
LOCAL_STATIC_JAVA_LIBRARIES := Keyguard
LOCAL_JAVA_LIBRARIES := telephony-common
LOCAL_PACKAGE_NAME := SystemUI
LOCAL_CERTIFICATE := platform
LOCAL_PRIVILEGED_MODULE := true
===========================================================================
1. LOCAL_PATH:这个变量用于给出当前文件的路径,必须在Android.mk的开头定义,可以这样使用:LOCAL_PATH := $(call my-dir),这样这个变量不会被$(CLEAR_VARS)清除,因为每个Android.mk只需要定义一次(即使一个文件中定义了多个模块的情况下)。
2. LOCAL_SRC_FILES:当前模块包含的所有源代码文件。
3. LOCAL_MODULE:当前模块的名称,这个名称应当是唯一的,并且不能包含空格。模块间的依赖关系就是通过这个名称来引用的。
4. LOCAL_MODULE_CLASS:标识所编译模块最后放置的位置。ETC表示放置在/system/etc.目录下,APPS表示放置在/system/app目录下,SHARED_LIBRARIES表示放置在/system/lib目录下。如果具体指定,则编译的模块不会放到编译系统中,最后会在out对应product的obj目录下的对应目录中。
6. LOCAL_JAVA_LIBRARIES:当前模块依赖的Java共享库,也叫Java动态库。例如framework.jar包。
7. LOCAL_STATIC_JAVA_LIBRARIES:当前模块依赖的Java静态库,在Android里,导入的jar包和引用的第三方工程都属于Java静态库。
8. LOCAL_STATIC_LIBRARIES:当前模块在运行时依赖的静态库的名称。
9. LOCAL_SHARED_LIBRARIES:当前模块在运行时依赖的动态库的名称。
10. LOCAL_C_INCLUDES:c或c++语言需要的头文件的路径。
11. LOCAL_CFLAGS:提供给C/C++编译器的额外编译参数。
12. LOCAL_PACKAGE_NAME:当前APK应用的名称。
13. LOCAL_CERTIFICATE:签署当前应用的证书名称。
14. LOCAL_MODULE_TAGS:当前模块所包含的标签,一个模块可以包含多个标签。标签的值可能是eng、user、debug、development、optional。其中,optional是默认标签。
15. LOCAL_DEX_PREOPT:apk的odex优化开关,默认是false。 除此之外,Build系统中还定义了一些函数方便在Android.mk中使用,包括:
1. $(call my-dir):获取当前文件夹的路径。
2. $(call all-java-files-under, <src>):获取指定目录下的所有java文件。
3. $(call all-c-files-under, <src>):获取指定目录下的所有c文件。
4. $(call all-Iaidl-files-under, <src>):获取指定目录下的所有AIDL文件。
5. $(call all-makefiles-under, <folder>):获取指定目录下的所有Make文件。
6. $(call intermediates-dir-for, <class>, <app_name>, <host or target>, <common?>):获取Build输入的目标文件夹路径。
======================================================================================================
LOCAL_PACKAGE_NAME := xxx(apk的名字,如果这个值写的是Test,那么编译出来的就是Test.apk)
LOCAL_CERTIFICATE := platform (系统签名)
LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/res 使用当前目录下的资源文件
src_dirs := java/
LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs)) src_dirs是变量表示源文件在java/目录下
声明使用的java文件和资源文件地址,如果使用到aidl,需要特别声明,常见写法如下
LOCAL_SRC_FILES += \
# src/xx/xx/xx/aidl/XxxOne.aidl \
# src/xx/xx/xx//aidl/XxxTwo.aidl
引用第三方的jar包
LOCAL_STATIC_JAVA_LIBRARIES += design \
android-support-v4 \
android-support-v7-appcompat \
android-support-v7-recyclerview \
recyclerview-v7 \
itextpdf(第三方包名)
第三方的jar包要使用以下变量引用
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += \
itextpdf:libs/itextpdf-5.5.9.jar
如果使用的系统的包,需要引入他们使用的资源文件,否则会提示编译资源找不到的错误
LOCAL_RESOURCE_DIR += frameworks/support/v7/appcompat/res
LOCAL_RESOURCE_DIR += frameworks/support/v7/gridlayout/res
LOCAL_RESOURCE_DIR += frameworks/support/v7/recyclerview/res
LOCAL_RESOURCE_DIR += frameworks/support/design/res
--srb