AOSP构建中.mk文件执行顺序确认及独立调试问题
AOSP构建中.mk文件的调用顺序与单独编译调试方案
一、确定.mk文件的调用顺序
- 使用
make调试参数追踪:执行make -n -p | grep -E "^include|^-include",输出结果会按实际加载顺序列出所有被包含的.mk文件。其中-n让make仅打印命令不执行构建,-p会输出完整的规则和包含关系。 - 梳理核心构建链:AOSP构建从
build/core/main.mk启动,依次包含build/core/envsetup.mk、build/core/config.mk等核心文件,后续会根据产品配置、模块类型自动加载对应.mk文件,可直接查看main.mk中的include语句梳理调用逻辑。 - 添加自定义输出追踪:在目标.mk文件中插入
$(info Including: $(lastword $(MAKEFILE_LIST))),执行make时终端会实时打印当前被加载的.mk文件名,直观追踪加载顺序。
二、单独编译调试.mk文件(含步骤3报错修复)
步骤3报错原因及修复
你执行make -f build/core/sysprop.mk报错是因为AOSP封装的make不支持直接用-f指定单个.mk文件,需基于AOSP构建框架操作。
单独调试的可行方案
- 编译对应模块:如果
sysprop.mk对应某个模块,直接执行make sysprop(模块名需匹配文件中定义的目标),AOSP会自动加载该模块依赖的所有.mk文件并完成编译。 - 基于核心框架触发规则:执行
make -C . -f build/core/main.mk BUILD_SYSTEM=build/core sysprop,此命令会在完整的AOSP构建环境中触发sysprop.mk中的对应规则。 - 搭建简易测试环境:创建临时测试Makefile,设置必要环境变量并包含目标.mk文件,示例:
# test.mk ANDROID_BUILD_TOP := $(shell pwd) TARGET_PRODUCT := xxx_project include build/core/sysprop.mk
然后执行make -f test.mk即可单独调试该文件。
- 启用
make详细调试:执行make -d会输出构建全过程的细节,包括.mk文件的加载、规则解析、变量赋值等,可用于定位文件中的语法或逻辑错误。
内容的提问来源于stack exchange,提问作者Ergert
相关产品推荐
相关产品推荐

