跳到主要内容
本页目录

xcodebuild / xcrun 兼容

安装目录中同名的 xcodebuild、xcrun 支持哪些动作和参数,不支持哪些,退出码含义,React Native、Expo、Flutter 的脚本为什么不用改。

同名程序

Windows 和 Linux 上,安装目录的 bin 中有和 macOS 同名的 xcodebuild、xcrun 和 codesign。React Native、Expo、Flutter、Cordova 的构建脚本调用它们时会使用 KXBuild 的实现,脚本不需要修改,自己写的脚本也可以按 macOS 的写法。macOS 上 Xcode 自带这些程序,KXBuild 的叫 kxcodebuild,不覆盖系统的。

兼容的是框架脚本用到的常用参数。xcodebuild test 和 -exportArchive 不支持,测试用 kxdevice test,导出 ipa 用 kxbuild build -c Release。日常构建建议直接用 kxbuild build,参数更全、输出更清楚。

xcodebuild

xcodebuild [-project X.xcodeproj | -workspace X.xcworkspace] [-scheme S | -target T | -alltargets] [-configuration C] [-sdk SDK] [-arch A] [KEY=VALUE]… [动作]…

支持的动作有 build(默认)、clean、install、installhdrs、installapi、installsrc、archive。

参数说明
-project / -workspace NAME要构建的工程或工作区
-scheme / -target NAME、-alltargets构建哪个 scheme、target 或全部 target
-configuration NAME构建配置
-sdk SDK、-arch ARCH、-toolchain NAMESDK、架构、工具链
-destination SPEC目标描述,key=value 逗号分隔
-xcconfig PATH、KEY=VALUE覆盖构建设置
-derivedDataPath PATH、-archivePath PATH输出目录、归档目录
-clonedSourcePackagesDirPath PATH、-resolvePackageDependenciesSwift 包检出目录、只解析依赖
-showBuildSettings、-showsdks、-showdestinations、-list、-version查询构建设置、SDK 列表、目标列表、target 与 scheme 列表、版本,可加 -json
-jobs N、-quiet、-verbose、-hideShellScriptEnvironment、-json并行数与输出控制

不支持 test、build-for-testing、test-without-building、analyze、docbuild、-exportArchive、-create-xcframework、本地化导入导出和平台下载,遇到时以 65 退出。其他 xcodebuild 参数接受但忽略。archive 只组装一个最小的 .xcarchive,不签名,要交付的 .ipa 用 kxbuild build 的 Release 构建。

退出码含义
64用法错误
65构建失败、scheme 错误或不支持的动作
66输入文件不存在
> xcodebuild -workspace ios\MyApp.xcworkspace -scheme MyApp -configuration Debug -sdk iphoneos

xcrun

xcrun [--sdk SDK] [--show-sdk-path | --show-sdk-version | … | -f 工具 | 工具 参数…]

查找 SDK 和工具链中的工具并执行。框架脚本最常用的是查 SDK 路径和调用 clang。

参数说明
--sdk / -sdk NAME选择 SDK,iphoneos、iphonesimulator、macosx,可带版本或路径。非 macOS 默认 iphoneos
--show-sdk-path、--show-sdk-version、--show-sdk-build-version打印 SDK 路径、版本、构建号
--show-sdk-platform-path、--show-sdk-platform-version打印平台目录、平台版本
--show-toolchain-path打印工具链目录
-f, --find 工具打印工具的完整路径
xcrun clang …、xcrun xcodebuild …执行工具。clang 会按 -sdk 和 -arch 补上目标三元组、SDK 根目录和链接器参数
> xcrun --sdk iphoneos --show-sdk-path

codesign

签名与验签,参数、输出和退出码与 macOS 一致,证书从证书目录读取。构建时会自动签名,一般不需要手动调用。

接下来