Flutter集成square_in_app_payments后无法在iOS模拟器运行求助
解决Flutter集成Square SDK在iOS模拟器启动崩溃问题
问题核心
启动时崩溃提示Library not loaded: @rpath/ThreeDS_SDK.framework/ThreeDS_SDK,本质是Square的SquareBuyerVerificationSDK依赖的ThreeDS_SDK未适配iOS模拟器架构,再加上M1 Mac的Rosetta环境和Podfile里的全局架构设置冲突导致的。
解决步骤
1. 修改Podfile架构配置
把Podfile里的post_install段替换成下面的代码,只针对Square相关SDK设置x86_64架构,避免全局强制引发冲突:
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.delete 'IPHONEOS_DEPLOYMENT_TARGET' # 仅对Square系列SDK和ThreeDS_SDK设置模拟器架构 if target.name.start_with?('Square') || target.name == 'ThreeDS_SDK' config.build_settings['ARCHS[sdk=iphonesimulator*]'] = 'x86_64' end end end end
2. 彻底清理并重装依赖
依次执行以下命令,清空旧缓存和依赖后重新安装:
flutter clean cd ios && rm -rf Podfile.lock Pods pod install --repo-update cd ..
3. 用Rosetta启动开发工具(可选)
如果上面的步骤没解决问题,右键点击VSCode图标→显示简介→勾选「使用Rosetta打开」,重启后再运行项目。
4. 检查SDK版本
确认你用的Flutter Square SDK是最新版,旧版本可能存在M1模拟器的兼容bug。
补充说明
M1 Mac的iOS模拟器默认用arm64架构,但ThreeDS_SDK目前只提供x86_64的模拟器版本。之前全局强制所有SDK用x86_64会和Flutter自身的arm64组件冲突,改成仅针对Square相关SDK设置架构,既能满足依赖要求,又不会影响Flutter的正常运行。
内容的提问来源于stack exchange,提问作者Julia Pak
相关产品推荐
相关产品推荐

