看了网上一堆的Android 的编译资料,但是很多问题一直搞不清1.按照说明加一个模块test, 输入make test ,就能编译test了,那么test 是如何被找到的呢?这一过程是怎样的?envsetup.sh 和 main.mk 之间又是怎样的关系?
2.make snod 就可以生成system.img.snod 在哪定义的?

解决方案 »

  1.   

    每次编译的时候会通过下面的函数来遍历所有子目录中的Android.mk
    subdir_makefiles += /
        $(shell build/tools/findleaves.sh --prune="./out" $(subdirs) Android.mk)这一过程大致可以描述成:
    a.根据goal找Android.mk
    b.判断是否进编译系统
    c.开始编译envsetup.sh 与 main.mk之间没有必然联系,运行./build/envsetup.sh 目的是为了使用脚本 envsetup.sh 里面定义的一些函数,这些函数中与main.mk有点关系的就是choosecombo,tapas等几个命令,用于设置产品属性等相关的宏,这些值在编译的时候会用到
    snod的定义就不多说了,你可以使用mgrep snod自己找哦