未定义符号:_OBJC_CLASS_$_FIRApp

Undefined symbol: _OBJC_CLASS_$_FIRApp

我正在尝试使用 Swift 包管理器添加 Firebase Analytic 和 Firebase Crashlytics,这里是 link 的 git for firebase SDK
https://github.com/firebase/firebase-ios-sdk

之后,我将这两行添加到我的 AppDelegate 文件中

#import <FirebaseCore/FIRApp.h>

#import <Firebase.h>

一切正常,直到我添加这个 [FIRApp configure]; 出现错误

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

我想过每个 link 的类似问题的堆栈溢出尝试每个解决方案但没有任何帮助我改变其他链接器标志等... 请帮助我..我真的很感激...我正在使用 Xcode 12.1 和 Objective-C 这是我收到的错误截图

以及添加依赖的截图

经过大量搜索,我解决了问题。解决方案是

  1. 其他链接器标志中的“$(inherited)”
  2. Build Active Architecture Only 值为“Yes”
  3. 为 firebase SPM 添加 运行 脚本是“${BUILD_DIR%Build/*}SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run”
  4. 清理项目
  5. 构建项目

可以试试这个会有帮助,

更改链接-> Mach-O类型为动态库,对于您使用的框架,然后它工作正常。

我在最近的工作中集成 MLKit 时遇到了同样的问题。该应用程序 运行 在模拟器和设备上都很好,但是当我尝试存档构建时,它开始向我抛出以下错误-:

Undefined symbol: _OBJC_CLASS_$_MLKFaceDetector

我在我的文件中使用 MLKFaceDetector 对象。

解析:-

转到构建设置 -> 体系结构 -> 将标准体系结构替换为 arm64。另外,请确保 arm 和 64 之间没有 space。

我理解的原因是 MLKit 仅支持 64 位而不是 32 位,并且由于我们使用的是同时针对 32 位和 64 位的标准架构,因此 Xcode 在归档 32 位时无法找到 MLKit 文件。因此,我们明确表示 Xcode 仅针对 64 位而不是 32 位存档。

缺点 - 它不支持一些较旧的 iOS 设备。

终于找到解决办法了 对于我将 ios 部署目标更改为比以前更高的版本 workd.Mine 是 9.0 我将其更改为 13 .

Target-general- 部署信息