Flutter集成测试仅iOS端出现“Failed to stop app”错误如何解决?
解决方案
- 适配M1芯片iOS模拟器架构配置
该问题绝大多数场景下是M1芯片Mac运行iOS模拟器时的架构兼容问题导致,你可以按以下步骤修改配置:- 用Xcode打开项目下的
ios/Runner.xcworkspace文件 - 选中左侧导航栏的Runner项目,进入
Build Settings标签页 - 找到
Excluded Architectures配置项,在Debug、Release模式下,针对Any iOS Simulator SDK添加arm64架构 - 若项目使用CocoaPods,你可以直接在Podfile末尾添加以下代码,统一配置所有依赖包的架构排除规则:
修改完成后在ios目录执行post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" end end endpod install更新配置即可。 - 用Xcode打开项目下的
- 调整测试终止逻辑
flutter_driver的close()方法在iOS端不会主动终止应用进程,会触发系统停止失败的报错,你可以修改tearDownAll代码,在关闭连接前主动触发应用退出:tearDownAll(() async { if (driver != null){ await driver?.requestData('exit'); await driver!.close(); } }); - 调整运行参数
运行测试时可额外添加--no-pub参数,也可以右键点击Finder中的模拟器,选择显示简介,勾选使用Rosetta打开后再运行测试。 - 替换集成测试依赖
旧版flutter_driver目前已处于维护阶段,新版Flutter官方推荐使用integration_test包实现集成测试,该包对iOS平台的兼容性更好,可避免这类进程终止异常问题。
内容的提问来源于stack exchange,提问作者Ahmed Morra
相关产品推荐
相关产品推荐

