将Flutter Hot Reload加载到多个设备

Jap*_* LY 7 flutter hot-reload

是否可以通过热重载连接多个设备?特别是,Android和iOS模拟器同时使用。

And*_*kov 13

这对我在Android Studio中有效:

  1. 启动两个模拟器

  2. 使用以下代码运行代码 flutter run -d all

  3. 按下r即可热装

  • 请注意,最近它将尝试在 MacOS 和 Web 上运行。我找不到修复的解决方案。 (2认同)

Dar*_*sen 12

如果您使用 VS Code 作为 Flutter IDE,这就是您可以使用 VSC 启动配置和任务从单个启动并发运行并为所有设备启用热重载的方式。

如果您在执行时遇到问题,flutter run -d all这是一个替代解决方案,可让您指定应运行的设备。确保您指定的设备在运行时可用flutter devices

您当前的launch.json文件可能如下所示:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Flutter",
            "type": "dart",
            "request": "launch",
            "flutterMode": "debug"        
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

设置

您将需要更新此launch.json文件并在应用程序根目录tasks.json中的同一.vscode文件夹中创建。

创建 VSC 配置文件后的应用程序文件夹文件结构

仅将以下代码粘贴到 launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Flutter-All",
            "preLaunchTask": "Flutter-Launch-All",
            "type": "dart",
        },
        {
            "name": "Flutter-iOS",
            "preLaunchTask": "Flutter-Launch-iOS",
            "type": "dart",
        },
        {
            "name": "Flutter-Android",
            "preLaunchTask": "Flutter-Launch-Android",
            "type": "dart",
        },
        {
            "name": "Flutter-Web",
            "preLaunchTask": "Flutter-Launch-Web",
            "type": "dart",
        }
    ],
}
Run Code Online (Sandbox Code Playgroud)

仅将以下代码粘贴到 tasks.json

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Flutter-Launch-All",
      "dependsOn": [
        "Flutter-Launch-iOS",
        "Flutter-Launch-Android",
        "Flutter-Launch-Web"
      ]
    },
    {
      "label": "Flutter-Launch-iOS",
      "type": "shell",
      "command": "flutter run -d 'iPhone 11' "
    },
    {
      "label": "Flutter-Launch-Android",
      "type": "shell",
      "command": "flutter run -d 'AOSP on IA Emulator' "
    },
    {
      "label": "Flutter-Launch-Web",
      "type": "shell",
      "command": "flutter run -d 'Chrome' "
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

相应地替换设备名称(“iPhone 11”、“IA 模拟器上的 AOSP”、“Chrome”)。

启动所有设备

按 F5 键。

你已经完成了。

如果 F5 快捷方式Start Debugging对您不起作用,请导航到Debug & Run侧面板的 并选择Flutter-All您刚刚创建的配置,然后选择运行。

调试和运行菜单 > 配置选择

然后,您将看到终端窗口出现,并且能够在运行的各个热重载会话之间切换(作为它们自己的 shell 中的任务)。

每个 Flutter 设备同时运行的单独终端会话

一些背景

我们通过任务上的dependsOn选项使用“复合任务”,而不是用于配置的“复合”。

由于不可能同时启动配置,只能按顺序启动,我们使用可以并发运行的任务。

因此,“Flutter-All”配置执行 iOS、Android 和 Web 配置的任务。

如果使用化合物,则需要在下一次运行之前完成配置,这不是我们想要的。使用任务,我们可以选择顺序执行它们,但默认情况下,使用该dependsOn选项时它们将同时执行。

//Do not use this in your launch.json file unless you want to debug one platform at a time.

"compounds": [
    {
        "name": "Flutter-All",
        "configurations": ["Flutter-iOS", "Flutter-Android", "Flutter-Web"]
    }
]
Run Code Online (Sandbox Code Playgroud)


hum*_*zed 11

在 Android Studio 中,如果您正在运行多个设备,则菜单Flutter hot reload (All Devices)下有一个选项run

在此处输入图片说明


小智 7

如果您尝试直接在 Visual Code 上加载它是行不通的,但只需几个步骤,您就可以使用 VS Code 或任何其他 IDE 进行编码,并在 IDE 之外热重载您的代码

  1. 在终端中加载 iOS 模拟器

    打开 -a 模拟器

  2. 加载 Android 模拟器 在 Android Studio 中打开 ADV 并运行所需的模拟器

  3. 打开终端以管理 Android 在应用程序文件夹中的热重载运行

    flutter run -d [ios-device-id]

  4. 打开另一个终端来管理iOS在app文件夹内的热重载,运行

    flutter run -d [android-device-id]

在两个终端你会看到:

要在运行时热重载更改,请按“r”。要热重启(和重建状态),请按“R”。

因此,此时只需更新您的代码,保存并在每个终端中按“r”,它不会同时进行,但足以同时打开两个模拟器并查看结果


小智 6

要同时调试多个设备,您应该为设置了 deviceId 字段的每个设备设置启动配置(这与您传递给 的 ID 相同。flutter run -d xxx)通过单击 打开启动配置。在底部Debug -> Open Configurations添加一个配置,该配置将同时启动这两个设备) compound(或更多)同时配置:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Current Device",
            "request": "launch",
            "type": "dart"
        },
        {
            "name": "Android",
            "request": "launch",
            "type": "dart",
            "deviceId": "android"
        },
        {
            "name": "iPhone",
            "request": "launch",
            "type": "dart",
            "deviceId": "iphone"
        },
    ],
    "compounds": [
        {
            "name": "All Devices",
            "configurations": ["Android", "iPhone"],
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

保存后,复合配置将显示在调试侧栏顶部的下拉列表中。

来源


Mat*_*out 5

Android Studio Flutter:热重载多个设备

如果您正在运行 android 来构建 Flutter 应用程序,并且启动了多个设备或模拟器来预览您的 Flutter 应用程序(并且在 IDE 下方有相应的“运行”选项卡),您可能会发现保存项目只会热重载一个项目的实例。

热重新加载多个设备键盘快捷键:查看“运行”菜单以查找用于一次热重新加载多个设备的键盘快捷键。

这些是 MacOS 上用于热重载和热重启多个设备的默认快捷方式。请注意(所有设备)变体。

在此输入图像描述