ld:通过 cocoapods 从 4.x.x 升级到 5.x.x firebase 后找不到框架 FirebaseAnalytics
Posted
技术标签:
【中文标题】ld:通过 cocoapods 从 4.x.x 升级到 5.x.x firebase 后找不到框架 FirebaseAnalytics【英文标题】:ld: framework not found FirebaseAnalytics after upgrading from 4.x.x to 5.x.x firebase through cocoapods 【发布时间】:2018-09-05 11:54:48 【问题描述】:Xcode 开始遇到这个错误
ld:找不到框架 Firebase-XXXXXX
其中 XXXXXX 可以是 podfile
中列出的任何框架,这里是该 podfile 的特定部分
pod 'Firebase/Database'
pod 'Firebase/Auth'
pod 'FirebaseUI/Database'
pod 'Firebase/Storage'
pod 'Firebase/Messaging'
在我使用项目目录中的pod install
将现有项目的firebase 框架(在启动此项目时位于4.x.x version
中)更新为firebase 的较新的5.x.x version
(用于使用ML-Kit)之后,编译失败。
上网后目前采取的步骤,
以下是使用正在运行的 4.x.x 版本项目的备份副本完成的,
a) 尝试了这个绿色标记question的所有答案
b) 清除了该项目的 Xcode 派生数据,cocoapods 缓存已卸载/重新安装。注释掉 podfile 中的 firebase 部分,然后 pod install 两次(一次用于删除 firebase,第二次用于再次安装)
c) 手动将生成 firebase 依赖项的错误复制到项目的文件夹(坏主意,52 个错误 300 多个警告)
我们将不胜感激。
【问题讨论】:
那么主要问题是什么?当您尝试使用新框架时,更新项目是正常的方式,因为如果不进行此修复,某些功能可能会处于非活动状态。 升级 podfile 中提到的所有框架后,编译失败。如问题开头所述:ld: framework not found Firebase-XXXXXX
【参考方案1】:
将以下内容添加到 Podfile:
pod 'Firebase/Core'
在 Firebase 5 中,FirebaseAnalytics 不再是数据库、消息传递和存储的隐式依赖项。
Firebase 文档建议始终包含 Firebase/Core
以获取 Firebase 的核心功能,包括分析。
【讨论】:
这似乎有效,但无法通过这个:ld: framework not found FirebaseDatabaseUI
运气不好,附带说明 -- 有一个 cocoapods 警告:target overrides the
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` 在Pods/Target Support Files/Pods-x/Pods-x.debug.xcconfig'. This can lead to problems with the CocoaPods installation
中定义的构建设置,清除它并按照您的建议进行尝试,但错误仍然存在【参考方案2】:
每个 Firebase 依赖项之间都有各种联系,即使您的项目不需要,例如 - 对于此依赖项:ld: framework not found FirebaseDatabaseUI
在项目中不是必需的,而是通过这些步骤取出的,
转到
Target(project_name)-> Build Settings-> search(Other linker flags)-> from 他们删除了冲突的依赖项
确保重新构建并检查该依赖项是否被使用过,在我的情况下它没有。
【讨论】:
以上是关于ld:通过 cocoapods 从 4.x.x 升级到 5.x.x firebase 后找不到框架 FirebaseAnalytics的主要内容,如果未能解决你的问题,请参考以下文章
错误:ld:找不到带有 CocoaPods 的 -lPods 的库
Cocoapods Google Analytics ld:找不到框架
Xcode 6.1.1 的静态库和 cocoapods - ld: library not found 错误