如何覆写Swift Package Manager的"unsafeFlags"默认限制以依赖使用该参数的本地包
Swift Package Manager 本地包使用
unsafeFlags 的依赖覆写方案 SPM 默认拦截使用 unsafeFlags 的包被其他项目依赖的规则,是针对公网下载第三方包设计的安全防护,本地多包联调场景下存在明确的官方覆写通道,具体生效逻辑和配置方式如下:
覆写的生效边界
所有覆写规则仅对通过本地文件夹路径声明的依赖生效,从远程 Git 地址拉取的包不受覆写影响,依然会触发默认的安全校验,这层防护无法绕过。
具体配置方式
- 命令行临时构建覆写
执行swift build、swift test等SPM构建命令时,追加参数--allow-unsafe-dependencies,即可让当前构建会话跳过所有本地依赖的unsafeFlags校验,正常完成带自定义构建标志的编译流程。 - 项目级长期配置
在根项目的Package.swift同级目录创建Package.local.swift配置文件,添加信任的带unsafeFlags的本地包路径条目,SPM会在每次构建时自动加载该配置,不需要重复手动传递命令行参数。该文件默认被Git忽略,不会进入团队的版本控制流程,仅对本地开发环境生效。 - Xcode 工程配置
对于集成了本地Swift包的Apple平台应用/框架工程,在Xcode对应运行方案的「构建设置」中,找到Swift Package Manager的本地依赖覆写选项,勾选「允许本地依赖使用不安全构建标志」,即可让Xcode的代码索引、编译流程跳过对本地依赖unsafeFlags的校验。
常见注意事项
- 如果是将本地包推送到内部 Git 服务器、通过 HTTP/SSH 地址拉取的依赖,依然会被SPM判定为远程包,无法应用覆写规则;联调时需要直接使用本地文件夹路径声明这类内部包的依赖关系。
- 面向公网分发的公开包不建议使用
unsafeFlags:即使是内部团队维护的远程包,也尽量通过SPM原生提供的构建设置API(如专用的框架搜索路径配置项)替代直接传unsafeFlags,避免其他使用者触发依赖校验报错。
内容的提问来源于stack exchange,提问作者scaly
相关产品推荐
相关产品推荐

