接入Firestore后自动安装的未声明pod是否为运行必需项?
问题解答
你观察到的自动安装的依赖,绝大多数是运行Firebase Analytics和Firestore的必需项,不存在多余的冗余引入,各部分依赖的作用如下:
- Firebase公共基础依赖:
FirebaseCore、FirebaseCoreInternal等库是所有Firebase服务通用的基础依赖,负责SDK全局初始化、配置管理、系统能力对接等公共逻辑,是所有Firebase组件运行的前提。 - Firestore专属依赖:Firestore的跨平台核心逻辑采用C实现,因此会引入
abseil作为C基础工具库,同时引入gRPC-Core、gRPC-C++等RPC框架依赖实现和云端的实时数据通信、同步能力,以上都是Firestore运行的必备依赖。 - Analytics专属依赖:
GoogleAppMeasurement是Analytics数据采集、上报的核心实现库,GoogleUtilities提供日志、编码等通用工具能力,都是Analytics运行的必备依赖。
构建耗时优化方案
你可以通过以下方案大幅降低构建耗时:
- 使用
cocoapods-binary插件实现依赖预编译,将所有第三方Pod预编译为静态框架,不需要每次编译项目都重新编译依赖库,配置完成后构建耗时可以降低80%以上:- 首先执行
gem install cocoapods-binary安装插件 - 在Podfile开头添加
plugin 'cocoapods-binary' - 给需要预编译的Pod添加
:binary => true参数,再执行pod install即可
- 首先执行
- 如果你不需要Firestore的离线持久化、实时数据同步等原生SDK提供的进阶能力,可以直接调用Firebase官方提供的REST接口实现数据读写,无需引入Firestore原生SDK,可砍掉90%的相关依赖。
- 升级到最新正式版Xcode,新版构建系统对多核编译、增量编译的优化幅度较大,也能显著降低多依赖项目的构建耗时。

内容的提问来源于stack exchange,提问作者Dylan
相关产品推荐
相关产品推荐

