【问题标题】:Undefined symbol: _OBJC_CLASS_$_FIRAnalytics未定义符号:_OBJC_CLASS_$_FIRAnalytics
【发布时间】:2020-01-24 07:03:57
【问题描述】:

我正在尝试在我的 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 应用
    • MyCustom 框架
      • 视图控制器

【问题讨论】:

  • 我以前见过这个。对我们有用的唯一解决方法是将 Firebase 链接到主要目标而不是框架
  • 是的,我已将 firebase 链接到主要目标

标签: ios swift firebase frameworks firebase-analytics


【解决方案1】:

我在使用 Carthage 添加 Firebase 时遇到了类似问题。

所以在运行命令之后 carthage 更新 --platform iOS 您需要将 Carthage/Build/iOS/ 中的文件复制到您的项目中 实际上它只是复制了对 Firebase 文件的引用,但文件仍在 Carthage/Build/iOS/ 文件夹中

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

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

因此,完全删除所有与 Firebase 相关的框架并再次添加它们 - 解决了问题。

附:并且不要忘记从 Xcode 中的 Link Binary With Libraries Build Phase 中删除 Firebase.framework,以免在更新后出现另一个错误:) Error: Firebase.framework does not contain bitcode.

【讨论】:

  • 如果像我这样使用 cocoapods,请在 Podfile 中注释掉 firebase 安装,运行 pod update,取消注释 Firebase 模块,运行 pod install,它应该会修复它。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2020-12-21
    • 2020-02-15
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 2018-05-23
    • 2013-03-23
    • 2012-02-15
    相关资源
    最近更新 更多