代码改变世界

(转)android 编译单个模块

2012-07-31 15:51  ...平..淡...  阅读(197)  评论(0编辑  收藏  举报

android中的一个应用程序可以单独编译,编译后要重新生成system.img

在源码目录下执行以下脚本
  . build/envsetup.sh (.后面有空格)
就多出一些命令:
  - croot:   Changes directory to the top of the tree.
  - m:       Makes from the top of the tree.
  - mm:      Builds all of the modules in the current directory.
  - mmm:     Builds all of the modules in the supplied directories.
  - cgrep:   Greps on all local C/C++ files.
  - jgrep:   Greps on all local Java files.
  - resgrep: Greps on all local res/*.xml files.
  - godir:   Go to the directory containing a file.
可以加--help查看用法

 

我们可以通过mm在当前目录模块下进行编译,如编译联系人:

packages/apps/Contacts/ #mm 


我们可以使用mmm来编译指定目录的模块,如编译联系人:
  # mmm packages/apps/Contacts/

or # make Contacts


编完之后生成两个文件:(应用本身和测试应用)
  out/target/product/generic/data/app/ContactsTests.apk
  out/target/product/generic/system/app/ Contacts.apk


可以使用以下命令来重新生成system.img

$ make snod

生成成功后,再重新运行模拟器加载使用:
$ emulator -system system.img -data userdata.img -ramdisk ramdisk.img