WWDC Quick Look 💓 By SwiftGGTeam
Get to know Developer Mode

Get to know Developer Mode

观看原视频

Highlight

iOS 16、iPadOS 16 和 watchOS 9 引入了 Developer Mode,默认关闭。开发者在设备上安装、运行和调试开发签名应用前,必须手动在设置中开启该模式。macOS Ventura 配套的 devmodectl 工具支持自动化开启流程。

核心内容

为什么需要 Developer Mode

00:47

强大的开发者功能正在被定向攻击滥用,而绝大多数普通用户根本不需要这些功能。Apple 的做法是:保留开发者依赖的能力,同时通过默认关闭来增加普通用户的安全性。

以下分发方式不需要 Developer Mode:

  • App Store 分发
  • TestFlight 分发
  • 企业内部分发

Developer Mode 只在以下场景需要:

  • 安装和运行开发签名应用(包括 Personal Team 签名的应用)
  • 使用 Xcode 调试和 Instruments 性能分析
  • 在设备上运行自动化测试

如何开启 Developer Mode

02:56

开启流程:

  1. 把设备连接到运行 Xcode 的 Mac(或通过 Apple Configurator 安装开发签名应用)
  2. 进入 设置 > 隐私与安全性 > Developer Mode
  3. 打开开关
  4. 设备重启
  5. 重启后再次确认开启

开启后状态会持久保存,跨重启和系统更新都有效。

Beta 版本中 Developer Mode 菜单项始终可见,正式版中需要连接 Xcode 或安装开发签名应用后才会出现。

自动化:devmodectl

04:05

手动开启在测试实验室等多设备场景下效率很低。macOS Ventura 内置了 devmodectl 命令行工具。

限制条件:只有没有设置密码的设备才能自动开启 Developer Mode。这是因为重启后需要解锁设备才能继续交互。

两种使用方式:

# 为已连接的单个设备开启
devmodectl

# Streaming 模式:自动为所有接入的设备开启
devmodectl streaming

关键点

  • devmodectl streaming 会监听新接入的设备,自动重启并配置 Developer Mode
  • 配置完成后设备会收到通知
  • 该工具随 macOS Ventura 默认安装

详细内容

devmodectl 使用示例

# 查看当前连接的设备状态
devmodectl

# Streaming 模式:自动处理所有接入的设备
devmodectl streaming

# 在 CI 脚本中使用
#!/bin/bash
# 启动 streaming 模式作为后台进程
devmodectl streaming &
STREAM_PID=$!

# 等待设备接入并配置
sleep 30

# 停止 streaming
kill $STREAM_PID

关键点

  • devmodectl 需要设备没有密码才能自动完成流程
  • 有密码的设备在重启后需要手动解锁,自动化流程会中断
  • 建议在测试实验室中为测试设备统一不设置密码,或使用 MDM 管理

CI 环境集成建议

# 在 CI 流水线中检查设备状态
#!/bin/bash

# 检查是否有未开启 Developer Mode 的设备
if ideviceinfo -k DeveloperModeStatus | grep -q "0"; then
    echo "Developer Mode not enabled, attempting automatic setup..."
    devmodectl streaming &
    sleep 60
    kill %1
fi

# 继续执行测试
xcodebuild test -destination "platform=iOS,name=TestDevice" ...

关键点

  • 在 CI 环境中,把 Developer Mode 检查作为测试前置步骤
  • 为测试设备池统一配置无密码策略,配合 devmodectl streaming
  • 记录哪些设备需要手动干预,避免测试失败时排查方向错误

核心启发

1. 更新团队设备准备流程

  • 做什么:在新设备到手或系统升级后,把开启 Developer Mode 作为标准流程的第一步
  • 为什么值得做:iOS 16 之后没有 Developer Mode 就无法调试,这个问题会浪费大量排查时间
  • 怎么开始:在团队的设备管理文档中加入开启步骤,新成员 onboarding 时重点说明

2. 搭建自动化测试设备池

  • 做什么:为 CI 环境中的测试设备统一配置无密码 + devmodectl streaming
  • 为什么值得做:手动开启每台设备的 Developer Mode 在设备数量多时不现实,自动化是唯一的可行方案
  • 怎么开始:准备一批专用测试设备,恢复出厂设置后不设置密码,接入 Mac 后运行 devmodectl streaming

3. 更新内部测试分发策略

  • 做什么:评估内部测试流程中哪些场景会受 Developer Mode 影响
  • 为什么值得做:虽然 TestFlight 和企业分发不受影响,但开发调试、QA 验证等环节都需要 Developer Mode
  • 怎么开始:梳理团队中使用开发签名应用的所有场景,确认每个场景的设备都已开启 Developer Mode

关联 Session

评论

GitHub Issues · utterances