我正在使用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
我环顾四周,尝试将仅构建活动架构设置为否,将二进制文件链接到库-似乎没有任何效果。
在这种情况下我该怎么办?
答案 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。