前言
自从MacOS 14发布,Xcode升级到15版本之后,从苹果的开发者网站 developer.apple.com/download/al… 下载的Xcode.xip便不再包含IOS的SDK了,为此折腾了好一段时间,经历过两个版本的升级之后,这套纯命令行的操作方法也算是可用,在此记录下来。
一些问题
Q1. 为何要使用纯命令行的方式去部署?直接在系统的商店下载Xcode后选择SDK再下载不可以吗?
A. 当然可以!如果你需要更新的机器只有一台,或者只有几台的话,完全可以使用这种方式。但是当机器数量达到一定程度时,脚本才是更优解。
Q2. 上面的开发者网站下载资源有限制吗?
A. 需要你至少拥有一个开发者账号,不管是个人的还是公司账号。
Q3. 我该怎么选择下载的 Xcode 版本和 IOS SDK 的版本?
A. 可以参考官方文档:developer.apple.com/cn/support/…
操作步骤
1. 下载需要的 Xcode.xip 和 iOS_Simulator_Runtime.dmg
下载地址:developer.apple.com/download/al…
Xcode示例包体:Xcode_15.2.xip
IOS示例包体:iOS_17.2_Simulator_Runtime.dmg
2. 存放在Mac机器上
Xcode示例包体:~/Downloads/MacStudio/Xcode_15.2.xip
IOS示例包体:~/Downloads/MacStudio/iOS_17.2_Simulator_Runtime.dmg
3. 安装Xcode
# 解压包体
xip --expand ~/Downloads/MacStudio/Xcode_15.2.xip
# 复制到实用程序
mv Xcode.app /Applications
# 指定默认使用的Xcode
xcode-select -s /Applications/Xcode.app
# 从命令行接受证书
xcodebuild -license accept
# 从命令行检查许可协议的状态,并安装启动 Xcode 所需的任何软件包。通过运行该命令可以确保 Xcode 能够正常启动和使用。
xcodebuild -runFirstLaunch
4. 挂载 IOS SDK
xcrun simctl runtime add "~/Downloads/MacStudio/iOS_17.2_Simulator_Runtime.dmg"
其他步骤
如果不小心挂载了错误的版本,想要取消挂载直接使用 diskutil umont 可能会失败,这里拿取消挂载 iOS_18_Release_Candidate_Simulator_Runtime.dmg 为例
# 先查看当前IOS包体的挂载情况
mount
# 再查看挂载路径是否有进程占用 (下面的路径均可以通过 mount 看到)
lsof /Library/Developer/CoreSimulator/Volumes/iOS_22A5346a
lsof /Library/Developer/CoreSimulator/Cryptex/Images/bundle/SimRuntimeBundle-A21829B7-A12D-47E2-BBE1-DB380AC946A0
# 有的话就先kill掉进程
kill 85109
# 然后再取消挂载
diskutil umount /Library/Developer/CoreSimulator/Volumes/iOS_22A5346a
diskutil umount /Library/Developer/CoreSimulator/Cryptex/Images/bundle/SimRuntimeBundle-A21829B7-A12D-47E2-BBE1-DB380AC946A0
使用
xcrun simctl list runtimes
命令查看所有可用的模拟器运行时,然后使用
xcrun simctl runtime delete <runtime-id>
命令删除你不再需要的运行时。
总结
除了下载资源到本地的步骤之外,其余的步骤理论上都可以通过脚本指令完成,你可以将资源存放在Windows共享盘或者任何存储介质上,随后运行脚本批量在多个机器安装Xcode和IOS SDK。