Firebase MLKit迁移-体系结构x86_64的未定义符号

问题描述

我在Firebase上的设置基于迦太基,并且一切工作正常。但是,既然我们已经迁移到MLKit(它们不支持Carthage),我们就包括了通过Cocoapods需要的MLKit中的两个库,但是我们继续遇到此链接器错误。

 Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_GULSwizzler",referenced from:
      objc-class-ref in GoogleAppMeasurement(UIViewController+APMScreenClassName_af3349bd4002ca3c2f62fd10b41b3eb5.o)
      objc-class-ref in FirebasePerformance(FPRSelectorInstrumentor.o)
      objc-class-ref in FirebasePerformance(FPRProxyObjectHelper.o)
  "_OBJC_CLASS_$_GULSceneDelegateSwizzler",referenced from:
      objc-class-ref in FirebaseAuth(FIRAuth.o)
  "_kGULNetworkHTTPStatusCodeNotModified",referenced from:
      -[APMMeasurement networkRemoteConfigFetchCompletionHandler:data:error:] in GoogleAppMeasurement(APMMeasurement_d6638b533a7cdc437824cf7209ad695a.o)
      ___46-[APMMeasurement(URL) requestDeferredDeepLink]_block_invoke in GoogleAppMeasurement(APMMeasurement+URL_89002570063d654e31cbed7a49d52cf9.o)
  "_kGULNetworkHTTPStatusCodeNotFound",referenced from:
      -[APMMeasurement networkRemoteConfigFetchCompletionHandler:data:error:] in GoogleAppMeasurement(APMMeasurement_d6638b533a7cdc437824cf7209ad695a.o)
  "_kGULNetworkHTTPStatusCodeCannotAcceptTraffic",referenced from:
      -[APMMeasurement networkUploadCompletionHandlerWithResponse:error:] in GoogleAppMeasurement(APMMeasurement_d6638b533a7cdc437824cf7209ad695a.o)
      -[APMMeasurement networkRemoteConfigFetchCompletionHandler:data:error:] in GoogleAppMeasurement(APMMeasurement_d6638b533a7cdc437824cf7209ad695a.o)
      -[APMETaskManager handleFetchingExperimentsResponse:data:error:] in GoogleAppMeasurement(APMETaskManager_93d6b77f5177bbfd267beceb0e63504e.o)
  "_kGULNetworkHTTPStatusNoContent",referenced from:
      -[APMMeasurement networkUploadCompletionHandlerWithResponse:error:] in GoogleAppMeasurement(APMMeasurement_d6638b533a7cdc437824cf7209ad695a.o)
      -[APMMeasurement networkRemoteConfigFetchCompletionHandler:data:error:] in GoogleAppMeasurement(APMMeasurement_d6638b533a7cdc437824cf7209ad695a.o)
      -[APMETaskManager handleFetchingExperimentsResponse:data:error:] in GoogleAppMeasurement(APMETaskManager_93d6b77f5177bbfd267beceb0e63504e.o)
      ___46-[APMMeasurement(URL) requestDeferredDeepLink]_block_invoke in GoogleAppMeasurement(APMMeasurement+URL_89002570063d654e31cbed7a49d52cf9.o)
  "_kGULNetworkHTTPStatusCodeUnavailable",referenced from:
      -[APMMeasurement networkUploadCompletionHandlerWithResponse:error:] in GoogleAppMeasurement(APMMeasurement_d6638b533a7cdc437824cf7209ad695a.o)
      -[APMMeasurement networkRemoteConfigFetchCompletionHandler:data:error:] in GoogleAppMeasurement(APMMeasurement_d6638b533a7cdc437824cf7209ad695a.o)
      -[APMETaskManager handleFetchingExperimentsResponse:data:error:] in GoogleAppMeasurement(APMETaskManager_93d6b77f5177bbfd267beceb0e63504e.o)
  "_OBJC_CLASS_$_GULNetwork",referenced from:
      objc-class-ref in GoogleAppMeasurement(APMAnalytics_8aebbab89e8f679989831a91d692718a.o)
      objc-class-ref in GoogleAppMeasurement(APMMeasurement_d6638b533a7cdc437824cf7209ad695a.o)
      objc-class-ref in GoogleAppMeasurement(APMAppDelegateInterceptor_8e30f6012706bd788ce60da1e2c6b7b7.o)
      objc-class-ref in GoogleAppMeasurement(APMETaskManager_93d6b77f5177bbfd267beceb0e63504e.o)
  "_OBJC_CLASS_$_GULAppDelegateSwizzler",referenced from:
      objc-class-ref in GoogleAppMeasurement(APMAnalytics_8aebbab89e8f679989831a91d692718a.o)
      objc-class-ref in FirebaseAuth(FIRAuth.o)
  "_kGULNetworkHTTPStatusOK",referenced from:
      -[APMMeasurement networkUploadCompletionHandlerWithResponse:error:] in GoogleAppMeasurement(APMMeasurement_d6638b533a7cdc437824cf7209ad695a.o)
      -[APMMeasurement networkRemoteConfigFetchCompletionHandler:data:error:] in GoogleAppMeasurement(APMMeasurement_d6638b533a7cdc437824cf7209ad695a.o)
      -[APMETaskManager handleFetchingExperimentsResponse:data:error:] in GoogleAppMeasurement(APMETaskManager_93d6b77f5177bbfd267beceb0e63504e.o)
      ___46-[APMMeasurement(URL) requestDeferredDeepLink]_block_invoke in GoogleAppMeasurement(APMMeasurement+URL_89002570063d654e31cbed7a49d52cf9.o)
  "_OBJC_CLASS_$_GULObjectSwizzler",referenced from:
      objc-class-ref in FirebasePerformance(FPRNetworkTrace.o)
      objc-class-ref in FirebasePerformance(FPRNSURLConnectionInstrument.o)
      objc-class-ref in FirebasePerformance(FPRObjectInstrumentor.o)
  "_OBJC_CLASS_$_GULMutableDictionary",referenced from:
      objc-class-ref in GoogleAppMeasurement(APMEExperiment_b4b8ea2ce659b487b048910f72991ad3.o)
      objc-class-ref in GoogleAppMeasurement(APMEExperimentRequestBuilder_43951e9ffb98994ef55aaa739e6b31f6.o)
      objc-class-ref in GoogleAppMeasurement(APMEManager_571d5ebf632e7ae66d886cd64faba90f.o)
      objc-class-ref in GoogleAppMeasurement(APMRemoteConfig_5115867d904d12fe7a11986cd4c600a1.o)
      objc-class-ref in GoogleAppMeasurement(APMESnapshot_013c5a04b20274dfe2124ec50deb4011.o)
ld: symbol(s) not found for architecture x86_64

使用Cocoapods设置所有内容不会引发此链接程序问题。但是我们真的想真正保留Firebase的迦太基设置。

我的Podfile包括以下两个Pod:

  pod 'GoogleMLKit/BarcodeScanning'
  pod 'GoogleMLKit/ObjectDetection'

我的Cartfile如下所示:

binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAnalyticsBinary.json" == 6.33.0
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseCrashlyticsBinary.json" == 6.33.0
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseRemoteConfigBinary.json" == 6.33.0
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebasePerformanceBinary.json" == 6.33.0
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseFirestoreBinary.json" == 6.33.0
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseProtobufBinary.json" == 6.33.0

解决方法

不支持混合迦太基和CocoaPods。 MLKit和Firebase对GoogleUtilities框架的依赖关系集都有冲突,无法正确解决。

通过从迦太基安装中删除GoogleUtilities.framework,然后在Podfile中显式添加必要的子规范集,可能可以解决该问题。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...