【发布时间】: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,请尝试从其他链接器标志中删除一次吗?