【TUYA SDK集成八十一难】M1芯片的电脑编译iOS报错Undefined symbols for architecture arm64

App开发相关产品技术讨论,包括OEM App、App SDK、设备控制界面开发、小程序开发等话题


Post Reply
taojingGino
Posts: 23

问题:在M1芯片的电脑上集成SDK,Xcode编译,报错
Undefined symbols for architecture arm64:
"OBJC_CLASS$TYAudioEngine", referenced from:
objc-class-ref in TuyaSpeechKit(TuyaSpeechVADetector.o)
"
OBJC_CLASS$TuyaSceneIntent", referenced from:
objc-class-ref in TYSiriShortcutModule(TYSceneShortcutManager.o)
"OBJC_CLASS$_DWKWebView", referenced from:
objc-class-ref in TYHybridContainer(TYHybridContainerVC.o)
ld: symbol(s) not found for architecture arm64.

解决方法:
步骤 1: 在 Podfile 文件里添加以下代码 :
post_install do |installer|
installer.pods_project.build_configurations.each do |config|
config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
end
end

步骤 2:
在 Build Settings --> Excluded Architectures
下面增加 Any iOS Simulator SDK 选项,值为 arm64

步骤 3:
重新执行一下 pod install

原因:由于M1模拟器架构是arm64架构,而Intel芯片是x86_64的架构,从而导致编译出现了问题。
以前,我们创建的静态库,会分别打包出一份针对真机(arm64)和模拟器的(x86_64),然后将这两份合并成一个包后引入项目中进行使用。在Intel机型上,真机上使用arm64指令,模拟器(x86_64)中使用x86_64指令,所以不存在问题。但是在M1机型上,模拟器是以arm64运行的,显然再以x86_64运行就会出现问题。

Post Reply