未定义的符号: _OBJC_CLASS_$_FIRAnalytics

4

我正在尝试在我的iOS应用程序中调用Firebase Analytics,但编译项目时遇到错误。

我已经创建了一个框架,并从该框架调用Firebase分析,但我不明白为什么会出现以下错误。

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_FIRAnalytics", referenced from:
      objc-class-ref in ViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)


Showing Recent Errors Only
:-1: Undefined symbol: _OBJC_CLASS_$_FIRAnalytics

下面是我的应用程序结构

  • iOS 应用程序
    • 我的自定义框架
      • 视图控制器

我以前见过这个。唯一有效的解决方法是将 Firebase 链接到主目标而不是框架。 - Adam
是的,我已经将 Firebase 链接到主目标。 - user1374
3个回答

5

我添加Firebase到项目中时遇到了类似的问题。

所以在运行命令carthage update --platform iOS后,你需要将文件从Carthage/Build/iOS/复制到你的项目中。 实际上,它只是复制了对Firebase文件的引用,但文件仍然位于Carthage/Build/iOS/文件夹中。

在更新Xcode和Swift后 - 我需要更新我的依赖项 - 之后,我遇到了这样的错误

原因是更新后增加了一个额外的PromisesObjC.framework,它当然没有包含在该项目中。

所以完全删除与Firebase相关的所有框架并重新添加它们 - 解决了这个问题。

P.S. 不要忘记从Xcode的“链接二进制文件和库”构建阶段中删除Firebase.framework,以免在更新后遇到另一个错误 :) Error: Firebase.framework不包含比特码。


1
如果像我一样使用CocoaPods,请在Podfile中注释掉Firebase的安装,运行pod update,取消注释Firebase模块,再次运行pod install,这应该可以解决问题。 - chaytan

1
请确保在删除旧的Firebase库之后导入PromisesObjc.framework。我尝试了所有其他步骤,但这一步也是必需的。

0
在我的情况下,这个问题通过更新以下行中的“tag”(基于github存储库)来解决:ios/Podfile

pod 'FirebaseFirestore',:git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git',:tag => '10.1.0'


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接