查询Android AOSP编译总耗时的方法:如何通过构建日志/历史获取
可查询AOSP编译总时长的几种途径
1. 从现存构建日志直接提取
- 如果你编译时将标准输出重定向到了自定义日志文件(比如常见的
make -j$(nproc) > build.log 2>&1写法),直接搜索日志末尾的关键字即可:- Android 10及更早的旧版本AOSP搜索
Total time,输出格式类似Total time: 1 hour 23 minutes and 45 seconds. - Android 11及之后的新版本AOSP(核心构建逻辑切换为Soong)搜索
build completed successfully,该行后附带的就是总耗时,格式类似build completed successfully in 1h23m45s
- Android 10及更早的旧版本AOSP搜索
- 如果你没有手动重定向日志,AOSP默认会将完整构建输出保存在
out/verbose.log.gz中,执行zcat out/verbose.log.gz | grep -i 'total time\|build completed'即可直接提取时长信息。
2. 从构建产物时间戳倒推
如果日志已经被清理,可以通过构建起始和最终产物的生成时间差估算总时长:
- 执行
ls -lt out/ | head -n 5查看out目录下最早生成的文件时间,作为编译起始时间 - 执行
ls -lt out/target/product/[你的模拟器产品名]/ | grep -E 'system.img|userdata.img' | head -n 1得到最终镜像的生成时间,作为编译结束时间 - 两个时间的差值就是和实际消耗偏差极小的编译总时长。
3. 后续编译自动记录时长方案
如果之后还有编译需求,可以直接在编译命令前加 time 前缀,比如 time make -j$(nproc),编译完成后会直接输出三类时长统计,其中real对应的墙钟时间就是你需要的总编译耗时。
内容的提问来源于stack exchange,提问作者Raulp
相关产品推荐
相关产品推荐

