Makefile学习(9)
最近忙啊,好久没有写博客了,都不知道如何写了,今天就随便写点,不要介意哈!
我们就了解一下Android.mk文件中的内容啦!
LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := $(call all-java-files-under, src)LOCAL_STATIC_JAVA_LIBRARIES := com.android.phone.commonLOCAL_PACKAGE_NAME := ContactsLOCAL_CERTIFICATE := sharedLOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flagsinclude $(BUILD_PACKAGE)# Use the folloing include to make our test apk.include $(call all-makefiles-under,$(LOCAL_PATH))
?
我们对以上代码解释一下:
1.? LOCAL_PATH := $(call my-dir)
作用:用于在查找源文件。其中“my-dir”是由编译系统提供的宏函数,用于返回当前的路径(即包含Android.mk的文件目录)。
2.? include $(CLEAR_VARS)
作用:清除许多LOCAL_XXX变量(例如:LOCAL_MODULE,LOCAL_SRC_FILES等等)。其中“CLEAR_VARS”是由编译系统提供的。我们可以在android的目录下的/build/core/config.mk文件中看到其定义,为CLEAR_VARS :=$(BUILD_SYSTEM)/clear_vars.mk。
3. LOCAL_MODULE_TAGS := optional
作用:指定该模块在哪个版本下编译。LOCAL_MODULE_TAGS :=user/ eng /tests/ optional
user:指定该模块只在user版本下才编译
eng:指定该模块只能在eng版本下才编译
tests:指定该模块只能在tests版本下才编译
optional:指该模块在所有版本下都编译
?
4. LOCAL_SRC_FILES := $(call all-java-files-under, src)
这是要编译的源代码文件列表。只要列出要传递给编译器的文件,因为编译系统会自动计算依赖。
all-java-files-under在definitions.mk中定义(在build/core中)
?
5. LOCAL_STATIC_JAVA_LIBRARIES := com.android.phone.common
作用:引入第三方jar包
语法:LOCAL_STATIC_JAVA_LIBRARIES :=library_name
其中library_name可以理解为一个命名空间
所以引入com.android.phone.common,这样就可以使用com.android.phone.common中的类文件了。
?
?
6. LOCAL_PACKAGE_NAME := Contacts
这个变量表示了这个包的名字,即这个文件最终生成的apk的名称
?
?
7.LOCAL_CERTIFICATE := shared
指定签名时以那种密钥签名。有platform、shared、media、testkey
?
8. LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags
作用主要是压缩、优化、混淆类文件,具体的功能还不理解。
?
9. include $(BUILD_PACKAGE)
作用是将该目录下的模块编译成package(即apk文件),默认存在/system/app下。
如果是include $(BUILD_SHARED_LIBRARY),表示将目录下的文件编译为共享库文件(即so档),默认存在/system/lib下。
?
10. include $(call all-makefiles-under,$(LOCAL_PATH))
表示需要build该目录下的子目录的文件,这样编译系统就会在当前目录下的子目录寻找Android.mk来编译so库等其他程序。
?
?
就写到这了,其中有些也不是很了解。后续继续深入学习!!!!!
?
?
?
?
?