在 iOS 模拟器中启动 Flutter 应用程序时出错

Posted

技术标签:

【中文标题】在 iOS 模拟器中启动 Flutter 应用程序时出错【英文标题】:Errors Launching Flutter app in iOS Simulator 【发布时间】:2020-11-22 00:41:25 【问题描述】:

我在 ios 模拟器上启动 Flutter 应用时遇到问题。从以下错误输出判断,该问题似乎与 localhost 连接等有关,但我无法找到解决方法。

我正在运行 MacOS Catalina 版本 10.15.6 (19G73)。 iOS 模拟器版本 11.6 (921.9.1)。 VSCode 是我的 IDE。

应用程序在 android 模拟器上启动并运行良好。

以下是 VSCode 终端的错误输出:

Launching lib/main.dart on iPhone SE (2nd generation) in debug mode...
Running Xcode build...                                                  
 └─Compiling, linking and signing...                         6.7s
Xcode build done.                                           16.7s
Connecting to the VM Service is taking longer than expected...
Still attempting to connect to the VM Service...
If you do NOT see the Flutter application running, it might have crashed. The device logs (e.g. from adb or XCode) might have more details.
If you do see the Flutter application running on the device, try re-running with --host-vmservice-port to use a specific port known to be available.
Exception attempting to connect to the VM Service: SocketException: OS Error: Connection refused, errno = 61, address = 127.0.0.1, port = 51838
This was attempt #50. Will retry in 0:00:01.600000.
Exception attempting to connect to the VM Service: SocketException: OS Error: Connection refused, errno = 61, address = 127.0.0.1, port = 51970
This was attempt #100. Will retry in 0:00:01.600000.
Exception attempting to connect to the VM Service: SocketException: OS Error: Connection refused, errno = 61, address = 127.0.0.1, port = 52119
This was attempt #150. Will retry in 0:00:01.600000.
Exception attempting to connect to the VM Service: SocketException: OS Error: Connection refused, errno = 61, address = 127.0.0.1, port = 52347
This was attempt #200. Will retry in 0:00:01.600000.
^C%

【问题讨论】:

我正在使用 Android 模拟器和 IOS 模拟器来解决这个问题... 我也有这个,真的很奇怪。你们有人修过吗?运行同一个版本的你……似乎是 Flutter 和 iOS Simulator 之间的联系。 我的应用程序也得到了同样的结果。我正在尝试运行一个在我的原始计算机上运行良好的应用程序,git 克隆并完成了设置 firebase 等的基础知识,目前卡在这个错误上 【参考方案1】:

由于Firebase,我遇到了同样的问题。 我通过在我的 AppDelegate.swift 文件中反转 2 行来解决我的问题:

FirebaseApp.configure() // Should be first
GeneratedPluginRegistrant.register(with: self) // Should be second

我的非工作文件是这个

import UIKit
import Flutter
import Firebase

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate 
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool 
    GeneratedPluginRegistrant.register(with: self) // <- Don't do this
    FirebaseApp.configure()   // <- Don't do this
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  

我的工作文件是:

import UIKit
import Flutter
import Firebase

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate 
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool 
    FirebaseApp.configure()   // <- Do this
    GeneratedPluginRegistrant.register(with: self) // <- Do this
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  

【讨论】:

老兄!谢谢你。 感谢这对我有用!谁能解释为什么这会导致错误?再次提前感谢! 我仍然遇到同样的错误知道吗??【参考方案2】:

我遇到了同样的问题,无法在iOS模拟器中正常运行应用程序,它总是显示一个白色的空白页。

我找到了这个https://github.com/flutter/flutter/issues/71395,这个链接告诉我们如果你的 Flutter 版本低于 2.0.0,切换 Flutter git 分支到 master,那么你会在 master 分支上得到正确的按摩。

所以我通过以下步骤解决了问题:

    获取 Flutter 路径,我用的是 brew
brew info flutter
    将 Flutter 的 git 分支切换到 master
cd <flutter path>
git checkout -b master origin/master
    发现问题
flutter doctor -v

这表明我的问题是

[!] 代理配置

• HTTP_PROXY 已设置

! NO_PROXY 未设置

所以我需要设置 thd NO_PROXY 配置,https://github.com/flutter/flutter/issues/24854,这个链接告诉我如何配置它。

现在我可以在iOS模拟器中正常运行应用了。

【讨论】:

以上是关于在 iOS 模拟器中启动 Flutter 应用程序时出错的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 模拟器上以发布模式 Flutter 启动应用程序时出现问题

Flutter 应用程序图标在 Flutter_launcher_icons 的 ios 模拟器中没有更改

Flutter 应用程序停留在物理 iPhone 的安装和启动步骤

Flutter 应用程序无法在真实的 iOS 设备上运行(白屏)

启动键盘时 Flutter App 冻结

如何在 Visual Studio Code 中为 Flutter 添加 iOS 模拟器?