感觉android编译系统纷繁复杂,有必要做个整理
个人觉得编译出来的东西大致分为三类
1. 设备需要的img.
设备可以是手机,pad等等具体的设备,也可是android emulator。编译时,我们需要知道此设备运行在哪个架构上,哪个OS上
涉及到的编译命令:
make, build/envsetup.sh, m,mm,mmm等等
2. 提供给应用层开发的sdk
不要把sdk与模拟器混为一谈,sdk开发出来的东西既可以在模拟器上跑,也可以在真机上跑,而模拟器所需要的img,则是第一类编译出来的。
涉及到的编译命令:
make sdk(make时不会生成sdk)
3. 其它杂项,比如make doc
对应这三类东东,最终配置会体现在以下文件中
- build/core/config.mk summary of config
config.mk包含了根目录下的buildspec.mk,它配置了以下这些西西
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.2
TARGET_PRODUCT=sim
TARGET_BUILD_VARIANT=user
TARGET_SIMULATOR=true
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=x86
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=FRF91
所以如果是想对上面这堆进行配置,个人觉得可以统一在buildspec.mk修改。
- build/core/envsetup.mk generate dir config and so on
- build/target/product product config
最终产品特性,比如有哪些APP? - build/target/board board config
硬件配置?maybe
- build/core/combo build flags config