Android源代码单个模块编译

下载&编译Android源码后,自然就想到改其源码后怎么只编译改过的代码

编译模块

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查看用法


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


编完之后生成两个文件:
  out/target/product/generic/data/app/ContactsTests.apk
  out/target/product/generic/system/app/ Contacts.apk


可以使用make snod重新生成system.img
再运行模拟器

关于source

source 命令会把对应脚本中的内容读取到当前的bash 解释器中,在当前的执行环境中执行;其中定义的 function 以及通过 export 声明的变量等在 source 执行结束之后依然存在于当前的bash 环境中。比如我们常用的 source .bashrc 或者 source /etc/profile 等目的是为了引用刚刚改动过的环境变量。

原文地址:https://www.cnblogs.com/yema/p/4838839.html