Android Build System详解

Android Build System Architecture

       其中$(TOP)/Makefile位于android的顶层目录中。其它Makefile文件均位于$(TOP)/build/core目录下 Android Build System详解_第1张图片

Initialize the environment

       初始化编译环境使用的是$(TOP)/build/envsetup.sh脚本。
envsetup.sh提供的函数如下:
          
函数 功能
hmm 帮助命令,envsetup.sh提供的函数的用法
get_abs_build_var  
get_build_var  
check_product  
check_variant  
setpaths  
printconfig  
set_stuff_for_environment  
set_sequence_number  
settitle  
addcompletions  
choosetype  
chooseproduct  
choosevariant  
choosecombo  
add_lunch_combo  
print_lunch_menu  
lunch  
_lunch  
tapas  
gettop  
getdriver  
m 从顶层目录build整个系统
mmm build指定目录下所有的模块
mma build当前目录下所有的模块以及这些模块所依赖的模块
mmma build指定目录下所有的模块以及这些模块所依赖的模块
croot 到android所在的顶层目录
cproj  
qpid  
pid  
systemstack  
stacks  
gdbwrapper  
sgrep  
gettargetarch  
jgrep  
cgrep  
resgrep  
mangrep  
sepgrep  
mgrep  
treegrep  
getprebuilt  
tracedmdump  
runhat  
getbugreports  
getsdcardpath  
getscreenshotpath  
startviewserver  
isviewserverstarted  
key_home  
key_back  
key_menu  
smoketest  
runtest  
godir  
set_java_home  
pez  
findnmakefile  
gdbcleint  
 

# Clear this variable.  It will be built up again when the vendorsetup.sh
# files are included at the end of this file.
unset LUNCH_MENU_CHOICES
function add_lunch_combo()
{
    local new_combo=$1
    local c
    for c in ${LUNCH_MENU_CHOICES[@]} ; do 
        if [ "$new_combo" = "$c" ] ; then 
            return
        fi   
    done 
    LUNCH_MENU_CHOICES=(${LUNCH_MENU_CHOICES[@]} $new_combo)
}

# add the default one here
add_lunch_combo aosp_arm-eng
add_lunch_combo aosp_x86-eng
add_lunch_combo aosp_mips-eng
add_lunch_combo aosp_x86_64-eng
add_lunch_combo vbox_x86-eng
    调用add_lunch_combo函数将 combo配置到LUNCH_MENU_CHOICES变量中。lunch命令就是选择combo。
# Execute the contents of any vendorsetup.sh files we can find.
for f in `test -d device && find device -maxdepth 4 -name 'vendorsetup.sh' 2> /dev/null` \
         `test -d vendor && find vendor -maxdepth 4 -name 'vendorsetup.sh' 2> /dev/null`
do
    echo "including $f"
    . $f
done
unset f
    搜索device目录下所有的vendorsetup.sh,并执行。下面是ti的vendorsetup.sh的例子:
add_lunch_combo  full_panda-userdebug
  其中full_panda-userdebug分为两部分,一部分是product name:full_panda,一部分是Build variant:userdebug. build variant共有三种选择分别是user, userdebug, eng

eng:工程机
user:最终用户机
userdebug:调试测试机
编译环境设置完成后,就可以编译整个android系统。



你可能感兴趣的:(Android,Makefile)