【问题标题】:build error trying to add Firebase to iOS app, "Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_FIRApp""尝试将 Firebase 添加到 iOS 应用程序时出现构建错误,“架构 x86_64 的未定义符号:“_OBJC_CLASS_$_FIRApp””
【发布时间】:2021-07-21 03:56:01
【问题描述】:

我正在尝试向现有 iOS 应用添加 Firebase 分析支持。 该应用已经使用 CocoaPods 导入 FMDB,并且还对 TensorFlow C 库有手动构建依赖。

将 Firebase 添加到我的 podfile 文件后,我的构建失败了, “未找到模块‘Firebase’”

播客文件

target 'myapp' do
  pod 'FMDB'
  pod 'Firebase/Analytics'
  
end

标题搜索路径

$(TENSORFLOW_ROOT) $(TENSORFLOW_ROOT)/tensorflow/contrib/makefile/downloads $(TENSORFLOW_ROOT)/tensorflow/contrib/makefile/downloads/eigen $(TENSORFLOW_ROOT)/tensorflow/contrib/makefile/downloads/protobuf/src $(TENSORFLOW_ROOT)/tensorflow/contrib/makefile/gen/proto $(TENSORFLOW_ROOT)/tensorflow/contrib/makefile/downloads/nsync/public/ $(TENSORFLOW_ROOT)/tensorflow/contrib/makefile/downloads/absl ${PODS_ROOT}/Headers/Public/**

框架搜索路径

"${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FirebaseAnalytics" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GoogleAppMeasurement"

图书馆搜索路径

"${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FirebaseAnalytics" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GoogleAppMeasurement"

其他链接器路径

"${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FirebaseAnalytics" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GoogleAppMeasurement"

尝试 2

这似乎是通过将 $(inherited) 添加到“标题搜索路径”和“框架搜索路径”来解决的,好像这些路径是自定义的,如果没有这个,它们似乎不会拾取 pod。尽管没有这个 FMDB 工作正常。 但这仍然失败并出现后来的构建错误,

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_FIRApp", referenced from:
      objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1

如果我在我的代码中删除对 FIRApp 的引用,它就可以正常构建。

尝试 3

构建设置

将 $(inherited) 添加到“其他链接器标志” 这会在 FMDB 上产生构建错误,

ld: library not found for -lFMDB

尝试 4

构建设置

将 $(inherited) 添加到“库搜索路径” 这会在 FMDB 中产生不同的构建错误

duplicate symbol '_OBJC_IVAR_$_FMResultSet._parentDB' in:
    /Users/paphus/Library/Developer/Xcode/DerivedData/Miami-btsjnxdkshhzzmcximegwcbjweif/Build/Intermediates.noindex/Miami.build/Debug-iphonesimulator/Miami.build/Objects-normal/x86_64/FMResultSet-8b2ff65f24dc1207099e1a3d8676b2cd074aac777d9679e86442f90b5f7cd476.o
    /Users/paphus/Library/Developer/Xcode/DerivedData/Miami-btsjnxdkshhzzmcximegwcbjweif/Build/Products/Debug-iphonesimulator/FMDB/libFMDB.a(FMResultSet.o)
ld: 49 duplicate symbols for architecture x86_64

尝试 5

构建阶段

将二进制文件与库链接, 现在似乎缺少 FirebaseCore?

ld: library not found for -lFirebaseCore

我还尝试了“pod deintegrate”和 pod cache clean”以及其他一些东西,没有运气。

【问题讨论】:

  • 你能在新的空白项目中重现这个问题吗?如果没有,清理环境:关闭 Xcode,删除目录 myapp/Pods、~/Library/Developer/Xcode/DerivedData/*、~/.cocoapods/*。使用最新的 cocoapods。使用 pod --verbose install 运行。在 Xocde 中构建,并在构建日志中检查编译标志(搜索路径)。
  • 除了@paiv 的建议之外,在运行pod deintegrate 之后,在重新运行pod install 之前手动从头和库设置中清除所有Pods 引用
  • 您是否有某个示例项目因此错误而失败?
  • 我已经尝试清理所有的 pod,它不会改变任何错误
  • @James 如果添加了 -ObjC,请尝试从其他链接器标志中删除一次吗?

标签: ios firebase cocoapods


【解决方案1】:

您是否尝试将 OTHER_LDFLAGS 构建设置设置为 $(inherited) 标志?

【讨论】:

    【解决方案2】:

    所以我放弃了让 pod 工作,而是跟随,

    https://firebase.google.com/docs/ios/setup#frameworks

    从下载的 SDK, https://firebase.google.com/download/ios

    这是第一次设置和工作的方式更容易和简单。 只需将 FirebaseAnalytics 目录作为组添加到项目中,并将 Firebase.h 文件添加到项目中,就是这样。有效。

    【讨论】:

      猜你喜欢
      • 2016-09-17
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多