Mac M1下Flutter 2.5 iOS调试报symbol(s) not found for architecture arm64错误
解决方案
核心问题为离职同事开发的自定义iOS插件未适配M1芯片对应的arm64模拟器架构,且Flutter 2.5版本收紧了架构校验规则,导致链接阶段符号查找失败。你可以按照以下步骤逐一排查解决:
步骤1:修改自定义插件的podspec配置
找到该自定义插件本地存放路径下的ios/[插件名称].podspec文件,更新架构相关配置:
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386', 'VALID_ARCHS' => 'arm64 arm64e x86_64' } s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' }
如果插件的iOS部分使用预编译的静态库(.a/.framework格式)而非源码,需要先校验静态库是否包含arm64架构切片:
- 执行命令查看静态库支持的架构:
lipo -info 你的静态库文件完整路径 - 若输出结果中无arm64字段,需要使用插件源码重新编译包含arm64模拟器切片的静态库,合并后替换插件内原静态库文件即可。
步骤2:更新主项目Podfile配置
打开项目根目录下的ios/Podfile,在post_install代码块中添加全局架构配置:
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*]'] = 'i386' config.build_settings['ARCHS[sdk=iphonesimulator*]'] = 'arm64 x86_64' config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES' end end end
步骤3:清空缓存重新构建
依次执行以下命令清理缓存并重建依赖:
flutter clean rm -rf ios/Pods ios/Podfile.lock flutter pub get cd ios && pod install --repo-update
命令执行完成后打开Xcode,选择顶部菜单栏Product > Clean Build Folder,再运行项目即可。
临时调试方案
如果需要临时快速启动项目调试,可右键点击应用程序中的Xcode,勾选「使用Rosetta打开」,重启Xcode后即可正常运行。
内容的提问来源于stack exchange,提问作者Benjamin
相关产品推荐
相关产品推荐

