无法构建发布应用-架构Armv7的未定义符号

时间:2019-11-11 18:23:53

标签: ios xcode flutter build architecture

我正在使用Flutter在iOS(Xcode)上构建应用程序。调试版本运行良好,但是在发布版本时,会收到错误消息。

ld: warning: ignoring file /Users/mac/Library/Developer/Xcode/DerivedData/Runner-goymfovmnvitvmgsgblaexbdslkp/Build/Intermediates.noindex/ArchiveIntermediates/Runner/BuildProductsPath/Release-iphoneos/stripe_native/stripe_native.framework/stripe_native, building for iOS-armv7 but attempting to link with file built for iOS-arm64
Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_StripeNativePlugin", referenced from:
      objc-class-ref in GeneratedPluginRegistrant.o
ld: symbol(s) not found for architecture armv7

我环顾四周,尝试将仅构建活动架构设置为将二进制文件链接到库-似乎没有任何效果。

在这种情况下我该怎么办?

1 个答案:

答案 0 :(得分:0)

潜在的问题是iOS 11放弃了对armv7体系结构的支持,并且您的部署目标之一可能设置为<11.0,而另一个部署目标设置为> = 11.0或未设置。如果目标小于11.0,则不会构建armv7;如果目标>> 11.0或未设置,则不会构建armv7。

在我的情况下,问题是我的应用程序的部署目标设置为iOS 10,但未设置Pod的目标(因此构建了最新的iOS 13)。对于这种特殊情况,它用于UIDeviceIdentifier目标。错误是:

Undefined symbols for architecture armv7: "_OBJC_CLASS_$_UIDeviceHardware", referenced from: objc-class-ref in .... ld: symbol(s) not found for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation)

在这种情况下,我只是更新了广告连播,因此必须清除广告连播的设置。在“构建设置”选项卡下的Pod的目标设置中,我将iOS部署目标设置为10.0(与应用程序相同),并且可以正常工作。

作为替代方案,我可以将应用程序的部署目标设置为11.0。