Tuist命令行构建默认Scheme配置问题及Fastlane构建失败排查
解决Tuist命令行构建默认Scheme配置问题
Tuist默认Scheme的选择逻辑
- Tuist会把
Project.swift/Workspace.swift的schemes数组里第一个定义的Scheme设为命令行构建的默认选项; - 如果是workspace结构,优先选第一个包含可执行目标(App、Framework这类)的Scheme;
- 要是存在和项目/工作区同名的Scheme,Tuist会直接把它设为默认。
手动指定命令行默认Scheme的两种方式
1. 在项目配置里固定默认Scheme
直接在Project.swift或Workspace.swift中添加defaultScheme参数,指定你需要的Scheme:
// Project.swift 示例 let project = Project( name: "YourApp", targets: [/* 你的目标列表 */], schemes: [ Scheme(name: "Dev"), Scheme(name: "Prod") ], defaultScheme: "Dev" // 这里设置命令行默认Scheme )
// Workspace.swift 示例 let workspace = Workspace( name: "YourWorkspace", projects: [/* 关联的项目路径 */], defaultScheme: "Prod" )
执行tuist generate重新生成项目后,Xcode里的「Use {scheme} for command-line builds」就会自动改成你指定的Scheme,不用手动调整。
2. 构建时临时指定Scheme
如果不想修改项目默认配置,每次构建时直接通过命令行参数指定Scheme:
tuist build --scheme Dev
结合fastlane的话,只要在构建动作里明确指定Scheme,同时确保tuist构建时也带上Scheme参数就行。
适配Fastlane的实操建议
在Fastfile里直接绑定Scheme,避免Tuist默认Scheme干扰:
lane :build_dev do # 可选:生成项目时直接指定默认Scheme,和fastlane保持一致 sh("tuist generate --default-scheme Dev") # 构建时强制指定Scheme,彻底避免默认值问题 gym( scheme: "Dev", workspace: "YourWorkspace.xcworkspace", # 其他构建参数 ) end
要是临时需要修改默认Scheme,也可以用xcodebuild命令直接设置:
xcodebuild -workspace YourWorkspace.xcworkspace -scheme Dev -setActiveScheme
内容的提问来源于stack exchange,提问作者TiredMagicalCoder
相关产品推荐
相关产品推荐

