1

Android中make命令的目标

 3 years ago
source link: https://note.qidong.name/2017/08/android-make-targets/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Android中make命令的目标

2017-08-04 18:26:33 +08  字数:1157  标签: Android Makefile

make命令的Target,由Makefile决定。 一般情况下,make <TAB>可以通过Bash的补全,看到一个Makefile的所有Target。 而Android中的Makefile过于复杂,补全时会卡住,难以列出。

本文记录一些Android(8.0.0)平台项目中有用的make目标。

产物目标

Target Description all 编译Android的一切(部分Target例外)。 droid Android项目的默认Target,make droid等价于make。 droidcore Android核心的产物,如system.img、boot.img等。 snod 快速重新编译system.img。 vnod 快速重新编译vendor image。 libandroid_runtime 编译JNI framework。 framework 编译Java framework。 services 编译系统服务(Java)与相关。 apps_only Android平台自带的上层应用。 files 编译所有会真正安装到ROM中的Module。 sdk 编译生成Android SDK。 ndk 编译生成Android NDK。 docs 在out/target/common/docs生成文档。 notice_files 生成所有NOTICE文件。 javac-check 用javac(而非jack)编译java文件,需要在已经完整编译后使用。

Target之间,也是有复杂的相互关系的。 droid大概由droidcore(主要是中下层)和apps_only(主要是上层)两部分组成,而droidcore与apps_only也并非没有交集。

droidcore里还依赖了以下Target,其含义不做一一解释,但很容易猜出。

  • ramdisk
  • systemtarball
  • boottarball
  • userdataimage
  • userdatatarball
  • cacheimage
  • bptimage
  • vendorimage
  • systemotherimage
  • bootimage
  • vbmetaimage
  • auxiliary

特殊目标

Target Description help 显示几个常用的Target。 nothing 把所有Makefile都跑一遍,但什么也不干。 clean 清理产物,等价于rm -rf out。 modules 打印所有参与编译的LOCAL_MODULE。 showcommands 打印所有编译过程中实际执行的命令。(在Ninja中无用,大概已废弃。) package-stats 统计所有以BUILD_PACKAGE形式生成的产物信息,包括位置、大小、dex占比等。 installed-file-list 生成installed-file.txt文件,内含所有要安装到ROM的文件与大小。

单独模块

Target Description <local_module> 单独编译某个模块 clean-<local_module> 单独清理某个模块

在已经成功编译过一次的情况下,可以通过指定LOCAL_MODULE,从项目根目录重新编译。 比如make netd,可以单独编译system/netd

此外,通过mmmmm等命令,也可以实现单独编译功能。 区别是,mm需要在当前目录下有Android.mk的位置执行,而mmm需要给定一个有Android.mk的路径。 比如,cd system/netd; mmmmm system/netd

其它

在AOSP(8.0)上,光是LOCAL_MODULE已经有了上万个,Target数目还在持续增长。 想查看其它的Target,可以从build/make/core/main.mk中,按图索骥。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK