概论
Android的build系统是基于GNU Make和shell构建的一套编译环境,Android的编译比较庞大,所以为了统一管理,Android退出了build来统一管理Android的编译。
build处理完成对目标系统的二进制文件,APK运用编译,链接,打包等工作外,还需要生成目标系统的镜像和各种配置文件,同时还维护各个模块间的依赖关系。
build系统可分为三大块,一:位于build/core下的文件,这是build系统的框架和和兴,二:位于device目录下,存放产品的配置参数,三:是各个模块的编译文件,比如我们的hal层有很多的Android.mk或者android.bp文件。
同时,这也是我们进行系统裁剪的关键地方
build系统核心
系统核心位于build/core下,我们通常使用source build/envsetup.sh来构建Android的编译环境,然后lunch来选择相应的单板文件,这些动作都是在envsetup.sh进行add_lunch_combo来指定单板平台。
在执行问lunch选择好相应的单板平台之后,以下的这些系统环境变量就会被配置,例如
PLATFORM_VERSION_CODENAME=REL //平台名字
PLATFORM_VERSION=9 //android版本号
TARGET_PRODUCT=rk3399_mid //编译的产品名字
TARGET_BUILD_VARIANT=userdebug //编译的产品类型
TARGET_BUILD_TYPE=release //编译的类