【发布时间】:2019-08-06 14:32:21
【问题描述】:
我正在使用 Ionic 4 框架开发一个应用程序,目前正在尝试为 iOS 构建它并将其发布到 App Store。我得到的错误是当我尝试在 Xcode 中运行应用程序时,它将在链接阶段失败并出现以下错误:
ld:架构 x86_64 clang 的 346 个重复符号:错误:链接器 命令失败,退出代码为 1(使用 -v 查看调用)。
前面是一个重复符号列表,如下所示:
重复符号 _OBJC_IVAR__$_FIRInstanceIDURLQueryItem._name 在: /Users/james/Library/Developer/Xcode/DerivedData/Jambox-ataoinheliizvyaczvbklhkqvhpf/Build/Products/Debug-iphonesimulator/FirebaseInstanceID/libFirebaseInstanceID.a(FIRInstanceIDURLQueryItem.o) Jambox/Plugins/cordova-plugin-firebase/FirebaseInstanceID.framework/FirebaseInstanceID(FIRInstanceIDURLQueryItem_ce817fff617a4255d51c2a25da32a1f0.o)
这些与以下框架有关:
- FirebaseInstanceID.framework
GoogleUtilities.framework
nanopb.framework
FirebaseCore.framework
我已经尝试了一些解决这个问题的方法,但都没有成功:
1)。从其他链接器标志中删除 -ObjC 和 $(inherited) - 这会导致应用程序成功构建和链接,但在启动时崩溃并出现以下错误:
*** 由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'+[FIRApp registerAsConfigurable:]: 发送到类的无法识别的选择器 0x1080bc178'
2)。删除重复符号列表中的每个框架 - 这有助于减少重复符号的数量。在我必须删除 GoogleUtilities.framework 之前,我可以将其减少到 65 个重复符号,这会导致构建失败并出现以下错误:
架构 x86_64 的未定义符号:
“_OBJC_CLASS_$_GULObjectSwizzler”,引用自: FirebasePerformance 中的 objc 类引用(FPRObjectInstrumentor_f65d32035cadef24185912716f0b12f9.o) FirebasePerformance 中的 objc 类引用(FPRNetworkTrace_3053ec2ab59f2fcfec4b18c29e4b4cec.o) FirebasePerformance 中的 objc 类引用(FPRNSURLConnectionInstrument_5611d225f62417fa73742554b6a45401.o) ld:未找到架构 x86_64 的符号 clang:错误:链接器 命令失败,退出代码为 1(使用 -v 查看调用)
3)。删除 DerivedData 文件夹 - 执行此操作后出现相同的错误。
4)。删除和添加 iOS 平台 - 相同的错误。
【问题讨论】:
标签: ios xcode ionic-framework linker-errors