编译优化-链接优化

链接是 iOS 编译的最后一个阶段,也是大型工程里经常被忽略的瓶颈。Apple 在 WWDC22 的 “Link fast: Improve build and launch times” 演讲中公开:Xcode 14 新的 ld-prime 链接器比 ld64 快 2 倍。随着 Xcode 17、ThinLTO、Mergeable Libraries 等改进,链接优化已经成为编译加速的重要一环。 链接器的职责 链接器把多个 .o 合并成最终可执行文件或库: flowchart TD A[若干 .o] --> L[链接器] B[静态库 .a] --> L C[动态库 .dylib / framework] --> L L --> D[符号解析] D --> E[dead_strip] E --> F[ObjC runtime fix-up] F --> G[生成 LC_* 加载命令] G --> H[写入 Mach-O] 关键任务: 符号解析:所有 undefined symbol 必须在某个 .o / .a / .dylib 里找到 重定位:把符号引用的偏移写入正确位置 Dead Strip:去掉未被使用的代码/数据 ObjC 元数据修复:把分散的类、分类信息合并成 ObjC runtime 能识别的结构 生成 Mach-O:写 Load Commands、__LINKEDIT 等段 链接器对比 ld64(经典) ld64 是 Apple 长期使用的经典链接器,源代码在 apple-oss-distributions/ld64。单线程为主,在大工程上明显偏慢。 ...

May 2, 2026

编译优化

大型 iOS 工程的编译耗时往往是研发效能最突出的瓶颈之一。以抖音、今日头条、美团为代表的一线团队,工程代码量通常在数百万到千万行级,本地全量编译耗时 10 分钟以上、CI 上半小时起步已是常态。编译等待不仅直接压缩研发时间,还会打断心流、降低人均产出。 本系列文章从 iOS 编译系统的原理出发,结合社区最新实践(Xcode 16/17 Explicit Modules、rules_xcodeproj、seer-optimize、cocoapods-hmap-prebuilt、Rugby 等),系统性介绍编译优化的各类手段与背后的原理。 编译流程概述 理解iOS编译原理是编译优化的前提。一次典型的 iOS 编译流程可以划分为以下阶段: flowchart TD A[Parse Podfile / 生成工程] --> B[Pod Install / 依赖解析] B --> C[Xcode Build System 调度] C --> D[Dependency Scan / 模块依赖扫描] D --> E[Swift/Clang 前端编译] E --> F[生成 .o / .swiftmodule / .pcm] F --> G[链接 ld64 / ld-prime / lld] G --> H[签名 / 打包 / 资源处理] H --> I[产出 .app / .ipa] 阶段 主要工作 常见瓶颈 依赖管理 Pod Install、SPM 解析 Source 更新慢、Specification 解析重复、沙盒拷贝 工程生成 生成 Pods.xcodeproj、xcconfig、hmap Target 数量多、pbxproj 膨胀 构建调度 Build System 解析任务图、并行调度 依赖粒度过粗、并行度不足 模块扫描 Clang/Swift 依赖扫描 隐式模块重复编译 源码编译 Swift/Clang 前端、类型检查、SIL/IR 生成 类型推导爆炸、WMO 关闭、PCH 失效 链接 符号解析、LTO、dead-strip 链接参数过长、ThinLTO 串行 收尾 签名、资源拷贝、dSYM 串行脚本阻塞 优化思路全景 编译优化的核心思路只有三条:减少需要做的工作、让必须做的工作更快、让做过的工作可复用。所有社区实践都可以归入这三类。 ...

May 27, 2026

腾讯体育 Vibe Coding 实践:基于 Claude Code 的团队 AI 工作流框架落地

一、背景:团队在 AI 辅助开发中的痛点 随着 Claude Code / CodeBuddy 等 AI 编程助手的普及,腾讯体育团队在日常开发中逐渐积累了大量与 AI 协作的经验。但在推广过程中,我们发现了几个反复出现的问题: 1. 重复解释团队上下文 每位同学使用 AI 时,都需要反复告诉它:“我们的路由怎么跳转”、“我们的架构层级是什么”、“Commit 格式应该怎么写”。这些团队共有的知识,每次都要重新解释。 2. 有效方案无法沉淀复用 某位同学花了一下午和 Claude 反复沟通,终于摸索出某类问题的可靠解决方案。但下一位同学面对同样的问题时,却不得不从头再来——AI 不会记住上一位同学的探索成果。 3. 规范依赖自觉,缺乏确定性保障 可以把规范写进 Prompt,但 Agent 是否遵守取决于模型"自律"。关键的验证步骤(如编译检查、commit 格式)需要确定性的工具触发,而不是靠模型"记得做"。 4. 社区能力与企业场景之间存在鸿沟 Claude Code 社区(如 OMC/oh-my-claudecode)提供了优秀的多 Agent 编排、自动规划等能力,但它不了解我们团队的 tRPC/DDD 架构约定、日志规范、代码评审流程等企业特定知识。 二、核心思路:“AI 时代的业务组件” OSC(oh-sports-claudecode)的核心设计理念是: 一个同学与大模型反复沟通,最终沉淀出某类问题的解决方案(知识库 + Skill);下一个同学直接复用,无需再次摸索,AI 开箱即用地理解我们的业务上下文。 这与"业务组件"的思想完全一致——只是这里的"组件"不是 UI 组件或函数库,而是 AI 可消费的知识与工作流。 传统组件: 团队共享代码 → 减少重复实现 AI 业务组件:团队共享知识 → 减少重复沟通 基于这个思路,OSC 在 oh-my-claudecode (OMC) 开源框架之上,构建了一套适合腾讯体育团队的 AI 工作流体系。 三、架构设计:三层体系 OSC 采用 知识层 → Workflow 层 → 工具层 的三层架构,每一层职责清晰、可独立演进。 ...

June 4, 2026