Skip to main content
在本教程中,Devin 将从一个空的代码仓库开始,构建一个小型 SwiftUI 习惯打卡应用。Devin 会编写代码、用 Xcode 构建、在 iOS 模拟器 中运行,并提交一个 pull request。你可以全程观察它的工作、审查结果,然后让 Devin 把 beta 版本发布到 TestFlight。
Devin 在 macOS VM 上构建 iOS 游戏

开始之前

  • macOS VM:Devin 的会话需要在 macOS 上运行。如果你使用的是 Dedicated SaaS 部署,请联系你的账户团队启用 macOS VM。参见 macOS 支持
  • 一个代码仓库:创建一个空的代码仓库 (例如 habit-tracker) ,并通过你的 Git integration 授予 Devin 访问权限。
  • Desktop mode:在 Settings > Customization 中开启 Enable desktop mode,这样 Devin 才能与模拟器交互并录制测试过程。参见 Computer Use
macOS 会话与 Linux 会话消耗的用量相同,不会额外收取 macOS 费用。

步骤 1:提示 Devin 构建应用

在你选择的代码仓库中启动一个新会话,并在提示输入框下方的平台菜单中选择 macOS。Xcode、iOS 模拟器 和 Homebrew 均已预装,无需任何前期配置。
在 Slack 中,请在消息里加上 !mac bang 命令。通过 API 创建会话时,设置 platform: "macos"
给 Devin 一个具体的提示,说明应用要具备哪些功能、使用什么工具,以及如何验证它能正常运行。下面是一个示例:
一个优秀的 iOS 提示应当:
  • 明确平台版本和框架,这样 Devin 就不必猜测部署目标或架构。
  • 明确模拟器设备,这样构建命令使用的目标设备在 VM 上确实存在。
  • 描述具体的验证流程,这样 Devin 会测试你真正关心的行为,而不是只检查能否编译通过。

步骤 2:观察 Devin 构建与测试

Devin 处理这个任务的方式和 iOS 开发者差不多:
  1. 搭建项目骨架:编写 project.yml、SwiftUI 视图、习惯数据模型以及测试 target,然后运行 xcodegen generate
  2. 构建并修复错误:在 shell 中运行 xcodebuild,读取编译器输出,不断修复错误,直到构建和测试全部通过。
  3. 在模拟器中运行应用:启动设备,然后安装并启动构建产物:
  4. 测试你描述的流程:借助 Computer Use 在应用里逐步点击操作,在屏幕上核对结果,并录制整个过程。
  5. 提交 pull request,附上摘要和截图。
在会话工作区中打开 iOS 模拟器 选项卡,即可实时查看 Devin 点击操作应用时模拟器的画面。
如果构建找不到目标设备,可以让 Devin 运行 xcrun simctl list devices available,并使用 VM 中实际存在的设备和系统版本。

步骤 3:审查并迭代

像审查其他 pull request 一样审查它。检查截图和录屏是否符合你的要求。然后在同一会话中通过后续提示继续开发:
你也可以在 pull request 上留下 review comments,只要会话处于活跃状态,Devin 就会对这些评论作出响应。参见 GitHub 集成Devin Review

步骤 4:将测试版发布到 TestFlight

app 能在模拟器中正常运行后,Devin 可以对其进行归档、签名,并将构建产物上传到 TestFlight,让测试人员在真机上安装。 这需要你自己完成一些一次性设置。将 iOS 构建上传到 TestFlight 逐步介绍了这些操作:
  1. 配置 App Store Connect:接受协议、注册 bundle ID、创建 app 记录、创建 beta 组,并回答出口合规问题。
  2. 创建 App Store Connect API 密钥,并下载其 .p8 文件。
  3. 添加 Devin secretsASC_KEY_IDASC_ISSUER_IDASC_PRIVATE_KEYAPPLE_TEAM_ID
  4. 如果你的组织启用了受限的 网络策略,请允许访问 Apple 服务器的网络。
project.yml 和 App Store Connect 中使用相同的 bundle ID。如果 Devin 在步骤 1 中选用了占位的 bundle ID,请先让它更新项目。
然后启动一个新会话,使 secrets 生效,并向 Devin 发出提示:
Devin 会将 API 密钥写入磁盘,使用 xcodebuild archive 归档应用,并通过 xcodebuild -exportArchive 上传。随后它会将处理完成的构建添加到 beta 组。若想复用这些步骤,而不必在每次提示中重复说明,可在蓝图的 knowledge 部分添加一个 testflight 条目。参见在蓝图中保存这些步骤

提示

  • 固定工具链:macOS 镜像包含多个 Xcode 版本,可在蓝图中使用 DEVELOPER_DIRxcode-select 指定所需版本。参见选择 Xcode 版本
  • 将凭据存为 secrets:App Store Connect API 密钥、签名证书以及私有包注册表令牌都应存放在 Secrets 中,Devin 会以环境变量的形式读取。
  • 放行包注册表:如果你的组织启用了受限网络策略,请确保 macOS 允许列表中包含 Swift Package Manager、CocoaPods 以及应用所需的任何私有包注册表。参见网络访问
  • 唤醒后重启模拟器:会话休眠再唤醒后,文件会保留,但运行中的进程不会。请让 Devin 在测试前重新启动模拟器。
  • 索取证据:要求提供特定界面的截图或录屏,这样你无需亲自运行应用即可检查 UI。

限制

  • Devin 在模拟器上运行应用,而非真实的 iPhone 或 iPad。若需在真机上测试,请安装 TestFlight 构建版本。
  • 在 VM 内得到的计时和性能分析结果无法反映真机的实际性能。
  • 在 macOS VM 上,容器通过软件模拟运行,因此大量依赖容器的工作会很慢。
详见 macOS 支持的限制

后续步骤

TestFlight 上传

上传构建版本所需的 App Store Connect 配置、API 密钥和 secrets

macOS 支持

macOS 会话的蓝图选项、预装工具与问题排查

测试与录制

Devin 如何测试你的应用并记录测试结果