集成第三方Framework的Flutter应用flutter run无法运行iOS模拟器问题咨询
问题原因
- 你当前使用的是Apple Silicon(M系列芯片)的Mac,Xcode运行模拟器时,如果检测到依赖的framework缺少arm64模拟器切片,会自动降级使用x86_64架构构建应用,通过Rosetta转译运行模拟器,因此不会报错。
flutter run默认会匹配当前Mac的架构,给arm64架构的模拟器构建对应arm64架构的应用包,但你使用的第三方ConnectSDK仅提供了x86_64的模拟器架构切片、arm64的真机架构切片,没有arm64的模拟器架构切片,因此链接阶段找不到对应架构的符号报错。
解决方案
- 临时运行方案:执行flutter命令时强制指定x86_64架构构建即可正常运行:
flutter run --debug --simulator-x86_64
高版本Flutter可使用以下命令:
flutter run -d <你的模拟器ID> --ios-architecture x86_64
- 项目永久适配方案:打开项目
ios/Podfile文件,在post_install代码块补充排除模拟器arm64架构的配置:
post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) # 新增以下配置 target.build_configurations.each do |config| config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64' end end end
配置完成后执行flutter clean清理缓存,再重新运行flutter run即可。
- 长期最优方案:联系第三方SDK提供商,索要包含arm64模拟器架构切片的XCFramework版本,从根本上解决架构兼容问题。
内容的提问来源于stack exchange,提问作者Tim Brückner
相关产品推荐
相关产品推荐

