现象
最近在开发flutter和iOS混合项目时,遇到真机调试连接xcode启动项目,在断开后,打开App直接崩溃,版本为iOS14 。
APP 测试结果如下:
App来源 | 是否闪退 | 模式 |
---|---|---|
线上 | 否 | release |
fir/蒲公英 | 是 | debug |
xcode | 是(断开xcode后再打开app) | debug |
原因
闪退的原因是因为 Flutter SDK, Flutter 官方对 iOS14 进行了说明:Flutter官网说明链接1
大致意思就是说,如果我们在 iOS14 的真机上安装了 debug模式 编译出来的 flutter 应用,那么在断开编译安装连接后,将无法从桌面上打开该应用程序。
解决方案
网上尝试过几种方式,有的不灵
• 项目名中文改英文(试过没用)
如Xcode里,选择当前项目的TARGETS->BuildSetting -> Packaging -> Product Name,将中文的命名改成英文,flutter项目建议直接改成Runner。这种方式试过没用。
•更改XCode编译模式
使用Release模式编译,这个时候Flutter编译方式为AOT,可正常启动;
•不更改XCode编译模式
更改Flutter编译配置,强制设置为Release。找到Flutter安装位置,依次打开flutter/packages/flutter_tools/bin/xcode_backend.sh
这里采用的最后一种方式,不更改XCode编译模式,试过可行,不过这会改变原来debug的build模式,不过要记得在需要的时候改回来就行。
补充:
如果在上面文件中找不到图上的方法,可能不同flutter版本位置不同的原因,
目前我的版本是Flutter 2.8.1,
可以在 flutter/packages/flutter_tools/bin/xcode_backend.dart
这个文件更改
引用链接
[1]
Flutter官网说明链接: https://links.jianshu.com/go?to=https://flutter.dev/docs/development/ios-14