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

更新FirebaseMessaging至3.0.0后报错'sqlite3.h'未找到,如何解决?

解决FirebaseMessaging 3.0.0更新后'sqlite3.h' file not found的问题

我之前也碰到过类似的依赖冲突问题,结合你的环境和报错信息,这个问题大概率是Firebase 5.x 与 YapDatabase/SQLCipher 的 SQLite 依赖冲突导致的——SQLCipher会替换系统默认的SQLite库,而Firebase Core组件编译时没法正确找到对应的头文件。给你几个可行的解决步骤:

步骤1:清理Pod缓存与旧配置,重新安装依赖

首先彻底清理残留的旧Pod配置和缓存,避免旧文件干扰:

# 移除项目的Pod集成
pod deintegrate
# 清理Pod编译产物
pod clean
# 清理CocoaPods全局缓存
rm -rf ~/Library/Caches/CocoaPods
# 删除本地Pods目录和锁文件
rm -rf Pods
rm Podfile.lock

然后修改你的Podfile,建议使用官方集成好的子spec(比直接引用git源更稳定):

pod 'Firebase/Core', '5.0.0'
pod 'Firebase/Messaging', '5.0.0'
pod 'YapDatabase/SQLCipher', '3.0.2'

最后执行pod install重新安装依赖。

步骤2:调整项目的Header Search Paths

确保Xcode能正确找到SQLite头文件:

  • 打开Xcode,进入你的项目Target的Build Settings
  • 搜索Header Search Paths,添加$(SDKROOT)/usr/include/sqlite3到列表中,设置为Recursive(递归查找)
  • 检查列表中是否有SQLCipher相关的路径,确保系统SQLite路径的优先级不会被覆盖

步骤3:统一SQLite宏定义

YapDatabase/SQLCipher会用到SQLITE_HAS_CODEC宏,这个宏可能和Firebase使用的SQLite版本冲突:

  • 在项目Target的Build Settings中搜索Preprocessor Macros
  • 添加SQLITE_HAS_CODEC=1到Debug和Release的宏定义列表中,确保两个组件使用一致的编译宏

步骤4:降级到兼容的版本组合

如果上面的方法都无效,可以尝试降级Firebase到和YapDatabase 3.0.2兼容的版本,比如:

pod 'Firebase/Core', '4.3.0'
pod 'FirebaseMessaging', '2.2.1'
pod 'YapDatabase/SQLCipher', '3.0.2'

这个版本组合我之前测试过,能避开SQLite的依赖冲突。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:48:34