SuperAPI AI 工具集

solo-ios-dev

通用与其它

查看项目

更新于 10-15 21:46

技能介绍

用途:为构建与发布 iPhone/iOS 应用提供参考与检查清单,在首次上传 App Store 前先跑发布清单,减少被拒导致的重新打包。

技术栈:原生 Swift 模板位于 ~/startups/solopreneur/solo-factory/templates/stacks/ios-swift.yaml,采用 Swift 6 + SwiftUI、SPM、xcodegen(project.yml 生成 .xcodeproj,不提交该目录)、SwiftData(非 Core Data)、StoreKit 2、.xcstrings 字符串目录、SwiftLint + swift-format、lefthook,以及 App Store Connect CLI asc(brew install asc)。KMP 混合模板位于同目录 kotlin-multiplatform.yaml,采用 Kotlin Multiplatform + Compose Multiplatform、Gradle version catalog、expect/actual。仅 iOS 选原生 Swift,Android 共享领域/UI 时选 KMP。

工程约定:视图模型用 @Observable @MainActor final class,不用 ObservableObject;服务通过 init 注入;重/ML/数据服务用 actor,UI 面向服务用 @Observable @MainActor final class;每个服务配协议;持久化用 SwiftData @Model,本地优先;新代码用 async/await,不用 Combine;权限在协议中提供 requestPermission() async -> Bool,拒绝时提示打开设置;目录为 App/ Models/ Views/ ViewModels/ Services/ Services/Protocols/ Extensions/ Resources/,MVVM;i18n 用 String Catalog;测试新代码用 Swift Testing(@Test),旧代码 XCTest;内购 StoreKit 2;分析用 PostHog(EU)。

Swift 6 并发要点:async 本身不代表离开主线程,异步函数在调用方 actor 上运行;@concurrent 才把工作移到后台池;nonisolated 在调用处运行;先做性能分析再卸载;actor 不保证 FIFO;await 会破坏原子性,事务性修改应在同步方法内完成。

Swift Testing:#expect 捕获子表达式;try #require 解包并终止;@Test(arguments:) 每个用例独立并行;测试是结构体、默认并行;用 .disabled/.bug/.timeLimit/.tags 与 withKnownIssue;UI 自动化、性能指标与 Objective-C 互操作仍用 XCTest。

工具链:Xcode MCP 桥(Xcode 26.3+,xcrun mcpbridge)可构建、测试、渲染 SwiftUI 预览、查文档、执行片段、取构建日志,但需 Xcode 打开项目,不适合后台或 CI。XcodeBuildMCP(npx -y xcodebuildmcp@latest mcp)提供无头构建、运行、测试与 UI 自动化,snapshot_ui 返回带 elementRef 的语义树,tap 按引用而非坐标;默认仅 24 个工具,需通过 XCODEBUILDMCP_ENABLED_WORKFLOWS 启用 ui-automation、device 等工作流(可到 44 个);用 session_set_defaults 写入 .xcodebuildmcp/config.yaml。模拟器冒烟测试可用 xcrun simctl boot/install/launch/io screenshot/log stream;ARKit、相机、真实 GPS 无法在模拟器验证。

限制与注意:资料中未提供收费、价格与平台支持范围等信息;部分工具行为随版本变化,使用前应重新测量验证。