Flutter集成flutter_tesseract_ocr遇iOS模拟器架构错误求助
问题解答:Flutter集成flutter_tesseract_ocr的iOS编译错误
错误含义
这个错误是因为你使用的是M系列芯片的Mac,默认iOS模拟器采用arm64架构,但flutter_tesseract_ocr依赖的SwiftyTesseract库只编译了x86_64架构的模拟器版本,导致编译器找不到对应arm64-apple-ios-simulator的模块,从而编译失败。
解决方法
方法1:通过Xcode配置排除模拟器arm64架构
- 打开Flutter项目中
ios目录下的Runner.xcworkspace - 在左侧导航栏选中
Runnertarget,切换到Build Settings标签页 - 搜索Excluded Architectures,展开配置项:
- 选择
Debug配置,点击+按钮,添加arm64到iOS Simulator对应的架构列表中
- 选择
- 搜索Valid Architectures,确保包含
x86_64和arm64(Xcode 12+默认已配置) - 打开
ios/Podfile,在末尾添加以下脚本,强制让所有Pod在模拟器Debug模式下排除arm64:
post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) target.build_configurations.each do |config| if config.name == 'Debug' && config.build_settings['SDKROOT'] == 'iphonesimulator' config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64' end end end end
- 在终端进入
ios目录,执行pod install,然后回到Flutter项目执行flutter clean && flutter run
方法2:让模拟器以Rosetta模式运行(M系列Mac)
- 打开iOS模拟器,点击顶部菜单栏
Hardware > Use Rosetta for x86_64 Simulation - 重启模拟器后,再次运行Flutter项目,此时模拟器会以
x86_64架构运行,匹配SwiftyTesseract的支持版本
方法3:Android Studio中快速操作
- 在Android Studio的Terminal中依次执行:
flutter clean flutter pub get cd ios pod install --repo-update cd .. flutter run
(如果之前已经配置了Podfile脚本,此步骤可配合方法1使用)
是否影响真机运行?
完全不影响。真机采用的是arm64架构,SwiftyTesseract库本身包含了真机的arm64编译版本,所以真机编译和运行不会出现这个问题,该错误仅存在于M系列Mac的模拟器环境中。
内容的提问来源于stack exchange,提问作者Java Nerd
相关产品推荐
相关产品推荐

