引言:
编译android时,第一个编译的是jsr305lib,一直很好奇,终于有时间分析下原因了;
拷贝到本地,设置为不自动换行,阅读跟方便;
第一部分:整体次序
1 .PHONY: droid
DEFAULT_GOAL := droid
$(DEFAULT_GOAL):
终极目标为droid;
2.droid: droidcore dist_libraries
3:droidcore有效的依赖为
droidcore: doc-comment-check-docs
droidcore: checkapi
droidcore: files \
systemimage \
$(INSTALLED_BOOTIMAGE_TARGET) \ #bootimage没有编译规则
$(INSTALLED_RECOVERYIMAGE_TARGET) \ #recovery.img
$(INSTALLED_USERDATAIMAGE_TARGET) \ #userdata.img
$(INSTALLED_PERSISTIMAGE_TARGET) \ #persist.img
$(INSTALLED_CACHEIMAGE_TARGET) \ #cache.img
$(INSTALLED_TOMBSTONESIMAGE_TARGET) \ #tombstones.img
$(INTERNAL_OTA_PACKAGE_TARGET) \ #msm7627a-ota-eng.***.zip
$(INTERNAL_OTA_PACKAGE_TARGET_2K) \ #msm7627a-ota-eng.***_mmc--2k.zip
$(INTERNAL_MMC_OTA_PACKAGE_TARGET) \ #msm7627a-ota-eng.***_mmc.zip
$(INSTALLED_FILES_FILE) #installed-files.txt
4: files的有效依赖
.PHONY: files
files: prebuilt \
$(modules_to_install) \ ###所有需要编译的对象通过$(tag)_MODULES和Default_MODULES添加
$(modules_to_check) \ ###对BUILD_HOST_JAVA_LIBRARY需要检查下是否编译;
$(INSTALLED_ANDROID_INFO_TXT_TARGET)#android-info.txt
prebuilt: $(ALL_PREBUILT)
ALL_PREBUILT = out/target/product/msm7627a/system/usr/share/zoneinfo/zoneinfo.dat
。。。。。。。。。。。。
target Prebuilt: system_etcdir (out/target/product/msm7627a/system/etc/gps.conf)
编译次序:
【doc-comment-check-docs】【checkapi】【prebuilt】【modules_to_instal