20260724 六组件编译收尾与全局构建验证

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/ 下缺少该共享库

    修复:

    bash 复制代码
    ln -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.md Step 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

关键技术教训

  1. ln -sf vs ln -snf :差一个 -n 就会在重复执行时创建自引用 symlink(指向自身),导致 Bazel 报 Infinite symlink expansion
  2. cp -raf 重复执行 :会把源目录复制到已有目标目录内部,造成目录嵌套
  3. Android lunch 环境传播 :source envsetup.sh && lunch 必须在同一 shell 进程中执行,build.sh 内部重新 source 会导致 TARGET_PRODUCT 重置
  4. Bazel 增量编译 :基于内容哈希,未修改文件直接命中缓存(up-to-date),属正常行为
  5. 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 符号链接(软链接)
相关推荐
陈随易13 小时前
Rolldown 把插件改动回传提速 26 倍
前端·后端·程序员
笃行35020 小时前
集中式与分布式,KingbaseES 的四种形态共用一套内核
前端
陈随易21 小时前
Vue 编译器换掉 source map,快了三四成
前端·后端·程序员
ZhengEnCi1 天前
12 种高级 UI 交互效果及对应 AI 提示词:从按压回弹到底部抽屉的物理感教学
前端·css·交互设计
IT_陈寒1 天前
Redis大key删除为什么会导致服务卡顿?我的线上事故复盘
前端·人工智能·后端
用户2705077725241 天前
MCP 最小 Server 实测:3 个 JSON-RPC 报错与修法
前端
用户499335025071 天前
一人VIP账号多人共用:Web 代理里的会话共享怎么实现
前端
用户老李1 天前
无线电自学教程 05:第一台收音机——从矿石机到 SDR
前端
IPIPD1 天前
Node.js请求遇到503怎么重试?先解析Retry-After,再做有上限退避
前端
葡萄城技术团队1 天前
dsh-spreadjs-editor 的集成链路:把 SpreadJS Designer 嵌进 Agent 工作台
前端