如何让SwiftUI Preview仅构建主目标 不编译测试目标
原因分析
SwiftUI预览触发测试目标构建是Xcode的默认机制导致的,和正常Run项目的构建逻辑存在差异:
- 正常Run项目时,Xcode只会构建当前scheme中Run阶段配置的目标以及显式声明的依赖,测试目标默认仅在Test动作下才会被构建
- SwiftUI预览为了保证预览内容能适配所有可能的关联逻辑,默认会启用隐式依赖检索,只要测试目标依赖了你正在预览的业务模块,哪怕没有显式加入Run构建列表,也会被自动纳入预览的构建范围,一旦测试目标存在编译错误就会直接导致预览失败
可行解决方法
调整Scheme构建配置(最常用)
- 点击Xcode顶部导航栏的Scheme下拉框,选择
Edit Scheme - 选中左侧栏的
Build选项 - 在右侧的目标列表中,找到所有测试目标,取消Run列的勾选状态(测试目标默认仅需要勾选Test列即可)
- 取消页面底部
Find Implicit Dependencies的勾选,关闭Xcode自动检索隐式依赖的逻辑,避免测试目标被自动拉入构建流程
修改测试目标依赖
如果测试目标不需要依赖当前预览的模块,可以打开测试目标的Build Phases设置,在Target Dependencies中移除对应业务模块的依赖项,Xcode就不会在预览该模块时触发测试目标构建。
临时禁用测试目标
如果测试目标暂时不需要使用且错误短期内不会修复,可以直接在项目导航栏选中测试目标,在右侧的Target Membership中取消对应scheme的勾选,完全将测试目标从当前scheme的构建范围中移除。
内容的提问来源于stack exchange,提问作者aluxian
相关产品推荐
相关产品推荐

