【问题标题】:Apple Mach-O linker error _OBJC_CLASS_$_FIRInstanceIDApple Mach-O 链接器错误 _OBJC_CLASS_$_FIRInstanceID
【发布时间】:2019-09-18 07:42:56
【问题描述】:

我一直在尝试将 Firebase 通知实施到一个有很多目标(比如 13 个)的项目。我一直在苦苦挣扎,但终于让它在我的测试设备上运行,能够在一个名为 Postman 的应用发送通知时显示通知。

问题是我没有使用 cocoapods 来安装框架,因为每当我尝试安装 Pod 时,我的项目都无法构建,迫使我回滚并重试。所以我选择使用这个教程:https://www.mokacoding.com/blog/setting-up-firebase-without-cocoapods/

该应用程序运行良好,因此我尝试将其存档,然后发布到 testflight,人们告诉我在发布到 Testflight 时始终使用通用 iOS 设备,因此该应用程序可以在每台设备上运行,而不仅仅是我自己的正在测试。

但是当我尝试在 通用 iOS 设备上构建项目时,我收到错误:

架构 armv7s 的未定义符号:

 "_OBJC_CLASS_$_FIRInstanceID", referenced from:
   objc-class-ref in MyINFOAppDelegate.o
 "_OBJC_CLASS_$_FIRApp", referenced from:
   objc-class-ref in MyINFOAppDelegate.o 

ld:未找到架构 armv7s 的符号

clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看 调用)

无法存档并将其发送到 testflight。

我该怎么办?已经看到很多我做过但没能解决的帖子:(

【问题讨论】:

  • 嗨。您可以尝试打开终端并使用“file”命令检查 Firebase 框架二进制文件吗?此命令将显示哪个架构包含二进制文件。是否包含armv7?

标签: ios objective-c xcode firebase frameworks


【解决方案1】:

确保架构构建设置不包括 armv7s。默认情况下,体系结构定义为 $(ARCHS_STANDARD) 映射到“armv7 arm64”

Firebase 二进制发行版不包括 armv7s - 只有 armv7、i386、x86_64 和 arm64。

【讨论】:

  • 在架构上我有 arm64、armv7s 和 armv7。我所要做的就是把 $(ARCHS_STANDARD) 和它开始在我的测试设备和通用 iOS 设备中编译。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-06
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多