build/core/definitions.mk主要定义了build所需的一些命令,以及相关的辅助命令。了解这些命令,一来我们在编写比较复杂的mk文件时,可以使用这些命令(或者叫函数吧),避免重复造轮子(其实对于不太熟悉mk的同学,这些就是非常好的参考样本);二来,要搞懂Android的build系统,这些多少还是要有所了解的。我们可以简单列出来一些,稍作说明。
ALL_DOCS doc路径
ALL_MODULES 所有的target
ALL_PREBUILT 所有已经prebuild好的文件
ANDROID_RESOURCE_GENERATED_CLASSES 编译产生的R.class R$$*.class(R的内部类) Manifest.class Manifest$$*.class(Mainifest的内部类)
define my-dir 获取当前路径
define all-java-files-under 获取指定目录下所有的java文件
define all-c-files-under 获取指定目录下所有的c文件
define all-c-cpp-files-under 获取指定目录下所有的cpp文件
define all-Iaidl-files-under 获取指定目录下所有的aidl文件
........
define transform-aidl-to-java aidl编译成java
define transform-host-c-to-o .c文件编译成.o
define transform-host-o-to-static-lib .o文件打包成静态库
define transform-host-o-to-shared-lib 创建共享库
define transform-o-to-executable 创建可执行文件(target)
define transform-host-o-to-executable 创建可执行文件(host)
define compile-java 编译java文件
define transform-java-to-classes.jar 编译java文件并打包成jar
define transform-classes.jar-to-dex 把jar转化为dex
.........
define create-empty-package 创建空包
define add-assets-to-package 包里添加asstes
define add-jni-shared-libs-to-package 包里添加共享库
define add-dex-to-package 包里添加dex
define sign-package 包签名
define align-package 包对齐
.......
define copy-one-file copy一个文件
define copy-many-files copy多个文件
........
除此之外,还有一些其他的命令,比如proguard相关的,文件大小相关的,包覆盖相关的,这些大致可以理解为对不同平台(其实主要就是mac和linux)的命令行工具的封装