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_attrRUNPATH (运行时库搜索路径)指向 $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) 自引用 symlinkbindings -> bindingsqcom -> 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 distdist 目标失败 改为 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 -sfln -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.imgramdisk.img 记录

<PROGRESS.md>

  • Phase 6o:QSSI 全局构建验证
  • 修复清单:+Fix#38

关键技术教训

  1. ln -sf vs ln -snf :差一个 -n 就会在重复执行时创建自引用 symlink(指向自身),导致 BazelInfinite 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 符号链接(软链接)
相关推荐
用户2930750976691 小时前
用React 完成Todos 的 组件应用:深入理解单向数据流与组件通信
前端
玉宇夕落1 小时前
React 父子组件通信 Todo List 看透单向数据流与不可变数据
前端
软件开发技术深度爱好者1 小时前
国际音标魔法实验室工具HTML5实现
前端·html5·英语学习
FogLetter1 小时前
嘘!WebSocket正在“偷听”你的网络请求——全双工通信的魔法
前端·面试
用户938515635071 小时前
从零构建 React Todo 应用:组件化设计与数据流深度解析
前端·javascript
IT_陈寒1 小时前
Python线程池把我坑惨了,这些盲区你不踩?
前端·人工智能·后端
程序员爱钓鱼2 小时前
第一个 Go 程序:Hello World
前端·后端·go
阳光是sunny2 小时前
LangGraph 核心概念详解:从编译到可视化
前端·人工智能·后端
不好听6133 小时前
React 父子组件通信:从 Todo 应用理解单向数据流
前端·react.js