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)
开启流程:
- 把设备连接到运行 Xcode 的 Mac(或通过 Apple Configurator 安装开发签名应用)
- 进入 设置 > 隐私与安全性 > Developer Mode
- 打开开关
- 设备重启
- 重启后再次确认开启
开启后状态会持久保存,跨重启和系统更新都有效。
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
- What’s new in Endpoint Security — macOS 安全事件监控 API 更新
- Streamline local authorization flows — 本地授权流程优化
- Replace CAPTCHAs with Private Access Tokens — 用私有访问令牌替代验证码
评论
GitHub Issues · utterances