FirebaseFirestoreBinary 11.0.0

FirebaseFirestoreBinary 11.0.0

Invertase OSS 维护。



 
依赖关系
FirebaseCore= 11.0.0
FirebaseCoreExtension= 11.0.0
FirebaseFirestoreInternalBinary= 11.0.0
FirebaseSharedSwift= 11.0.0
 

  • Google, Inc.

Firestore iOS SDK

从 Firebase iOS SDK 仓库发布下载中提取的预编译 Firestore iOS SDK xcframework 文件,由 Firebase iOS SDK 版本标记,并作为可消耗的 podspec 提供。

为什么

目前 Firestore iOS SDK 依赖于大约 500k 行的 C++ 代码,这些代码在作为 Xcode 构建的一部分编译时需要花很长时间——这在 CI 环境中尤其如此。

相关问题

前后对比

以下时间为在包含 Firestore 的项目中对 Xcode 建构(缓存完全清除)进行计时时的前后对比时间。

Mac mini (2018) 6 核心处理器:

Before:    ~ 240s
After:     ~  45s

GitHub Action CI 2 核心处理器:

Before:    ~ 551s
After:     ~ 174s

使用方法

集成非常简单,只需在项目的 Podfile 中添加一行代码。之后,项目中所有已经从 pods 中使用 Firebase iOS SDK 的依赖项将自动从这些预编译的二进制文件获取 Firestore,而不是从源码获取。

  • 对于 Flutter 和 React Native,此文件通常位于 ios/Podfile
  • 对于 Flutter,目标通常是 Runner,可以在 target 'Runner' do 块中添加。
  • 对于 React Native,它将包含所有本地 React-* pods 的目标中。
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '7.11.0'

⚠️ 注意:在标签为 7.11.0 的位置,应将其更改为您或您的依赖项使用的 Firebase/Firestore 的 pod 版本 - 格式为 X.X.X。对于 FlutterFire,正在使用的版本可以在 此处 查看,对于 React Native Firebase,在 此处 查看。如果当前 Firebase/Firestore pod 未指定版本,则可以省略上一行中的 , :tag => '7.11.0' 并使用 master 上的最新版本。

第一次 pod install 特定版本时,CocoaPods 将远程检索指定标签的此 git 仓库,并将其本地缓存以用作 FirebaseFirestore pod 的源。

⚠️ 注意:如果您先前在 CI 中对 iOS 构建进行了缓存,您可能会发现,在使用预编译二进制文件时不再需要缓存,并且它实际上可能会使构建时间延长几分钟。

解决 'leveldb' 缺失或重复符号错误

"leveldb" 框架是 Firestore 需要的,但它可能包含在其它库中,因此需要正确包含或排除。此 podspec 默认会尝试自动执行此操作,通过检测应该排除的已知情况,但有时自动检测失败。

如果您的构建由于重复的 'leveldb' 符号而失败,请使用 pod FirebaseFirestore/WithoutLeveldb 作为 pod 名称,而不是 pod FirebaseFirestore,重新安装 pods 并尝试重新构建。

如果您的构建由于缺少 'leveldb' 符号而失败,请使用 pod FirebaseFirestore/WithLeveldb 作为 pod 名称,而不是 pod FirebaseFirestore,重新安装 pods 并尝试重新构建。

支持的 Firebase iOS SDK 版本

以下是本存储库中当前支持的 Firebase iOS SDK 版本,此列表将自动更新。

⚠️ 备注:如果您正在寻找不在支持的版本列表中的新版本,请仔细查看 firebase-ios-sdk 的上游发行说明。这可能发生在 firebase-ios-sdk 团队发布一个临时版本以解决某些紧急问题时,但并未执行完整的发布流程。如果发生这种情况,请不要担心 - 在继续之前,请等待下一个支持的版本,或者如果必须使用临时版本,则暂时解耦此预编译框架。6.31.1 是一个例子,更多详情 在此处 解释了为什么会发生这种情况。

许可证


Invertase 构建和维护。