尝试将 Firebase 添加到 iOS 应用时出现构建错误,"Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_FIRApp""

build error trying to add Firebase to iOS app, "Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_FIRApp""

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

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

播客文件

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

Header 搜索路径

$(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"

其他 Linker 路径

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

尝试 2

这似乎可以通过将 $(inherited) 添加到“Header 搜索路径”和“框架搜索路径”来解决,就好像这些路径是自定义的一样,它们似乎没有选择 pods 没有这个。尽管 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) 添加到“其他 Linker 标志” 这会在 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

构建阶段

Link 带库的二进制文件, 现在似乎缺少 FirebaseCore?

ld: library not found for -lFirebaseCore

我也尝试了“pod deintegrate”和 pod cache clean“以及其他一些东西,但没有成功。

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

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

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

从以下位置下载 SDK, https://firebase.google.com/download/ios

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