Android源码编译命令汇总

模板名称

Android源码编译命令汇总

提示:
博主:_ 小小码nong
博客地址:http://blog.csdn.net/qq_29924041


1. 概述

   以下命令都是我在编译过程中相对比较常用的一些命令汇总



2. 编译命令

1. 初始化编译环境

   source build/envsetup.sh //指定此次编译的目标设备以及编译类型

2. 编译源码(全编)

   lunch //指定此次编译的目标设备以及编译类型
   make -j12 //开始编译,默认为编译整个系统,其中-j12代表的是编译的job数量为12



3. 编译源码

3.1. 代码编译

3.1.1. m 在源码树的根目录执行编译

   主要是在源码树下面执行编译,编译的是根目录下所有的代码

3.1.2. mm 编译当前路径下所有模块,但不包含依赖

   编译当前路径下所有模块,但是不包含依赖关系

3.1.3. mmm 编译指定路径下的所有模块

   mmm [module_path] 编译指定路径下所有模块,但不包含依赖

3.1.4. mma 编译当前路径下所有模块,且包含依赖

   编译当前路径下的所有模块,包含依赖模块的编译

3.1.5. mmma [module_path] 编译指定路径下所有模块,且包含依赖

   编译指定路径下的所有的模块,并且会把依赖模块也给编译一遍

3.1.6. make [module_name] 无参数,则表示编译整个Android代码

   如果没有参数,默认是编译整个代码,如果有module_name,是会遍历module,编译指定的module


3.2. 部分模块示例:

模块make命令mmm命令
initmake init mmmsystem/core/init
zygotemake app_processmmm frameworks/base/cmds/app_process
system_servermake servicesmmm frameworks/base/services
java frameworkmake frameworkmmm frameworks/base
framework资源make framework-resmmm frameworks/base/core/res
jni frameworkmake libandroid_runtimemmm frameworks/base/core/jni
bindermake libbindermmm frameworks/native/libs/binder
RefBase等make libutilsmmm framworks/base/libs/utils
Looper等make frameworkmmm framworks/base
AudioTrackmake libmediammm framworks/base/media/kibmedia
AudioFlingermake libaudiofligingermmm framworks/base/libs/audioflinger
AudioPolicyServicemake libaudiopolicymmm hardware/msm7k/libaudio-qsd8k
SurfaceFlingermake libsurfaceflingermmm frameworks/base/libs/surfaceflinger
Voldmake voldmmm system/vold
Rildmake rildmmm hardware/ril/rild
MediaProvidermake MediaProvidermmm packages/providers/MediaProvider
Phonemake phonemmm packages/apps/Phone

总结:
   上述mmm命令同样适用于mm/mma/mmma,编译系统采用的是增量编译,只会编译发生变化的目标文件。当需要重新编译所有的相关模块,则需要编译命令后增加参数-B,比如make -B [module_name],或者 mm -B [module_path]。


3.3. 注意

1:对于m、mm、mmm、mma、mmma这些命令的实现都是通过make方式来完成的。

2:mmm/mm编译的效率很高,而make/mma/mmma编译较缓慢;

3:make/mma/mmma编译时会把所有的依赖模块一同编译,但mmm/mm不会;

建议:首次编译时采用make/mma/mmma编译;当依赖模块已经编译过的情况,则使用mmm/mm编译。



4. 代码搜索命令

4.1. 搜索命令

4.1.1. cgrep 所有C/C++文件执行搜索操作
4.1.2. jgrep 所有Java文件执行搜索操作
4.1.3. ggrep 所有Gradle文件执行搜索操作
4.1.4. mangrep [keyword] 所有AndroidManifest.xml文件执行搜索操作
4.1.5. mgrep [keyword] 所有Android.mk文件执行搜索操作
4.1.6. sepgrep [keyword] 所有sepolicy文件执行搜索操作
4.1.7. resgrep [keyword] 所有本地res/*.xml文件执行搜索操作
4.1.8. sgrep [keyword] 所有资源文件执行搜索操作

5. 导航指令

5.1 代码目录切换命令

5.1.1. croot 切换至Android根目录
5.1.2. cproj 切换至工程的根目录
5.1.3. godir [filename] 跳转到包含某个文件的目录

6. 信息查询

6.1. 信息查询指令

6.1.1. hmm 查询所有的指令help信息
6.1.2. findmakefile 查询当前目录所在工程的Android.mk文件路径
6.1.3. print_lunch_menu 查询lunch可选的product
6.1.4. printconfig 查询各项编译变量值
6.1.5. gettop 查询Android源码的根目录
6.1.6. gettargetarch 获取TARGET_ARCH值

7. make指令

7.1. 所有make指令

7.1.1. make clean:执行清理操作,等价于 rm -rf out/
7.1.2. make update-api:更新API,在framework API改动后需执行该指令,Api记录在目录frameworks/base/api;
7.1.3. make sdk 编译出 Android 的 SDK。
7.1.4. make clean-sdk 清理 SDK 的编译产物
7.1.5. make update-api 更新 API

    在 framework API 改动之后,需要首先执行该命令来更新 API,公开的 API 记录在 frameworks/base/api 目录下。

7.1.6. make dist 执行 Build,并将 MAKECMDGOALS 变量定义的输出文件拷贝到 /out/dist 目录
7.1.7. make all 编译所有内容,不管当前产品的定义中是否会包含。
7.1.8. make help 帮助信息,显示主要的 make 目标。
7.1.9. make snod 从已经编译出的包快速重建系统镜像。
7.1.10. make libandroid_runtime 编译所有 JNI framework 内容
7.1.11. make framework 编译所有 Java framework 内容
7.1.12. make services 编译系统服务和相关内容。
7.1.13. make <local_target> 编译一个指定的模块,local_target 为模块的名称。
7.1.14. make clean-<local_target> 清理一个指定模块的编译结果。
7.1.15. make dump-products 显示所有产品的编译配置信息,

    例如:产品名,产品支持的地区语言,产品中会包含的模块等信息。

7.1.16. make PRODUCT-xxx-yyy 编译某个指定的产品。
7.1.17. make bootimage 生成 boot.img
7.1.18. make recoveryimage 生成 recovery.img
7.1.19. make userdataimage 生成 userdata.img
7.1.20. make cacheimage 生成 cache.img
7.1.21. make otapackage 生成升级包
7.1.22. make systemimage 编译生成system.img





   以上主要是一些常用的编译命令    对于具体的module,其实还是需要在mk文件里面去进行查找的。


欢迎继续访问,我的博客
  • 8
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android源码编译命令包括以下几个步骤: 1. 在Android源码根目录下执行build/envsetup.sh脚本,该脚本用于设置Android编译环境。\[1\] 2. 使用lunch命令选择要编译的目标。\[1\] 3. 使用make命令编译整个Android系统。\[1\] 此外,还有一些其他的编译命令可以使用: - 使用m命令对整个Android源代码进行编译,它是对make命令的简单封装。\[2\] - 使用mm命令Android源码中的指定模块进行编译,它也是通过make命令来实现的。\[2\] - 使用mmm命令Android源码中的指定模块进行编译,与mm命令类似,但需要指定Android.mk文件的相对路径。\[2\]\[3\] 综上所述,编译Android源码的常用命令包括build/envsetup.sh、lunch和make,而m、mm和mmm命令是对make命令的封装,用于更方便地编译Android源码或指定模块。 #### 引用[.reference_title] - *1* [android平台的三个编译命令----make,mm,mmm](https://blog.csdn.net/xiangyuxiangyu123/article/details/54098153)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Android源代码编译命令m/mm/mmm/make分析【转载】](https://blog.csdn.net/weixin_30411997/article/details/95102327)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值