Android 编译时:m、mm、mmm、mma、mmma的区别

 

m:编译整个安卓系统css

     makes from the top of the treejava

mm:编译当前目录下的模块,当前目录下须要有Android.mk这个makefile文件,不然就往上找最近的Android.mk文件。python

         builds all of the moudles in the current directoryapp

         mma:当前目录新增或删除文件后,能够用mma从新编译。ui

mmm:编译指定路径下的模块,指定的路径下面须要有Android.mk这个makefile文件spa

             builds all of the moudles in the supplies directory线程

mmma:指定目录下新增或删除文件后,能够用mmma从新编译。 // 未全编译的状况系下,能够使用该命令单编译模块code

            mmm命令 的编译过程:it

            build/core/main.mk(是Android编译系统的入口文件)io

           ->build/core/config.mk(会定好编译类型和目标文件)

                                                      ->build/core/definitions.mk(定义在编译过程当中用到的宏)

                                                      ->ONE_SHOT_MAKEFILE->build/core/package.mk(编译Apk库文件)

                                                                                                 ->build/core/java_library.mk(编译Java库文件)

                                                                                                 ->build/core/static_java_library.mk(编译Java静态库文件)

                                                                                                 ->build/core/shared_library.mk->build/core/dynamic_library.mk->build/core/binary.mk->build/core/base_rules.mk

                                                                                                                                                                                         ( 计算一些基本变量的值,并建立一些基本的依赖规则)

                                                                                                                                                  ->build/core/static_library.mk(编译.a静态库文件)

                                                                                                                                                  ->build/core/executable.mk(编译可执行文件)

                                                                                                                                                  ->build/core/prebuilt.mk(编译已经预编译好的第三方库文件)

                                                                                                 ->build/core/Makfile(有system.img、boot.img、recovery.img等镜像文件生成规则)

             环境变量ONE_SHOT_MAKEFILE中存放要编译模块的Android.mk的文件路径,若是环境变量值为空,表示执行的是m或者make命令,会对Android源代码中的全部模块进行编译。

 

mm、mmm是相似的,都是用来编译某些模块。

使用这些编译命令,首先须要在Android根目录下配置环境

#source build/envsetup.sh   要确保当前根目录下有envsetup.sh脚本文件
#lunch ... 对工程的选择
#cd (要编译模块所在的目录)
#mm(mma、mmm、mmma) -B -j2 2>&1   开始编译模块
注:-B表示编译模块的全部文件,-j2表示编译的时候开启两个线程,2>&1表示将错误切换到输出(输入为0,输出为1,错误为2)。
 envsetup.sh脚本文件里包含vendorsetup.sh 、lunch、 m mm mmm的定义

 

mmm 和 mm 区别:

mmm package/apps/DeskClock

cd package/apps/DeskClock ,而后再mm

相关文章
相关标签/搜索