如何通过CocoaPods安装GeoFirestore?该库是否仍可使用?
我之前在项目里尝试用这个库的时候也踩过一模一样的坑,太懂你这种装不上的崩溃感了!先给你明确几个关键点:
这个仓库还能用吗?
答案是能,但有很大限制:这个库确实已经停止维护了(最后一次提交大概在2021年),它的代码适配的是Firebase 8.x系列的SDK,而现在Firebase已经更新到10.x+版本,新的SDK在依赖结构、API接口上都有不少变动,直接用CocoaPods安装必然会出现依赖冲突、链接错误这类问题。
解决你遇到的安装错误的办法
针对你提到的framework not found FirebaseDatabase和依赖错误,这里有三个可行的方向:
1. 锁定Firebase依赖版本(最省心的方案)
既然GeoFirestore只兼容旧版Firebase,那我们直接在Podfile里指定Firebase相关库的版本,和GeoFirestore的适配版本对齐:
# 锁定Firebase到8.x系列,和GeoFirestore的适配版本匹配 pod 'Firebase/Core', '~> 8.15.0' pod 'Firebase/Firestore', '~> 8.15.0' pod 'Firebase/Database', '~> 8.15.0' # 引入GeoFirestore pod 'GeoFirestore', :git => 'https://github.com/imperiumlabs/GeoFirestore-iOS.git'
然后执行命令:
pod install --repo-update
这样CocoaPods会拉取对应版本的Firebase库,避免版本不兼容导致的链接错误,基本能解决你遇到的问题。
2. 手动修改源码适配新版Firebase(适合需要用新Firebase的场景)
如果你的项目必须用最新版Firebase,那只能手动拉取GeoFirestore的源码,自己修改里面的Firebase相关调用:
- 把仓库的源码克隆到本地,拖入你的Xcode项目
- 检查代码中所有调用FirebaseDatabase、Firestore的地方,适配最新的SDK接口(比如初始化方式、方法名的变更)
- 手动添加Firebase相关依赖到项目中
不过这个方案需要你有一定的Objective-C/Swift开发能力,而且后续得自己维护这部分代码,比较折腾。
3. 放弃依赖,自己实现地理查询(最稳妥的长期方案)
其实GeoFirestore的核心逻辑就是GeoHash算法:把经纬度转换成字符串,然后通过Firestore的范围查询实现地理检索。你完全可以找一个活跃维护的GeoHash第三方库(或者自己写个简单的实现),然后在自己的代码里实现地理查询逻辑,这样完全不用依赖这个没人维护的库,可控性更强。
最后总结
如果你的项目是老项目,只是需要临时用地理检索功能,那锁定Firebase版本的方案完全可以凑合用;如果是新项目,更建议自己实现地理查询逻辑,避免后续因为依赖旧库带来的维护麻烦。
内容的提问来源于stack exchange,提问作者Sofiane Lyno

