envsetup lunch mm mmm

1. MakeFile需要是整体一个,而不是每个模块一个。是一个总分关系,每个模块只有自己的片段。

2. envsetup.sh

    1)将device目录下的厂商的配置信息也导入进来。

    2)提供m mm mmm lunch adb 等命令

3. lunch

    1)选择厂商配置信息,目标产品平台

    2)make build/core/config.mk (sub:BoradConfig.mk) && buid/core/dumpvar.mk

      还记得WITH_DEXOPT这个参数就配置在build目录下的各设备的BoradConfig.mk中哦。

4. mm

    1) 在源代码根目录下,无异于make。

    2) 在子目录下,则从上级开始找Android.mk开始找,然后调用make

    注:一个mk文件可能包含多个module。mm默认是全module编译。

 

5. mmm

    后跟目录,每个目录必须有Android.mk文件,还是mmm比较让人省心啊。可以指定模块。

    这货首先会加载build/core/main.mk (入口)

     1) +buld/core/config,根据lunch命令的配置信息找相应目录BoradConfig.mk等

        (但是根据我的测试,印象中mm也是会及时将BoradConfig.mk中的东西搞进来啊。用Email模块做测试时)

     2) + 指定Android.mk

                 build/core/shared_library.mk说 Android.mk中如没有定义LOCAL_MODULE_PATH

简单而言,envsetup大哥最牛逼,读所有平台配置,提供牛逼工具们。小弟launch负责选平台,加特定平台信息。

小妹mmm每次先依靠main.mk来读取小弟的平台信息,然后再搞小妹自己的android.mk.

 

LOCAL_SYSTEM_SHARED_LIBRARIES 隐藏的系统链接库

LOCAL_SHARED_LIBRARIES SDK的系统链接库

 

2017/03/08:

app追加:追加一个app时,在xxxcore.mk里增加要编译的目录,才会整体make时生成相应的APK。

整体make,其实也是一个增量make,并不是全编译的节奏。

app可以设置权限,如果要操作其他app的部分操作,需要声明该app定义的权限。

posted @ 2017-03-02 16:49  mlrs  阅读(322)  评论(0编辑  收藏  举报