Android Build System简介-----之definitions.mk

build/core/definitions.mk主要定义了build所需的一些命令,以及相关的辅助命令。了解这些命令,一来我们在编写比较复杂的mk文件时,可以使用这些命令(或者叫函数吧),避免重复造轮子(其实对于不太熟悉mk的同学,这些就是非常好的参考样本);二来,要搞懂Android的build系统,这些多少还是要有所了解的。我们可以简单列出来一些,稍作说明。

definitions.mk定义的一些变量:

ALL_DOCS  doc路径

ALL_MODULES 所有的target

ALL_PREBUILT 所有已经prebuild好的文件

ANDROID_RESOURCE_GENERATED_CLASSES 编译产生的R.class R$$*.class(R的内部类) Manifest.class Manifest$$*.class(Mainifest的内部类)

definitions.mk定义的一些函数:

文件查找相关

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 包对齐

.......

文件COPY相关

define copy-one-file  copy一个文件

define copy-many-files copy多个文件

........

OTHERS

除此之外,还有一些其他的命令,比如proguard相关的,文件大小相关的,包覆盖相关的,这些大致可以理解为对不同平台(其实主要就是mac和linux)的命令行工具的封装

你可能感兴趣的:(build_system)