android build system

1.config.mk

  定义标准源文件路径:Standard source directories(such as:SRC_HEADERS)

  include $(BUILD_SYSTEM)/pathmap.mk

Build system internal files(such as:CLEAR_VARS BUILD_EXECUTABLE)

include $(BUILD_SYSTEM)/envsetup.mk

Generic tools

2.base_rules.mk

   对模块进行处理的基础文件

3.Android.mk

   Android进行编译的时候会通过下面的函数来遍历所有子目录中的Android.mk,一旦找到就不会再往层子目录继续寻找(所有你的模块定义的顶层Android.mk必须包含自己定义的子目录中的Android.mk)

Android通过LOCAL_MODULE_TAGS来决定哪些本地模块会不会编译进系统,通过PRODUCT和LOCAL_MODULE_TAGS来决定哪些应用包会编译进系统,如果用户不指定LOCAL_MODULE_TAGS,默认它的值是user。此外用户可以通过buildspec.mk来指定你需要编译进系统的模块。

4.build/core/Makefile

定义了生成各种img的方式,包括ramdisk.img   userdata.img  system.img  update.zip  recover.img等


所有的Makefile都通过build/core/main.mk这个文件组织在一起,它定义了一个默认goals:droid,当我们在TOP目录下敲Make实际上就等同于我们执行make droid。当Make include所有的文件,完成对所有make文件的解析以后就会寻找生成droid的规则,依次生成它的依赖,直到所有满足的模块被编译好,然后使用相应的工具打包成相应的img。

  

你可能感兴趣的:(android)