Xcode 11.4改变了框架的链接和嵌入方式,可能会在iOS设备和模拟器之间切换时出现问题。Flutter v1.15.3及更高版本将自动迁移您的Xcode项目。
要解决问题,请按照以下说明操作:
rm -rf ios/Flutter/App.framework
官方推荐手动迁移步骤
在Runner目标的“Build Settings > Other Linker Flags”(其他链接器标志)中,添加$(inherited) -framework Flutter。/bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" embed
/bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" thin
希望能有所帮助!
原因: 在Xcode 12+中,“验证工作区”的默认选项内部未设置。我们需要手动设置它以避免这种错误。将它设回默认的“否”选项不会有任何问题。
Xcode 11.4 更改了框架链接和嵌入的方式,这导致在iOS设备和模拟器之间切换时出现问题。
请按照官方指南迁移您的项目。
flutter clean
、删除 Pods/
文件夹和 Podfile.lock
,然后在 ios 文件夹中使用 pod install
重新安装后,它才终于起作用。 - Matt经过几天的尝试,我终于找到了在iOS设备上测试Flutter应用程序的解决方案:
flutter clean
flutter build ios
-打开xCode并在您的设备上运行应用程序。
flutter build ios
时,它做了同样的事情。 - Raymond Ativie已升级至Xcode 11.4,iOS 13.4和iPhone X。应用程序仅使用API获取数据。
应用程序在模拟器和设备上开始运行时呈现白屏,然后最终崩溃。
我遵循了官方指南(我还执行了rm -rf ios/Flutter/App.framework
),flutter.dev/docs/development/ios-project-migration。我多次运行了flutter clean
。
由于我正在使用异步数据,所以我还在main()的第一行添加了:
WidgetsFlutterBinding.ensureInitialized();
没有帮助,应用程序也没有启动模拟器。
然后我删除了ios/
和android/
文件夹。在项目文件夹中运行命令flutter create .
重新生成上述文件夹。
之后,我的应用程序在模拟器和设备上都可以正常启动。 我希望这能对其他人有所帮助。注意!!如果您手动对这些文件夹进行了任何修改,请先备份或提交。
我尝试了Flutter官方网站上的解决方案,但对我没有用,所以我找到了一个临时解决方案,它对我有用,但是需要付出一些努力: 这是我的示例,使用的是名为stuck_framework的全新项目(在模拟器上首次运行)
我在Flutter项目中创建了两个文件夹,分别为“ios_simulator”和“ios_real_device”。 点击此处查看图片描述
现在我的第一个构建是针对模拟器的,然后我想切换到真实设备,我将Flutter项目中的ios文件夹移动到“ios_simulator”文件夹中。
手动升级Flutter到版本1.15也可以解决这个问题。运行flutter version v1.15.17
有所帮助。
同时,你可以通过运行flutter channel
命令切换到beta或dev渠道,但一定要确保检查你的代码对所有BC更改都兼容...
这里的其他解决方案都对我没用。在我的情况下,问题是通过搜索我的项目中的ONLY_ACTIVE_ARCH并将它们全部更改为YES来解决的。我在这里找到了解决方案:
flutter version v1.15.17
否则你会遇到应用程序崩溃并出现白屏的情况。
只需升级Flutter版本,所有问题都将得到解决。