SuperAPI AI 工具集

axiom-ios-build

编程与开发

查看项目

更新于 10-15 15:39

技能介绍

用途

axiom-ios-build 是一个 iOS 构建与环境问题的路由技能。它明确规定:在调试应用代码之前,必须先使用本技能处理任何构建、环境或 Xcode 相关问题。它适用于构建失败(BUILD FAILED、编译错误、链接错误)、测试崩溃或挂起、模拟器问题(无法启动、设备错误)、Xcode 异常行为(陈旧构建、僵尸进程)、依赖冲突(CocoaPods、SPM)、构建性能问题(编译缓慢)以及调试代码前的环境问题。

主要能力(路由逻辑)

该路由根据具体问题调用专项技能:

  1. 环境优先问题 → xcode-debugging。触发条件包括无明显代码原因的 BUILD FAILED、干净项目中的测试崩溃、模拟器挂起或无法启动、SPM 变更后的“No such module”、僵尸 xcodebuild 进程、陈旧构建、干净构建与增量构建结果不一致。理由:90% 的神秘问题是环境而非代码,应在调试代码前先检查。调用:/skill axiom-xcode-debugging。

  2. 构建缓慢 → build-performance。触发条件包括编译耗时过长、类型检查瓶颈、希望优化构建时间、Build Timeline 显示缓慢阶段。调用:/skill axiom-build-performance。

  3. SPM 依赖冲突 → spm-conflict-resolver(Agent)。触发条件包括 SPM 解析失败、添加包后“No such module”、重复符号链接错误、包之间版本冲突、Swift 6 包兼容性问题、Package.swift / Package.resolved 冲突。调用:启动 spm-conflict-resolver agent。

  4. 安全与隐私审计 → security-privacy-scanner(Agent)。触发条件包括 App Store 提交准备、隐私清单要求(iOS 17+)、代码中硬编码凭据、敏感数据存储问题、ATS 违规、Required Reason API 声明。调用:启动 security-privacy-scanner agent 或 /axiom:audit security。

  5. iOS 17→18 现代化 → modernization-helper(Agent)。触发条件包括将 ObservableObject 迁移到 @Observable、将 @StateObject 更新为 @State、采用现代 SwiftUI 模式、清理废弃 API、iOS 17+ 迁移。调用:启动 modernization-helper agent 或 /axiom:audit modernization。

  6. 构建失败自动修复 → build-fixer(Agent)。触发条件包括无明确错误详情的 BUILD FAILED、构建时好时坏、应用构建后运行旧代码、“Unable to boot simulator”错误、希望自动化环境优先诊断。调用:启动 build-fixer agent 或 /axiom:fix-build。

  7. 构建优化 → build-optimizer(Agent)。触发条件包括构建耗时过长、希望识别缓慢类型检查、昂贵的构建阶段脚本、次优构建设置、希望寻找并行化机会。调用:启动 build-optimizer agent 或 /axiom:optimize-build。

  8. 一般依赖问题 → build-debugging。触发条件包括 CocoaPods 解析失败、“Multiple commands produce”错误、框架版本不匹配、非 SPM 依赖图冲突。调用:/skill axiom-build-debugging。

  9. TestFlight 崩溃分诊 → testflight-triage。触发条件包括 Beta 测试者报告崩溃、Xcode Organizer 中的崩溃报告、崩溃日志未符号化、带截图的 TestFlight 反馈、应用被杀但无崩溃报告。调用:/skill axiom-testflight-triage。

  10. App Store Connect 导航 → app-store-connect-ref。触发条件包括如何在 App Store Connect 中查找崩溃、ASC 指标仪表盘导航、理解无崩溃用户百分比、比较版本间崩溃率、从 ASC 导出崩溃数据、用于崩溃数据的 App Store Connect API。调用:/skill axiom-app-store-connect-ref。

  11. 崩溃日志分析 → crash-analyzer(Agent)。触发条件包括用户有 .ips 或 .crash 文件需要分析、用户粘贴了崩溃报告文本、需要以编程方式解析崩溃日志、根据异常类型识别崩溃模式、检查符号化状态。调用:启动 crash-analyzer agent 或 /axiom:analyze-crash。

  12. MetricKit API 参考 → metrickit-ref。触发条件包括 MetricKit 设置与订阅、MXMetricPayload 解析(CPU、内存、启动、卡顿)、MXDiagnosticPayload 解析(崩溃、挂起、磁盘写入)、MXCallStackTree 解码与符号化、现场崩溃/挂起收集、后台退出指标。调用:/skill axiom-metrickit-ref。

  13. 卡顿诊断 → hang-diagnostics。触发条件包括应用卡顿或冻结、主线程阻塞超过 1 秒、UI 对触摸无响应、Xcode Organizer 显示卡顿诊断、来自 MetricKit 的 MXHangDiagnostic、看门狗终止(启动/后台切换期间应用被杀)。调用:/skill axiom-hang-diagnostics。

  14. 实时调试 → axiom-lldb。触发条件包括需要交互式复现崩溃、希望设置断点并检查状态、崩溃报告已分析现在需要实时调查、需要将调试器附加到运行中的应用。调用:/skill axiom-lldb。

  15. 代码签名问题 → code-signing。触发条件包括“No signing certificate found”、“Provisioning profile doesn't include signing certificate”、CI 中的 errSecInternalComponent、上传时 ITMS-90035 Invalid Signature、身份不明确/多个证书、权限不匹配或缺少能力、设置 CI/CD 代码签名(GitHub Actions、fastlane match)、证书过期或吊销。调用:/skill axiom-code-signing(工作流)或 /skill axiom-code-signing-diag(故障排除)。

  16. 运行时控制台捕获 → xclog-ref。触发条件包括需要查看应用运行时日志、应用崩溃但无崩溃报告(需要控制台输出)、静默失败(网络、数据、认证)无 UI 反馈、希望从模拟器捕获 print()/os_log() 输出、需要结构化日志输出用于分析。调用:/skill axiom-xclog-ref 或 /axiom:console。

使用方式

该技能提供决策树:神秘/间歇性/干净构建失败 → xcode-debugging;SPM 依赖冲突 → spm-conflict-resolver;CocoaPods/其他依赖冲突 → build-debugging;构建缓慢 → build-performance;安全/隐私/App Store 准备 → security-privacy-scanner;自动化构建修复 → build-fixer;构建时间优化扫描 → build-optimizer;现代化/废弃 API → modernization-helper;TestFlight 崩溃/反馈 → testflight-triage;App Store Connect 导航 → app-store-connect-ref;有崩溃日志 → crash-analyzer;MetricKit 设置/解析 → metrickit-ref;应用卡顿/冻结/看门狗 → hang-diagnostics;需要交互式复现崩溃 → axiom-lldb;代码签名错误 → code-signing / code-signing-diag;需要运行时控制台输出 → xclog-ref 或 /axiom:console。

适用场景

适用于 iOS 构建与环境层面的疑难问题,尤其是那些看似与代码无关、反复出现或难以定位的问题。文档强调环境优先可节省 30 分钟以上。

限制

该技能不适用于代码错误。文档明确列出不应使用 ios-build 的情况:Swift 6 并发错误应使用 ios-concurrency;SwiftData 迁移错误应使用 ios-data;“Sending 'self' risks data race”应使用 ios-concurrency;类型不匹配/编译错误应直接修复代码。ios-build 针对的是环境谜题,而非代码错误:例如代码正确时的“No such module”、模拟器无法启动、干净构建失败而增量构建成功、僵尸 xcodebuild 进程属于适用;而 Swift 并发警告/错误、数据库迁移失败、有效代码中的类型检查错误则不适用。