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

Firebase pods generate duplicate symbols for architecture arm64

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

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

pb_common2.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 pods:

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

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

好的,所以我找到了解决方案。

pod deintegrate
pod install

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

要修复此 运行 下面的命令,然后使用 flutter clean 重新生成 pod 或清理。

  1. cd ios/
  2. pod cache clean --all
  3. pod deintegrate --verbose
  4. pod setup --verbose
  5. pod install --verbose
  6. flutter run