模板名称

  • Android源码编译命令汇总
  • 1. 概述
  • 2. 编译命令
  • 1. 初始化编译环境
  • 2. 编译源码(全编)
  • 3. 编译源码
  • 3.1. 代码编译
  • 3.1.1. m 在源码树的根目录执行编译
  • 3.1.2. mm 编译当前路径下所有模块,但不包含依赖
  • 3.1.3. mmm 编译指定路径下的所有模块
  • 3.1.4. mma 编译当前路径下所有模块,且包含依赖
  • 3.1.5. mmma [module_path] 编译指定路径下所有模块,且包含依赖
  • 3.1.6. make [module_name] 无参数,则表示编译整个Android代码
  • 3.2. 部分模块示例:
  • 3.3. 注意
  • 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
  • 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 为模块的名称。
  • 7.1.14. make clean- 清理一个指定模块的编译结果。
  • 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


Android源码编译命令汇总

提示:
博主:_ 小小码nong


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命令

init

make init mmm

system/core/init

zygote

make app_process

mmm frameworks/base/cmds/app_process

system_server

make services

mmm frameworks/base/services

java framework

make framework

mmm frameworks/base

framework资源

make framework-res

mmm frameworks/base/core/res

jni framework

make libandroid_runtime

mmm frameworks/base/core/jni

binder

make libbinder

mmm frameworks/native/libs/binder

RefBase等

make libutils

mmm framworks/base/libs/utils

Looper等

make framework

mmm framworks/base

AudioTrack

make libmedia

mmm framworks/base/media/kibmedia

AudioFlinger

make libaudiofliginger

mmm framworks/base/libs/audioflinger

AudioPolicyService

make libaudiopolicy

mmm hardware/msm7k/libaudio-qsd8k

SurfaceFlinger

make libsurfaceflinger

mmm frameworks/base/libs/surfaceflinger

Vold

make vold

mmm system/vold

Rild

make rild

mmm hardware/ril/rild

MediaProvider

make MediaProvider

mmm packages/providers/MediaProvider

Phone

make phone

mmm 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文件里面去进行查找的。