20260724 六组件编译收尾与全局构建验证
六组件编译收尾
上午完成六个组件的编译收尾工作,各组件状态与产物汇总如下:
| 步骤 | 组件 | 状态 | 关键产物 | 大小 |
|---|---|---|---|---|
| 1a | QNX Monaco | ✅ | out_monaco/ 35 个镜像 | 2.7GB |
| 1b | LA QSSI(Qualcomm Single System Image,高通单系统镜像,增量) | ✅ | system.img, product.img, system_ext.img | 1.7GB |
| 1c | LA Kernel | ✅ | Image + 131 .ko + 19 .dtb + 19 .dtbo | 34MB |
| 2 | LA Vendor | ✅ | vendor.img, vendor_boot.img | 104MB |
| 3 | OEM(Original Equipment Manufacturer,原始设备制造商)7255_mgvm | ✅ | NON-HLOS.bin | 33MB |
| 4 | Meta Build | ✅ | rawprogram_unsparse7.xml | 4.2KB |
完整产物清单见 <BUILD_OUTPUT.log>。
QSSI 全局构建验证
目标
删除 out_terminal(131GB)后从零全量构建,验证增量编译产物的可复现性。
过程
-
16:30 --- 删除
out_terminal(131GB),环境修复验证通过 -
16:35 --- 启动首次全局构建(156,824 targets,
-j8) -
Soong 411/411 ✅ → Kati 567/567 ✅ → Ninja 开始
-
16:56 --- 构建至 32%(50,927/156,824)时,7 个 RenderScript (Android 异构计算框架)
.bc位码文件 FAILED根因 :
bcc_strip_attr工具依赖libncurses.so.5,但$OUT_DIR/host/linux-x86/lib64/下缺少该共享库修复:
bashln -sf ~/.local/lib/libncurses.so.5 out_terminal/host/linux-x86/lib64/ ln -sf ~/.local/lib/libtinfo.so.5 out_terminal/host/linux-x86/lib64/以上两条命令在
out_terminal/host/linux-x86/lib64/中补全了libncurses.so.5及其依赖libtinfo.so.5的符号链接,使bcc_strip_attr工具能正确加载运行时库。 -
16:58 --- 增量重启(108,071 targets),symbolic link(符号链接)已就位
-
18:25 ---
#### build completed successfully (01:24:57) ####0 FAILED,产物大小与增量编译一致,验证通过。
全局构建产物
| 产物 | 大小 | 路径 |
|---|---|---|
| system.img | 1.2G | out_terminal/target/product/qssi_au/ |
| product.img | 236M | ↑ |
| system_ext.img | 227M | ↑ |
| vbmeta.img | 4.0K | ↑ |
| ramdisk.img | 1.4M | ↑ |
| super_empty.img | 4.7K | ↑ |
| system_dlkm.img | 340K | ↑ |
| dist/(103 文件) | --- | 含 target_files, symbols, api.xml, gpl_source.tgz 等 |
验证日志:logs/QSSI_GLOBAL_BUILD_20260724_183138.log
为何上次增量编译未暴露
上次增量编译时 rebuild_la.sh 脚本已自动创建 ncurses symlink;本次手动执行编译命令跳过了该脚本,导致缺失。教训:手动命令应引用已验证的脚本,或完整列出所有修复步骤。
修复记录汇总(累计 38 项)
新发现:Fix#38 --- bcc_strip_attr 缺 libncurses.so.5
- 现象 :全局构建 32% 时
FAILED: libclcore.bc(7 个 RenderScript bitcode 文件失败) - 根因 :AOSP (Android Open Source Project,安卓开源项目)编译出的 host 工具
bcc_strip_attr的 RUNPATH (运行时库搜索路径)指向$OUT_DIR/host/linux-x86/lib64,该目录缺少libncurses.so.5 - 修复 :在
out_terminal/host/linux-x86/lib64/中创建 symlink →~/.local/lib/libncurses.so.5 - 已内化到 :
BUILD_ALL_STEPS.mdStep 1b 修复#7
此前在本次编辑中合并的修复摘要
| # | 步骤 | 问题 | 修复 |
|---|---|---|---|
| 33 | Step 1c (LA Kernel) | 自引用 symlink :bindings -> bindings、qcom -> qcom 导致 Bazel (Google 开源构建系统) Infinite symlink expansion |
改用 ln -snf(带 -n 防止嵌套) |
| 34 | Step 1c (LA Kernel) | build_with_bazel.py -t autogvm_gki 参数解析异常 |
拆分为 -t autogvm gki(两个独立参数) |
| 35 | Step 2 (LA Vendor) | cp -raf 重复执行导致 device/qcom/gen4_gvm/gen4_gvm/ 嵌套目录 |
执行前检查目标是否已存在 |
| 36 | Step 2 (LA Vendor) | 终端闪退:m dist 中 dist 目标失败 |
改为 m(跳过打包,vendor.img 已正确生成) |
| 37 | Step 1b (LA QSSI) | lunch 环境变量在子 shell 中重置 |
确认 source && lunch && bash build.sh 合并命令生效,TARGET_PRODUCT=qssi_au |
文档更新
<BUILD_ALL_STATES.md>
- 所有目录 symlink 操作:
ln -sf→ln -snf(全局替换,防止自引用) - Step 1b:新增修复#7(host lib64 ncurses)+ 全局构建/增量构建双路径说明
- Step 1b 验证:从 2 张截图 → 7 张截图 +
dist/ - 错误速查表:新增
bcc_strip_attr条目 - 累计修复数:37 → 38
<BUILD_OUTPUT.log>
- Step 1b:全部替换为全局构建产物(7/24 18:13--18:20)
dist/从一行注释 → 20 个实际文件路径- 新增
vbmeta.img、ramdisk.img记录
<PROGRESS.md>
- Phase 6o:QSSI 全局构建验证
- 修复清单:+Fix#38
关键技术教训
ln -sfvsln -snf:差一个-n就会在重复执行时创建自引用 symlink(指向自身),导致 Bazel 报Infinite symlink expansioncp -raf重复执行 :会把源目录复制到已有目标目录内部,造成目录嵌套- Android
lunch环境传播 :source envsetup.sh && lunch必须在同一 shell 进程中执行,build.sh内部重新 source 会导致TARGET_PRODUCT重置 - Bazel 增量编译 :基于内容哈希,未修改文件直接命中缓存(
up-to-date),属正常行为 - Host 工具依赖不完整 :
rebuild_la.sh脚本会自动补齐 ncurses symlink,但直接手动执行命令时容易遗漏
AI 工具开发与自动化任务协作会议
需求场景与功能方向
- 自动化日报生成:通过定时任务调用 AI 代理,每日 5:30 自动汇总飞书云文档、会议记录、对话历史等信息,生成工作日报
- 桌面工具开发 :创建可视化界面工具,集成常用命令执行(如 ADC(Automotive Debug Console,车机调试控制台)、编译脚本)、系统监控(日志捕获、设备信息)、快捷操作(剪贴板管理、倒计时)等功能
- 跨平台集成:实现 AI 代理与飞书生态的深度对接,支持远程指令执行、云文档处理、会议纪要生成等跨应用协作
技术实现路径
- AI 代理功能拓展 :开发特定技能模块,指导 AI 代理自动检索飞书代办事项、会议记录及对话历史;配置周期性执行框架(每分钟/指定时段),实现自动化流程触发;构建可视化界面工具,集成 AR(Augmented Reality,增强现实)编译脚本、ADC 调试命令等技术操作
- 系统集成方案 :处理车机系统 API (Application Programming Interface,应用程序编程接口)调用限制,规避隐藏框架访问障碍;打通飞书文档 API、G2 看板数据接口及本地摄像头调用功能;建立危险操作确认流程(如关机指令),防止误操作
项目管理与后续安排
- 开发里程碑:8 月 20 日为内部评选截止节点,大连团队需提前完成初评
- 需求收集:建立共享文档汇总功能需求,按技术方向分类整理(C++/AR/064 架构)
- 协作机制:通过群组文档持续更新需求,定期召开会议推进课题论证
英文名词解释笔记
| 缩写 | 全称 | 中文释义 |
|---|---|---|
| ADC | Automotive Debug Console | 车机调试控制台 |
| AOSP | Android Open Source Project | 安卓开源项目 |
| API | Application Programming Interface | 应用程序编程接口 |
| AR | Augmented Reality | 增强现实 |
| Bazel | --- | Google 开源构建系统,基于内容哈希实现增量编译 |
| bcc | Bitcode Compiler Collection | RenderScript 工具链中的位码编译器集合 |
| dtb | Device Tree Blob | 设备树二进制文件 |
| dtbo | Device Tree Blob Overlay | 设备树二进制覆盖文件 |
| ko | Kernel Object | Linux 内核可加载模块 |
| LA | Linux Android | 高通 Linux Android 平台代号 |
| mgvm | Management Virtual Machine | 管理虚拟机 |
| NON-HLOS | Non-High Level Operating System | 非高级操作系统固件(高通 modem 固件) |
| OEM | Original Equipment Manufacturer | 原始设备制造商 |
| QNX | --- | 类 Unix 实时操作系统,广泛用于嵌入式/车机领域 |
| QSSI | Qualcomm Single System Image | 高通单系统镜像 |
| RenderScript | --- | Android 异构计算框架,用于高性能并行计算 |
| RUNPATH | Runtime Search Path | ELF 可执行文件的运行时库搜索路径 |
| symlink | Symbolic Link | 符号链接(软链接) |