Xcode添加Firebase包依赖后iPhone真机运行报签名错误如何解决
结论
Swift Package Manager 引入的第三方依赖确实会触发真机运行的代码签名报错,你通过空白对照项目复现问题的排查方式是对的,已经可以排除业务代码影响,问题根源是Firebase依赖引入后,Xcode对依赖包的默认签名配置和主项目签名规则冲突。
可落地的排查解决步骤
- 统一关闭所有依赖包的签名权限
打开项目TARGETS列表,选中所有Firebase相关的SPM依赖目标(例如FirebaseCore、FirebaseAnalytics等),进入Signing & Capabilities页,关闭自动签名选项,签名身份选择Don't Code Sign。配置完成后按Shift + Command + K清理构建产物,删除~/Library/Developer/Xcode/DerivedData路径下对应项目的缓存文件夹,避免旧配置干扰。 - 修正依赖库的嵌入规则
选中主App Target,进入Build Phases页,找到Frameworks, Libraries, and Embedded Content(低版本Xcode对应项为Embed Frameworks),把所有Firebase相关依赖库的嵌入规则从Embed & Sign修改为Do Not Embed。SPM引入的Firebase组件默认是静态库,不需要单独嵌入签名,错误开启嵌入签名会触发真机安装时的签名校验失败。 - 修复Xcode 15+版本SPM签名的已知bug
如果你使用的是Xcode 15及以上版本,系统会默认给SPM依赖强制开启签名,需要额外修改构建配置:选中主App Target进入Build Settings,搜索Other Code Signing Flags新增配置项--generate-entitlement-der;再批量选中所有依赖Target,把CODE_SIGNING_ALLOWED字段的值统一设置为NO,彻底禁止Xcode给依赖包单独签名。 - 重新校验主项目签名配置
回到主App Target的签名设置页,确认选中的开发者Team账号正确,连接的真机UDID已经被当前账号的描述文件包含,重新勾选自动签名让Xcode重新拉取匹配的描述文件,拔插真机完成设备信任后重新构建运行。
补充:如果以上步骤操作完还是报错,可以检查Firebase版本和Xcode版本的兼容关系,部分旧版Firebase SPM包没有适配新Xcode的签名规则,升级Firebase到最新正式版通常可以解决兼容问题。
内容的提问来源于stack exchange,提问作者Mansidak
相关产品推荐
相关产品推荐

