Android常用的一些make命令(转载)--不错

时间:2021-11-23 04:19:16

原文网址:http://blog.sina.com.cn/s/blog_abc7e49a01011y0n.html

1.make -jXX
  XX表示数字,这个命令将编译Android系统并生成镜像,XX表示可以使用到的CPU核数,这在配置好的电脑上特别有用,公司的16核ubuntu服务器执行make -j16只要不到20分钟,而双核PC上需要4个小时!

2.make snod
  
这条命令将重新生成镜像,消耗的时间很少,类似WinCE的makeimg过程,如果你修改了一些数据文件(如音乐、视频)等文件时比较有用。

3.make cts
  这条命令将编译CTS套机,编译出的结果放在out目录对应版的data/app目录下面。CTS测试时有用

4.make installclean
  
这条命令清除out目录下对应板文件夹中的内容,也就是相当于make clean,通常如果改变了一些数据文件(如去掉)、最好执行以下make installclean,否则残留在out目录下的还会被打包进去。

5.mm/mm -B
  
开发调试中最喜欢这条命令了,在修改了的目录下执行这条命令,就能智能地进行编译,输出的文件在通过adb推送到目标机,可以很方便地调试。

6.make sdk
  
这条命令可以生成可发布的SDK,目前还没试过,据说需要JDK1.5

7.make Setting
  
可以单独编译setting这个模块,目前还没试,猜想是不是可以单独编译Email、Music这些模块

8.make bootimage
  
用这条命令可以生成boot.img,这个镜像文件中包含Linux Kernel,Ram disk,生成的boot.img只能通过fastboot进行烧写,这在只修改了Linux内核的时候有用

Android比较重要的三个img文件:

  • make systemimage - system.img
  • make userdataimage - userdata.img
  • make ramdisk - ramdisk.img
  • make snod - 快速打包system.img (with this command, it will build a new system.img very quickly. well, you cannot use “make snod” for all the situations. it would not check the dependences. if you change some code in the framework which will effect other applications)

因為
system.img 是 從 out/target/product/xxxx/system 做出來的。
如果改了 這個 folder 的內容,想要重新產生 system.img。不要管 system folde 裡面的 file 的 dependency,可以用 snod 這個 target:

  • make snod

定義在 build/core/Makefile 可以看到 snod 這個 target:
(有說明是: make system.img ignoring depencies)

.PHONY: systemimage-nodeps snod
systemimage-nodeps snod: $(filter-out systemimage-nodeps snod,$(MAKECMDGOALS)) \
| $(INTERNAL_MKUSERFS)
@echo "make $@: ignoring dependencies"
$(call build-systemimage-target,$(INSTALLED_SYSTEMIMAGE))
$(hide) $(call assert-max-image-size,$(INSTALLED_SYSTEMIMAGE),$(BOARD_SYSTEMIMAGE_PARTITION_SIZE),yaffs)

Ref:
http://hi.baidu.com/kyan/blog/item/df7ea8d346f5c839960a163c.html
http://r40eubuntu.blogspot.com/2010/10/systemimg.html