别裁伪体亲风雅,转益多师是汝师。这篇文章主要讲述Android中mmmmmmmmammma的区别相关的知识,希望能为你提供帮助。
m:编译整个安卓系统
makes from the top of the tree
mm:编译当前目录下的模块,当前目录下需要有Android.mk这个makefile文件,否则就往上找最近的Android.mk文件。
builds all of the moudles in the current directory
mma:当前目录新增或删除文件后,可以用mma重新编译。
mmm:编译指定路径下的模块,指定的路径下面需要有android.mk这个makefile文件
builds all of the moudles in the supplies directory
mmma:指定目录下新增或删除文件后,可以用mmma重新编译。
mmm命令
的编译过程:
build/core/main.mk(是android编译系统的入口文件)
->
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中mmmmmmmmammma的区别】使用这些编译命令,首先需要在Android根目录下配置环境
[plain]
view plain
copy
- #source build/envsetup.sh 要确保当前根目录下有envsetup.sh脚本文件
- #choose... 对环境的选择
- #cd (要编译模块所在的目录)
- #mm(mma、mmm、mmma) -B -j2 2> & 1 开始编译模块
- 注:-B表示编译模块的所有文件,-j2表示编译的时候开启两个线程,2> & 1表示将错误切换到输出(输入为0,输出为1,错误为2)。
- envsetup.sh脚本文件里包含vendorsetup.sh 、lunch、 m mm mmm的定义
推荐阅读
- Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f070058 android-studio 3
- 改变this指向的call,apply,bind方法
- [区别]APPlication,Session,Cookie,ViewState和Cache
- Android ButterKnife注解框架使用
- Android 中间人攻击
- 在Android程序中使用已有的SQLite数据库
- Cocos2d-x 3.1.1 学习日志12--一Cocos2dx3.1.1移植到Android平台的方法(最实用最有效的!!)
- Android技术归档
- Android视音频编码器——cameraYUVAudioRecordPCM分别编码后muxer成mp4