Flutter应用在iOS真机白屏崩溃 模拟器与Android端运行正常
根因定位
你初步定位的网络超时日志不是崩溃的核心诱因,真机报错日志中以下内容才是直接原因:
[VERBOSE-2:shell.cc(93)] Dart Error: Can't load Kernel binary: Invalid kernel binary format version. [VERBOSE-2:dart_isolate.cc(170)] Could not prepare isolate. [VERBOSE-2:runtime_controller.cc(382)] Could not create root isolate. [VERBOSE-2:shell.cc(576)] Could not launch engine with configuration.
出现该错误是因为Flutter编译缓存存在架构不匹配问题:iOS模拟器运行在x86_64架构下,而iPhone 7/7 Plus真机为armv7/arm64架构,之前的编译缓存没有清理干净,导致真机运行时加载了错误架构的Dart Kernel二进制文件,无法创建根isolate,Flutter引擎启动失败直接白屏,后续触发应用崩溃。Firebase相关的网络超时是引擎启动失败后的附带异常,不是崩溃的原因。
解决方案
按顺序执行以下操作即可修复:
- 第一步 清理全量编译缓存:在项目根目录执行命令
flutter clean,随后删除iOS目录下的Pods文件夹和Podfile.lock文件 - 第二步 重置iOS依赖:在iOS目录下依次执行命令
pod deintegrate、pod install - 第三步 校验Xcode编译配置:打开Xcode中的Runner项目,进入Build Settings页面
- 找到Excluded Architectures配置项,仅在Debug模式下为模拟器选项添加
arm64,真机配置不要排除任何架构 - 找到Build Active Architecture Only配置项,Debug模式设为
Yes,Release模式设为No - 确认Minimum iOS Version设置为12.0及以上,避免第三方库低版本适配异常
- 找到Excluded Architectures配置项,仅在Debug模式下为模拟器选项添加
- 第四步 重新编译运行:连接iOS真机后直接在Xcode中点击运行,或执行命令
flutter run --debug测试
如果以上操作仍未解决,可以将Flutter切换到官方稳定通道后重新编译,执行命令 flutter channel stable、flutter upgrade 即可。
内容的提问来源于stack exchange,提问作者Berat Kurt
相关产品推荐
相关产品推荐

