主要分析各种版本需要编译的模块都有哪些,有其他需求的话,可以找到对应模块下面的android.mk,看其具体需要编译哪些文件
1. 根下的makefile
指向include build/core/main.mk
2.build/core/main.mk 确定SDK版本和真机版各需要编译的文件
#确定是SDK版本
ifeq ($(HOST_OS),windows)
SDK_ONLY := true
endif
ifeq ($(SDK_ONLY),true)
include $(TOPDIR)sdk/build/sdk_only_whitelist.mk
include $(TOPDIR)development/build/sdk_only_whitelist.mk
# Exclude tools/acp when cross-compiling windows under linux
ifeq ($(findstring Linux,$(UNAME)),)
subdirs += build/tools/acp
endif
else # !SDK_ONLY
ifeq ($(BUILD_TINY_ANDROID), true)
# TINY_ANDROID is a super-minimal build configuration, handy for board
# bringup and very low level debugging
#最小化编译真机
subdirs := \
bionic \
system/core \
system/extras/ext4_utils \
system/extras/su \
build/libs \
build/target \
build/tools/acp \
external/mksh \
external/yaffs2 \
external/zlib
else # !BUILD_TINY_ANDROID
#
# Typical build; include any Android.mk files we can find.
#
subdirs := $(TOP) #编译根目录下所有的目录,全功能的
FULL_BUILD := true
endif # !BUILD_TINY_ANDROID
endif # !SDK_ONLY