You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Xcode和Swift Build创建版本无关、Scheme无关的Swift Package通用构建脚本

通用Swift Package构建脚本适配方案

问题1:移除版本依赖,让命令独立于具体iOS/模拟器版本

完全可以实现,通过简化目标指定逻辑,让工具自动选择当前可用的环境:

修改后的xcodebuild命令

xcodebuild \
  -scheme name-Package \
  -sdk iphonesimulator \
  -destination 'platform=iOS Simulator' \
  -configuration Debug

只保留platform=iOS Simulator即可,xcodebuild会自动选取当前Xcode环境中可用的默认模拟器,无需硬编码OS版本和设备名称。

修改后的swift build命令

swift build -Xswiftc -warnings-as-errors --destination 'platform=iOS Simulator'

用--destination参数替代手动指定SDK路径和target,swift build会自动匹配当前环境的模拟器SDK与架构,彻底摆脱硬编码的版本信息。

问题2:自动处理Scheme,无需手动指定或硬编码

有两种实用方案:

方案1:自动发现带Package字样的Scheme

先通过命令行提取符合条件的Scheme,再传入xcodebuild执行构建:

# 自动获取包含Package的Scheme
PACKAGE_SCHEME=$(xcodebuild -list | grep -E ".*-Package" | head -n 1)

# 使用获取到的Scheme执行构建
xcodebuild \
  -scheme "$PACKAGE_SCHEME" \
  -sdk iphonesimulator \
  -destination 'platform=iOS Simulator' \
  -configuration Debug

xcodebuild -list会列出当前Package的所有Scheme,通过grep筛选出带-Package的条目,取第一个匹配项即可。

方案2:直接构建整个Package(无需指定Scheme)

对于纯Swift Package项目,xcodebuild支持直接基于Package.swift构建,无需指定Scheme:

xcodebuild \
  -sdk iphonesimulator \
  -destination 'platform=iOS Simulator' \
  -configuration Debug

只要当前目录是Package.swift所在路径,xcodebuild会自动识别并构建整个Package的所有可构建Target。


内容的提问来源于stack exchange,提问作者Richard Topchii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 01:27:26