Firebase pod 为架构 arm64 生成重复符号

Posted

技术标签:

【中文标题】Firebase pod 为架构 arm64 生成重复符号【英文标题】:Firebase pods generate duplicate symbols for architecture arm64 【发布时间】:2019-10-31 21:34:24 【问题描述】:

我需要帮助来解决我的重复符号错误。它是在使用 CocoaPods 安装 Firebase Analytics 后开始的。

重复的符号都在 (34) 中: /Library/Developer/Xcode/DerivedData/appName/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/nanopb.build/Objects-normal/arm64/

pb_common 2.o; pb_common.o; pb_encode 2.o; pb_encode.o; pb_decode 2.o 和 pb_decode.o

更新到 Xcode 11.2 并安装 Firebase 6.10.0(原为 6.11.0)后,GoogleUtilities 中出现了 5 个其他重复符号错误:

duplicate symbol '_OBJC_CLASS_$_GULAppEnvironmentUtil' in:
/Users/abnormalsolutions/Library/Developer/Xcode/DerivedData/infood-agjvxotmgtevwrbdluxflosleqao/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/GoogleUtilities.build/Objects-normal/arm64/GULAppEnvironmentUtil 3.o
/Users/abnormalsolutions/Library/Developer/Xcode/DerivedData/infood-agjvxotmgtevwrbdluxflosleqao/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/GoogleUtilities.build/Objects-normal/arm64/GULAppEnvironmentUtil.o

duplicate symbol '_OBJC_METACLASS_$_GULAppEnvironmentUtil' in:
/Users/abnormalsolutions/Library/Developer/Xcode/DerivedData/infood-agjvxotmgtevwrbdluxflosleqao/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/GoogleUtilities.build/Objects-normal/arm64/GULAppEnvironmentUtil 3.o
/Users/abnormalsolutions/Library/Developer/Xcode/DerivedData/infood-agjvxotmgtevwrbdluxflosleqao/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/GoogleUtilities.build/Objects-normal/arm64/GULAppEnvironmentUtil.o

duplicate symbol '_GULNSDataZlibRemainingBytesKey' in:
/Users/abnormalsolutions/Library/Developer/Xcode/DerivedData/infood-agjvxotmgtevwrbdluxflosleqao/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/GoogleUtilities.build/Objects-normal/arm64/GULNSData+zlib 2.o
/Users/abnormalsolutions/Library/Developer/Xcode/DerivedData/infood-agjvxotmgtevwrbdluxflosleqao/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/GoogleUtilities.build/Objects-normal/arm64/GULNSData+zlib.o

duplicate symbol '_GULNSDataZlibErrorKey' in:
/Users/abnormalsolutions/Library/Developer/Xcode/DerivedData/infood-agjvxotmgtevwrbdluxflosleqao/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/GoogleUtilities.build/Objects-normal/arm64/GULNSData+zlib 2.o
/Users/abnormalsolutions/Library/Developer/Xcode/DerivedData/infood-agjvxotmgtevwrbdluxflosleqao/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/GoogleUtilities.build/Objects-normal/arm64/GULNSData+zlib.o

duplicate symbol '_GULNSDataZlibErrorDomain' in:
/Users/abnormalsolutions/Library/Developer/Xcode/DerivedData/infood-agjvxotmgtevwrbdluxflosleqao/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/GoogleUtilities.build/Objects-normal/arm64/GULNSData+zlib 2.o
/Users/abnormalsolutions/Library/Developer/Xcode/DerivedData/infood-agjvxotmgtevwrbdluxflosleqao/Build/Intermediates.noindex/Pods.build/Debug-iphoneos/GoogleUtilities.build/Objects-normal/arm64/GULNSData+zlib.o

ld: 5 duplicate symbols for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation).

我在 SO 上看到了其他重复的符号问题并尝试了一些建议,但我不敢尝试太多。删除派生数据没有帮助。我还尝试从构建设置下的其他链接器标志中删除 -Objc 链接器标志,如此处所建议的。也没有帮助。

我现在使用 Firebase 6.11.0。这是我的 Firebase pod:

pod 'Firebase/Core'
pod 'Firebase/Auth'
pod 'Firebase/Database'
pod 'Firebase/Messaging'
pod 'Firebase/AdMob'

如果我需要发布更多详细信息,请告诉我。我真的不知道如何处理这个!

【问题讨论】:

否决?我的问题有什么问题? 您降级了 Firebase? 安装 Firebase 6.10.0(原为 6.11.0) 是的,但没有效果。我试图回到它工作的时候。 哈哈。不,可能不是。不是反对者,但我认为问题是我们很难用给定的数据重现这个问题。我已经更新了多个项目,但没有遇到该错误。 是的,很奇怪。但幸运的是 pod deintegrate 成功了 【参考方案1】:

好的,所以我遇到了一个解决方案。

pod deintegrate
pod install

【讨论】:

过去两天寻找答案,这个简单的事情就成功了!谢谢! 很高兴它可以帮助别人! 完美解决方案! @DanAbnormal 你是怎么做到的? @Cypras 您使用终端并在包含您的 podfile 的文件夹中运行这些命令。【参考方案2】:

android 中,当有重复的文件时,我通常只需发送flutter clean,这些重复的文件就会消失。但在 iPhone flutter clean 中不会清除重复文件。一种解决方法是进入每个 pod 并手动删除重复文件,这非常耗时。

要解决此问题,请运行以下命令,然后使用 flutter clean 重新生成 pod 或清理。

    cd ios/ pod cache clean --all pod deintegrate --verbose pod setup --verbose pod install --verbose flutter run

【讨论】:

以上是关于Firebase pod 为架构 arm64 生成重复符号的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 8:找不到用于 pod 的架构 arm64 的符号

iOS,ld:未找到架构 arm64 的 GoogleMaps 框架

架构 arm64 的未定义符号:Crashlytics (CLSBetaController.o) 中的 CLSBetaController 块调用

ubuntu上构建arm64的镜像

pod firebase 到 Xcode 的错误

无法为架构 arm64 和 x86_64 构建 opencv ios 框架