android的编译系统相当复杂,完整编译一次需要花费很长时间。关于android编译系统可以参考一下这篇文章: Android Building System 分析 。
android的编译系统也提供了编译单个项目的功能,这对于要修改android源代码的某个项目,或者在其中增加新项目来说十分重要。
编译单个项目的方法如是在android源代码的根目录下执行下列命令:
make <module-name> ONE_SHOT_MAKEFILE=<path to Androiod.mk> TARGET_PRODUCT=<product-name>
其中:
(1)module-name是所需要编译项目模块名称,这个名称是在项目的Android.mk文件中定义的,下面会说到;
(2)path to Android是指项目的Android.mk的路径,是相对于android源码根目录的相对路径;
(3)product-name是产品名称。
每个项目都有一个Android.mk文件,用于描述项目的模块名称、包含哪些源代码、项目编译结果的类型(动态链接库、静态链接库、可执行文件等)。 android就是通过find命令来查找整个源码树内所有Android.mk文件来完成编译的。Android.mk文件的内容需要符合一定的语法规 范。NDK的文档中有一个文件ANDROID-MK.TXT对这个语法规范有描述,可以参考一下。