Flutter iOS模拟器编译报错:record_mp3-3.0.0架构不兼容问题
解决record_mp3-3.0.0 iOS编译架构不兼容问题
问题根源是record_mp3-3.0.0包中自带的libmp3lame.a静态库仅包含iOS真机的arm64架构,缺少模拟器所需的x86_64/arm64架构,导致编译时出现链接错误。即便在项目中添加arm64到排除架构,也可能因为三方库的配置未同步而失效。
以下是可行的解决步骤:
替换兼容的静态库
- 定位到pub缓存中的包路径:
/Users/mohamedwazery/.pub-cache/hosted/pub.dev/record_mp3-3.0.0/ios/Classes/Fat-Lame/lib/ - 替换其中的
libmp3lame.a为同时支持真机和模拟器的通用架构版本。你可以自行编译lame源码生成:# 编译真机arm64版本 xcodebuild -project lame.xcodeproj -target libmp3lame -configuration Release -sdk iphoneos ARCHS=arm64 # 编译模拟器arm64+x86_64版本 xcodebuild -project lame.xcodeproj -target libmp3lame -configuration Release -sdk iphonesimulator ARCHS="arm64 x86_64" # 合并为通用静态库 lipo -create Release-iphoneos/libmp3lame.a Release-iphonesimulator/libmp3lame.a -output libmp3lame.a - 将生成的通用库替换原路径下的文件。
- 定位到pub缓存中的包路径:
同步三方库的排除架构配置
- 打开iOS项目的
Podfile,添加如下配置,强制让record_mp3的target在模拟器编译时排除arm64:post_install do |installer| installer.pods_project.targets.each do |target| if target.name == 'record_mp3' target.build_configurations.each do |config| config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64' end end end end - 执行
pod install重新安装依赖。
- 打开iOS项目的
清理项目后重新编译
- 在Xcode中选择
Product > Clean Build Folder清理构建缓存 - 重启Xcode,重新编译运行项目
- 在Xcode中选择
内容的提问来源于stack exchange,提问作者Mohamed Wazery
相关产品推荐
相关产品推荐

