You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义Swift Package内置Firebase plist后调用服务报错如何解决?

问题原因

默认FirebaseApp.configure()方法只会检索主应用的main bundle下的GoogleService-Info.plist文件。你将plist文件放在Swift Package的资源目录中时,文件会被打包到SPM为该模块生成的专属bundle内,不在主bundle的检索范围内,因此Firebase会抛出找不到文件的错误。

修复步骤
  • 第一步:在自定义Swift Package中新增自定义Firebase初始化方法,手动指定plist的读取路径
import Firebase

public enum FirebasePackageConfigurator {
    /// 从当前包的资源中读取plist初始化Firebase
    public static func configureFirebase() {
        // 获取当前SPM模块对应的bundle
        guard let plistPath = Bundle.module.path(forResource: "GoogleService-Info", ofType: "plist"),
              let firebaseOptions = FirebaseOptions(contentsOfFile: plistPath) else {
            fatalError("包内未找到有效的GoogleService-Info.plist文件")
        }
        // 用自定义配置初始化Firebase
        FirebaseApp.configure(options: firebaseOptions)
    }
}
  • 第二步:主项目集成时替换初始化逻辑
    不要调用默认的FirebaseApp.configure(),改为调用你封装的FirebasePackageConfigurator.configureFirebase()即可。
  • 可选校验:确认plist存放路径正确
    确保GoogleService-Info.plist存放在包的Sources/myCustomPackage/目录下,和你在Package.swift中声明的target路径匹配,避免资源打包失败。
额外优化提示

你当前Package.swift中的testTarget配置存在错误,依赖项应改为["myCustomPackage"]而非["myCustomPackageTests"],否则测试target无法正常依赖你的功能模块。

内容的提问来源于stack exchange,提问作者Anthony

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:54:03