Flutter-为iOS构建,但是为iOS Simulator构建了链接和嵌入式框架'App.framework'


13

在使用Xcode 13.4 beta更新到Catalina 10.15.4 beta之后,该模拟器还将Simulator更新为13.4(921.4)。

该应用程序可以在物理连接的设备上编译并正确运行,但是任何设备的仿真器都无法通过此阶段。

我弄错了

为iOS构建,但是为iOS Simulator构建了链接和嵌入式框架'App.framework'。

要么

为iOS Simulator构建,但为iOS构建了链接和嵌入式框架'App.framework'。

在此处输入图片说明

我怎样才能解决这个问题?

Answers:


42

Xcode 11.4更改了框架的链接和嵌入式方式,您可能会遇到在iOS设备和模拟器之间切换的问题。Flutter v1.15.3和更高版本将自动迁移您的Xcode项目。

要避免卡住,请按照以下说明进行操作;

  • 快速修复(使模拟器正常工作)

rm -rf ios/Flutter/App.framework

  • 官方推荐的手动迁移步骤

    1. 从Flutter应用程序目录中,在Xcode中打开ios / Runner.xcworkspace。
    2. 在“导航器”窗格中,找到Flutter组,然后删除App.framework和Flutter.framework。 在此处输入图片说明
    3. 在Runner目标构建设置中,“构建阶段”>“使用库链接二进制文件”确认App.framework和Flutter.framework不再存在。还要在“构建阶段”>“嵌入框架”中进行确认。

在此处输入图片说明

  1. 如下更改Runner目标构建设置Build Phases> Thin Binary脚本:

    / bin / sh嵌入“ $ FLUTTER_ROOT / packages / flutter_tools / bin / xcode_backend.sh”

    / bin / sh“ $ FLUTTER_ROOT / packages / flutter_tools / bin / xcode_backend.sh”薄

在此处输入图片说明

  1. 在Runner目标中,“ 构建设置”>“其他链接器标志”

    (OTHER_LDFLAGS)添加$(继承)-framework Flutter

在此处输入图片说明

希望能帮助到你!


这个问题最近被关闭,由于不清楚,因此被大量否决,并被发布在Meta上。好像您了解了它的要求,您是否知道如何将其编辑为形状以使它不太清楚?
CertainPerformance

1
作品就像魅力!
GiedriusŠlikas

3

Xcode 11.4更改了框架的链接和嵌入式方式,这导致在iOS设备和模拟器之间切换的问题。

请遵循有关如何迁移项目的官方指南


遵循官方指南后,我的应用仍未在我的物理设备上加载。只是按照指南进行flutter clean了几次,删除了Pods/文件夹和Podfile.lock,然后pod install在ios文件夹中使用进行重新安装,终于可以了。
马修·勒纳

2

更新到Xcode 11.4。iOS 13.4,IphoneX。应用程序仅使用API​​提取数据。应用在白屏上启动,然后最终在模拟器和设备上崩溃。

我遵循了官方指南(我也rm -rf ios/Flutter/App.frameworkflutter.dev/docs/development/ios-project-migration。我跑了好几次flutter clean

我还尝试删除Pods /文件夹和Podfile.lock,然后pod install在ios文件夹中使用重新安装。

当我使用异步数据时,我也在main()中添加为第一行

WidgetsFlutterBinding.ensureInitialized();

没有帮助,应用程序没有启动任何一个模拟器。

然后我删除ios/android/文件夹。之后,在项目文件夹中,我运行flutter create .了重新生成提到的文件夹的命令。

在此之后,我的应用在模拟器和设备上均正常运行。我希望这会对其他人有所帮助。注意!!如果您手动修改了这些文件夹,请事先进行备份或提交。


1

经过几天的尝试,找到了一种在iOS设备上测试Flutter应用程序的解决方案,我终于找到了这一点:

flutter clean
flutter build ios

-打开xCode并在您的设备上运行应用程序。


仍然对我不起作用。当我尝试运行时做同样的事情flutter build ios
Raymond Ativie


是的,那就是我最后要做的感谢
Raymond Ativie

0

我已经在flutter的官方网站上尝试了该解决方案,但该解决方案对我不起作用,因此我找到了一个对我有用的临时解决方案,但是这使我付出了一些辛苦的工作:这是我的新项目stick_framework的示例新项目(首次在模拟器上运行)

  1. 我在flutter项目中创建了2个文件夹,分别为
    “ ios_simulator”和“ ios_real_device”。 在此处输入图片说明

  2. 现在,我的第一个构建是针对模拟器的,然后我想切换到真实设备,将Flutter项目中的ios文件夹移至“ ios_simulator”

  3. 我使用Visual Studio代码打开该项目,然后运行“ flutter create”。现在,我将选择一个真实的设备来重建项目(如果您的模拟器在线,请退出)。 在此处输入图片说明
  4. 现在,我等待构建完成并在真实设备上运行,没有任何错误。现在,我有2个ios项目1用于模拟器,一个用于真实设备。
  5. 下次当我想再次在模拟器上运行时,只需删除当前的ios文件夹,然后将放置在“ ios_simulator”上的ios文件夹复制回flutter项目文件夹。希望有帮助

0

手动将flutter升级到1.15版也可以解决此问题。跑步flutter version v1.15.17帮助了我。

另外,您可以通过运行命令切换到betadev通道,flutter channel但请确保对照所有BC更改检查代码...


0

就我而言,它仅适用于模拟器(调试)。如果您想在应用商店(发行版)上部署应用,我强烈建议您使用以下方法升级Flutter版本:

flutter version v1.15.17

否则,您会遇到白屏崩溃的应用程序。

只需升级flutter版本,然后一切正常


1.15.17尚未在稳定频道上。
Loolooii
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.