You need to enable JavaScript to run this app. 如何覆写Swift Package Manager的"unsafeFlags"默认限制以依赖使用该参数的本地包
优惠活动
大模型
产品
解决方案
定价
更多

如何覆写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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.31 23:45:03