从 CocoaPods 迁移

CocoaPods 宣布,他们将于 2026 年 12 月进入只读模式,届时将无法再发布新的 Pod 版本。以下部分详细介绍了此项变更,并说明了如何将应用迁移到其他安装管理器。

概览

  • 具体变化CocoaPods 将进入只读状态。Firebase 12 是发布到 CocoaPods 的最后一个主要版本,Firebase 将于 2026 年 10 月停止向 CocoaPods 发布新版本。
  • 我的应用会崩溃吗?不会。现有版本的 Firebase 库仍可在 CocoaPods 注册表中找到,只要 CocoaPods 生态系统继续提供支持,使用这些 CocoaPods 版本的应用就会继续正常运行。
  • 为什么迁移?如需继续获取最新功能、性能改进和关键修复,您应迁移到 Swift Package Manager 或手动安装。

为了适应 CocoaPods 的公告,Firebase 将于 2026 年 10 月停止向 CocoaPods 发布新版本。这些更改会影响以下所有 Pod 及其子依赖项:

受影响的 Firebase Pod
Firebase FirebaseAuth FirebaseInstallations
FirebaseABTesting FirebaseCore FirebaseMessaging
FirebaseAI FirebaseCrashlytics FirebaseMLModelDownloader
FirebaseAILogic FirebaseDatabase FirebasePerformance
FirebaseAnalytics FirebaseFirestore FirebaseRemoteConfig
FirebaseAppCheck FirebaseFunctions FirebaseStorage
FirebaseAppDistribution FirebaseInAppMessaging

这些变更还会影响封装原生 Firebase Apple SDK 的所有 Firebase 发行版,包括 Firebase Unity SDK、Firebase C++ SDK 和 FlutterFire。

迁移 Apple 应用

如果您要将其他(非 Firebase)依赖项从 CocoaPods 迁移出来,请注意,整个项目使用单一安装方法是业界最佳实践。在同一目标中混合使用 CocoaPods 和 Swift Package Manager (SPM) 可能会导致复杂的依赖项循环和构建错误。如果您的非 Firebase 依赖项尚不支持 SPM,那么在迁移过程中,对 Firebase 库使用手动安装是整合工作流的最稳定方式。

Swift Package Manager (SPM)

什么是 Swift Package Manager?

Swift Package Manager (SPM) 是 Apple 的原生代码分发管理工具。它直接集成到 Xcode 中,无需使用 CocoaPods 等外部 CLI 工具,并且对于大多数标准配置,无需使用 .xcworkspace,从而简化了项目结构。

迁移到使用 Swift Package Manager

对于大多数项目,迁移到 Swift Package Manager 不需要更改应用代码,除非您的项目具有自定义 Xcode 配置或严重依赖 CocoaPods 安装脚本的依赖项。

以下是从 CocoaPods 迁移到 Swift Package Manager 的方法:

  1. 验证应用的每个依赖项是否都支持 Swift Package Manager。所有 Firebase 库都支持 SPM,但您需要在 GitHub 代码库或产品页面中检查非 Firebase 依赖项是否支持 SPM。如果您的某些非 Firebase 依赖项不支持 SPM,那么使用手动安装而非 SPM 是从 CocoaPods 迁移的最稳定路径。
  2. 关闭 Xcode,然后从项目中移除 CocoaPods:
    1. 在项目目录中运行以下命令,卸载 CocoaPods 依赖项:
      pod deintegrate
    2. 删除 CocoaPods 生成的 .xcworkspace。
  3. 在 Xcode 中,使用 Swift Package Manager 依赖项更新项目:
    1. 通过 Xcode 打开项目的 .xcodeproj 文件。
    2. 依次点击 File > Add Package Dependencies(文件 > 添加软件包依赖项),重新添加应用依赖项。
  4. 添加 Firebase 软件包后,您可以更新所依赖的 Firebase 库,方法是在 Xcode 中前往项目设置,选择应用目标,然后在 Frameworks, Libraries, and Embedded Content(框架、库和嵌入内容)下更新库。

如需详细了解如何在 Xcode 中使用 SPM,请参阅 Apple 文档。

手动安装

什么是手动安装?

手动安装涉及下载 Firebase.zip 归档,其中包含适用于所有 Firebase 产品的预编译 XCFramework。这样,您就可以直接将特定 SDK 拖放到 Xcode 项目中,而无需使用依赖项管理器。

迁移到使用手动安装

  1. 关闭 Xcode,然后从项目中移除 CocoaPods:
    1. 在项目目录中运行以下命令,卸载 CocoaPods 依赖项:
      pod deintegrate
    2. 删除 CocoaPods 生成的 .xcworkspace。
  2. 按照安装指南中的步骤手动将 Firebase 添加到您的项目。

迁移 Unity、C++ 和 Flutter 应用

Firebase Unity SDK 和 FlutterFire

大多数 Unity 和 Flutter 开发者无需采取任何行动。更新到 Unity 或 Flutter 上的最新版本 Firebase 后,系统会自动将 Apple 平台上的底层依赖项管理器迁移到 Swift Package Manager。

请注意,如果您通过 CocoaPods 管理非 Firebase 依赖项,则可能需要手动迁移这些依赖项。

Firebase C++ SDK

如果您之前通过 CocoaPods 添加了底层 iOS 依赖项,则可以按照上述迁移说明更新 Firebase CocoaPod 依赖项,改为使用 Swift Package Manager。

常见问题解答

我需要在 2026 年 10 月之后继续使用 CocoaPods。如何让应用保持运行?

您可以使用旧版 Firebase Pod,也可以从 GitHub 复制 Firebase Podspec,并将其托管在您自己的规范代码库中。

无论哪种情况,我们都建议您尽快从 CocoaPods 迁移。 在 2026 年 10 月停止支持 CocoaPods 后,我们将不再为直接从 podspec 安装 Firebase 提供官方支持。如果您选择自行托管 podspec,则需要负责使其保持最新状态。

为什么 CocoaPods 可以发布到 2026 年 12 月,但对 CocoaPods 的支持却会在 2026 年 10 月终止?

我们选择 10 月是为了确保在 12 月注册表锁定之前,发布到 CocoaPods 的最终版本是稳定的。此时间表提供了必要的缓冲时间,以便安全地协调这些最终更新,并确保依赖于原生 SDK 但发布周期延迟的跨平台 SDK 有充足的时间来准备自己的发布。

如果我不更新,我的应用会停止运行吗?

不会,此次弃用只会影响 Firebase 库的未来版本。 Firebase 12 是发布到 CocoaPods 的最后一个主要版本,只要 CocoaPods 生态系统继续提供支持,CocoaPods 中的现有版本(v12 及更早版本)仍可安装和正常运行。

这会影响项目结算吗?

不需要

迁移到 Swift Package Manager 后,我在编译项目时收到“找不到 FirebaseLibrary”错误。如何解决这个问题?

确保您已将 Firebase 软件包添加到 Xcode 项目中。

添加 Firebase 软件包时,Xcode 会提示您将 Firebase 框架添加到应用的 build 目标中。如果您在此步骤中忘记添加框架,可以稍后在目标的设置中添加,具体位置为 Build Phases > Link Binary with Libraries。如果您的项目包含多个目标,请确保您已将 Firebase 添加到正确的目标。

此过渡会破坏我的 CI/CD 流水线吗?

不会,运行 pod install 或 pod update 的流水线将继续适用于现有版本。不过,这些应用将无法获取 2026 年 10 月之后发布的任何新 Firebase 库更新。