SwiftUI预览构建依次编译Dev与Prod方案的原因咨询
针对你遇到的SwiftUI预览同时编译Dev和Prod方案的问题,结合Xcode 14.1的特性,主要有以下几个可能的原因:
目标依赖关系混乱:检查Dev方案的SwiftUI预览目标,是否在
Build Phases的Target Dependencies中意外添加了Prod方案的关联目标。如果预览目标依赖Prod的模块或产物,构建预览时就会自动触发Prod方案的编译流程,而非只处理当前选中的Dev方案。构建脚本的跨方案触发:若两个方案共用了某些自定义构建脚本(比如在
Run Script阶段),脚本中如果存在硬编码的Prod方案构建命令,或者逻辑上会遍历所有方案执行编译动作,那么在SwiftUI预览构建时,执行到该脚本就会连带触发Prod方案的构建流程。常规构建可能因为上下文不同不会触发,但预览构建的执行逻辑会触发这部分脚本。Xcode 14.1的已知缺陷:这个版本的SwiftUI预览机制存在一些未修复的bug,其中就包括多方案项目中预览构建错误触发非选中方案编译的问题。苹果在后续的Xcode版本(如14.3、15.x)中逐步修复了这类构建缓存和预览触发逻辑的问题,升级Xcode通常能解决这类异常。
预览Scheme配置异常:进入Dev方案的
Edit Scheme界面,检查Run或Preview阶段的设置,是否勾选了类似Build for all schemes的选项,或者预览目标的Build Settings中引用了Prod方案专属的资源、宏定义,导致构建预览时必须编译Prod方案才能满足依赖。
内容的提问来源于stack exchange,提问作者cgaisl

