为iOS构建后出现离子应用链接器错误

时间:2019-03-15 13:35:13

标签: ios xcode ionic-framework linker-errors

我正在使用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和$(继承)-这将导致应用程序成功构建和链接,但在启动时因以下错误而崩溃:

  

***由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'+ [FIRApp   registerAsConfigurable:]:无法识别的选择器已发送给类   0x1080bc178'

2)。删除重复符号列表中的每个框架-这有助于减少重复符号的数量。我可以将其减少到65个重复的符号,直到必须删除GoogleUtilities.framework,这会导致构建失败并显示以下错误:

  

x86_64体系结构的未定义符号:
  从以下位置引用的“ _OBJC_CLASS _ $ _ GULObjectSwizzler”         FirebasePerformance(FPRObjectInstrumentor_f65d32035cadef24185912716f0b12f9.o)中的objc-class-ref         FirebasePerformance中的objc-class-ref(FPRNetworkTrace_3053ec2ab59f2fcfec4b18c29e4b4cec.o)         FirebasePerformance中的objc-class-ref(FPRNSURLConnectionInstrument_5611d225f62417fa73742554b6a45401.o)   ld:找不到架构x86_64的符号clang:错误:链接器   命令失败,退出代码为1(使用-v查看调用)

3)。删除DerivedData文件夹-执行此操作后出现相同的错误。

4)。删除和添加iOS平台-同样的错误。

1 个答案:

答案 0 :(得分:0)

就我而言,当同时使用phonegap-plugin-push和cordova-plugin-firebase-analytics时会出现此问题。我在此issue thread中找到了解决方法。

基本上,转到Xcode中的“项目导航器”,然后“构建阶段”,展开“使用库链接二进制文件”,单击“ +”,然后添加“ libGoogleToolboxForMac.a”和“ libPodsYourProjectName.a”,然后重做构建。 / p>