vision-camera-code-scanner 架构 x86_64 反应本机的未定义符号

问题描述 投票:0回答:3

在我的 React Native 项目中使用

vision-camera-code-scanner
包时遇到构建错误。

速记错误是:

架构 x86_64 的未定义符号

完整错误如下:

ld: warning: ignoring file /XXXXXXXXXXXXXXXXXXX/Build/Products/Debug-iphonesimulator/vision-camera-code-scanner/libvision-camera-code-scanner.a, building for iOS Simulator-x86_64 but attempting to link with file built for iOS Simulator-arm64
Undefined symbols for architecture x86_64:
Undefined symbols for architecture x86_64:
  "_GPBClearOneof", referenced from:
      _MLKITx_EPTFlagValue_ClearValueOneOfCase in MLKitCommon(FlagValues.pbobjc.o)
      _MLKITx_PHENORegistrationInfo_ClearPackageVersionOneOfCase in MLKitCommon(RegistrationInfo.pbobjc.o)
      _MLKITx_PHENORegistrationInfo_ClearApplicationInfoOneOfCase in MLKitCommon(RegistrationInfo.pbobjc.o)
      _MLKITx_CLCCCounter_ClearCounterIdOneOfCase in MLKitCommon(Counters.pbobjc.o)
  "_GULLogBasic", referenced from:
      _MLKLog in MLKitCommon(MLKLogger.o)
  "_OBJC_CLASS_$_GDTCORTransport", referenced from:
      objc-class-ref in MLKitCommon(MLKFirelogTransport.o)
  "_OBJC_CLASS_$_GPBCodedOutputStream", referenced from:
      objc-class-ref in MLKitCommon(CCTLogOutputStream.o)
  "_OBJC_CLASS_$_GPBDescriptor", referenced from:
      objc-class-ref in MLKitCommon(Experiments.pbobjc.o)
      objc-class-ref in MLKitCommon(Metalog.pbobjc.o)
      objc-class-ref in MLKitCommon(FlatFile.pbobjc.o)
      objc-class-ref in MLKitCommon(Clientanalytics.pbobjc.o)
      objc-class-ref in MLKitCommon(FirebaseMlSdk.pbobjc.o)
      objc-class-ref in MLKitCommon(UploaderState.pbobjc.o)
      objc-class-ref in MLKitCommon(DeviceExperimentIds.pbobjc.o)
      ...
  "_OBJC_CLASS_$_GPBEnumArray", referenced from:
      objc-class-ref in MLKitBarcodeScanning
      objc-class-ref in MLKitVision(GMVLogger.o)
  "_OBJC_CLASS_$_GPBEnumDescriptor", referenced from:
      objc-class-ref in MLKitCommon(Experiments.pbobjc.o)
      objc-class-ref in MLKitCommon(FlatFile.pbobjc.o)
      objc-class-ref in MLKitCommon(Clientanalytics.pbobjc.o)
      objc-class-ref in MLKitCommon(FirebaseMlSdk.pbobjc.o)
      objc-class-ref in MLKitCommon(Barhopper.pbobjc.o)
      objc-class-ref in MLKitCommon(IosAccessibilityState.pbobjc.o)
      objc-class-ref in MLKitCommon(PhenotypeLog.pbobjc.o)
      ...
  "_OBJC_CLASS_$_GPBFileDescriptor", referenced from:
      objc-class-ref in MLKitCommon(Experiments.pbobjc.o)
      objc-class-ref in MLKitCommon(Metalog.pbobjc.o)
      objc-class-ref in MLKitCommon(FlatFile.pbobjc.o)
      objc-class-ref in MLKitCommon(Clientanalytics.pbobjc.o)
      objc-class-ref in MLKitCommon(FirebaseMlSdk.pbobjc.o)
      objc-class-ref in MLKitCommon(UploaderState.pbobjc.o)
      objc-class-ref in MLKitCommon(DeviceExperimentIds.pbobjc.o)
      ...
  "_OBJC_CLASS_$_GPBInt32Array", referenced from:
      objc-class-ref in MLKitCommon(CCTClearcutLogEvent.o)
  "_OBJC_CLASS_$_GPBMessage", referenced from:
      _OBJC_CLASS_$_MLKITx_EXHParam in MLKitCommon(Experiments.pbobjc.o)
      _OBJC_CLASS_$_MLKITx_EXHParam_ExtensionValue in MLKitCommon(Experiments.pbobjc.o)
      _OBJC_CLASS_$_MLKITx_EXHDeviceAccount in MLKitCommon(Experiments.pbobjc.o)
      _OBJC_CLASS_$_MLKITx_EXHScope in MLKitCommon(Experiments.pbobjc.o)
      _OBJC_CLASS_$_MLKITx_EXHParamPartition in MLKitCommon(Experiments.pbobjc.o)
      _OBJC_CLASS_$_MLKITx_EXHCrossAppDescriptor in MLKitCommon(Experiments.pbobjc.o)
      _OBJC_CLASS_$_MLKITx_EXHConfigurationTier in MLKitCommon(Experiments.pbobjc.o)
      ...
  "_OBJC_CLASS_$_GPBRootObject", referenced from:
      _OBJC_CLASS_$_MLKITx_EXHExperimentsRoot in MLKitCommon(Experiments.pbobjc.o)
      _OBJC_CLASS_$_MLKITx_CADPMetalogRoot in MLKitCommon(Metalog.pbobjc.o)
      _OBJC_CLASS_$_MLKITx_EPIFlatFileRoot in MLKitCommon(FlatFile.pbobjc.o)
      _OBJC_CLASS_$_MLKITx_CADPClientanalyticsRoot in MLKitCommon(Clientanalytics.pbobjc.o)
      _OBJC_CLASS_$_MLKITx_FBMLFirebaseMlSdkRoot in MLKitCommon(FirebaseMlSdk.pbobjc.o)
      _OBJC_CLASS_$_MLKITx_CCTUploaderStateRoot in MLKitCommon(UploaderState.pbobjc.o)
      _OBJC_CLASS_$_MLKITx_EXHDeviceExperimentIdsRoot in MLKitCommon(DeviceExperimentIds.pbobjc.o)
      ...
  "_OBJC_CLASS_$_GTMLogMininumLevelFilter", referenced from:
      objc-class-ref in MLKitCommon(GIPLoggingReroutingGTMLogger.o)
  "_OBJC_CLASS_$_GTMLogger", referenced from:
      objc-class-ref in MLKitCommon(PHTInternalHeterodyneSyncer.o)
      objc-class-ref in MLKitCommon(PHTHeterodyneSyncer.o)
      objc-class-ref in MLKitCommon(GIPPseudonymousIDStore.o)
      objc-class-ref in MLKitCommon(CCTLogOutputStream.o)
      objc-class-ref in MLKitCommon(CCTClearcutUploader.o)
      objc-class-ref in MLKitCommon(CCTClearcutMetaLogger.o)
      objc-class-ref in MLKitCommon(CCTClearcutFileUtility.o)
      ...
  "_OBJC_CLASS_$_GTMSessionCookieStorage", referenced from:
      objc-class-ref in MLKitCommon(CCTClearcutUploader.o)
  "_OBJC_CLASS_$_GTMSessionFetcher", referenced from:
      objc-class-ref in MLKitCommon(CCTClearcutUploader.o)
  "_OBJC_CLASS_$_GTMSessionFetcherService", referenced from:
      objc-class-ref in MLKitCommon(PHTFlatFilePhenotype.o)
      objc-class-ref in MLKitCommon(MLKModelDownloader.o)
      objc-class-ref in MLKitVision(GMVCloudVisionClient.o)
  "_OBJC_CLASS_$_GULCCComponent", referenced from:
      objc-class-ref in MLKitCommon(MLKCustomModelManager.o)
  "_OBJC_CLASS_$_GULCCComponentContainer", referenced from:
      objc-class-ref in MLKitCommon(MLKContext.o)
      objc-class-ref in MLKitCommon(MLKCustomModelManager.o)
  "_OBJC_CLASS_$_GULCCComponentType", referenced from:
      objc-class-ref in MLKitCommon(MLKModelManager.o)
      objc-class-ref in MLKitCommon(MLKContext.o)
      objc-class-ref in MLKitCommon(MLKCustomModelManager.o)
  "_OBJC_CLASS_$_GULUserDefaults", referenced from:
      objc-class-ref in MLKitCommon(MLKModelPreferencesManager.o)
      objc-class-ref in MLKitCommon(MLKAnalyticsLogger.o)
      objc-class-ref in MLKitCommon(MLKModelDownloader.o)
  "_OBJC_CLASS_$_RCTBridge", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_RCTBundleURLProvider", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_METACLASS_$_GPBMessage", referenced from:
      _OBJC_METACLASS_$_MLKITx_EXHParam in MLKitCommon(Experiments.pbobjc.o)
      _OBJC_METACLASS_$_MLKITx_EXHParam_ExtensionValue in MLKitCommon(Experiments.pbobjc.o)
      _OBJC_METACLASS_$_MLKITx_EXHDeviceAccount in MLKitCommon(Experiments.pbobjc.o)
      _OBJC_METACLASS_$_MLKITx_EXHScope in MLKitCommon(Experiments.pbobjc.o)
      _OBJC_METACLASS_$_MLKITx_EXHParamPartition in MLKitCommon(Experiments.pbobjc.o)
      _OBJC_METACLASS_$_MLKITx_EXHCrossAppDescriptor in MLKitCommon(Experiments.pbobjc.o)
      _OBJC_METACLASS_$_MLKITx_EXHConfigurationTier in MLKitCommon(Experiments.pbobjc.o)
      ...
  "_OBJC_METACLASS_$_GPBRootObject", referenced from:
      _OBJC_METACLASS_$_MLKITx_EXHExperimentsRoot in MLKitCommon(Experiments.pbobjc.o)
      _OBJC_METACLASS_$_MLKITx_CADPMetalogRoot in MLKitCommon(Metalog.pbobjc.o)
      _OBJC_METACLASS_$_MLKITx_EPIFlatFileRoot in MLKitCommon(FlatFile.pbobjc.o)
      _OBJC_METACLASS_$_MLKITx_CADPClientanalyticsRoot in MLKitCommon(Clientanalytics.pbobjc.o)
      _OBJC_METACLASS_$_MLKITx_FBMLFirebaseMlSdkRoot in MLKitCommon(FirebaseMlSdk.pbobjc.o)
      _OBJC_METACLASS_$_MLKITx_CCTUploaderStateRoot in MLKitCommon(UploaderState.pbobjc.o)
      _OBJC_METACLASS_$_MLKITx_EXHDeviceExperimentIdsRoot in MLKitCommon(DeviceExperimentIds.pbobjc.o)
      ...
  "_OBJC_METACLASS_$_GTMLogger", referenced from:
      _OBJC_METACLASS_$_MLKITx_GIPLoggingReroutingGTMLogger in MLKitCommon(GIPLoggingReroutingGTMLogger.o)
  "_RCTAppSetupDefaultRootView", referenced from:
      -[AppDelegate application:didFinishLaunchingWithOptions:] in AppDelegate.o
  "_RCTAppSetupPrepareApp", referenced from:
      -[AppDelegate application:didFinishLaunchingWithOptions:] in AppDelegate.o
  "_kGTMSessionFetcherStatusDomain", referenced from:
      ___91-[MLKITx_PHTInternalHeterodyneSyncer syncHoldingLockWithSyncedScopes:fetchReason:callback:]_block_invoke in MLKitCommon(PHTInternalHeterodyneSyncer.o)
      ___150-[MLKITx_PHTHeterodyneSyncer batchSyncWithAccounts:syncedScopes:fetchReason:throttlingCache:heterodyneSyncInfo:accountToAuthToken:lastError:callback:]_block_invoke in MLKitCommon(PHTHeterodyneSyncer.o)
      ___69-[MLKModelDownloader beginModelDownloadWithURL:modelInfo:conditions:]_block_invoke.285 in MLKitCommon(MLKModelDownloader.o)
      ___63-[MLKITx_GMVCloudVisionClient initWithCloudUri:apiKey:options:]_block_invoke in MLKitVision(GMVCloudVisionClient.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我尝试通过运行以下类似的

问题
来解决问题:
pod deintegrate && pod cache clean --all
,然后在ios目录中运行pod install

遗憾的是,这并没有解决问题,我还尝试了以下thread中建议的步骤:即排除目标arm64。但这也没有修复错误。

我还在这个 github thread 上阅读了以下内容:

这与 Google MLKit 团队不提供 ARM 模拟器二进制文件有关,我们无法自己编译,因为源代码不公开

所以现在我有点迷失了该怎么办。
非常感谢任何帮助或建议。

使用 mac book pro M1 14 英寸
运行最新版本的 React Native

如果需要其他信息,请告诉我,以便我可以将其添加到问题中。

ios react-native cocoapods arm64 google-mlkit
3个回答
3
投票

您必须按照以下步骤从

pod 文件
中排除 arm64

  1. 将其添加到您的 pod 文件中:
post_install do |installer|
  react_native_post_install(installer)
  installer.pods_project.build_configurations.each do |config|
    config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
  end
end
  1. 确保在您的 pod 文件中使用此 Flipper 版本:
use_flipper!({'Flipper' => '0.79.0'})
  1. 然后,清洁您的 Pod 并重新安装它们:
rm -rf ~/Library/Caches/CocoaPods && rm -rf ./ios/Pods && rm -rf ~/Library/Developer/Xcode/DerivedData/* && pod deintegrate && pod setup && npx pod-install
  1. 可选,iOS模拟器支持:

由于排除

arm64
将阻止您的应用程序在本机模拟器上运行,因此您需要安装 Rosetta 支持并启用 Rosetta 模拟器:

$ software update --install-rosetta

如果没有这个,应用程序将启动,但一旦您尝试 MLKit 调用就会崩溃。


1
投票

根据我对此主题的发现,Google MLKit 尚不支持 arm64(在尝试通过 iOS 项目上的 SPM 导入它的选项时发现它)。在 M1 机器上构建此程序的唯一方法是使用 Rosetta 2 在 x86_64 兼容性上运行整个项目。但是,Apple 不支持在兼容模式下运行 Xcode 配置,因此此选择可能会出现其他错误。


0
投票

您必须通过ios模拟器使用rosetta。

此链接可能会帮助您解决问题。 https://sarunw.com/posts/open-using-rosetta-in-xcode-14-3/

© www.soinside.com 2019 - 2024. All rights reserved.