Makefile学习(9)

最近忙啊,好久没有写博客了,都不知道如何写了,今天就随便写点,不要介意哈!


我们就了解一下Android.mk文件中的内容啦!


LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(call all-java-files-under, src)

LOCAL_STATIC_JAVA_LIBRARIES := com.android.phone.common

LOCAL_PACKAGE_NAME := Contacts
LOCAL_CERTIFICATE := shared

LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags

include $(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库等其他程序。

 

 

就写到这了,其中有些也不是很了解。后续继续深入学习!!!!!

 

 

 

 

 


你可能感兴趣的:(makefile)