将Flutter Hot Reload加载到多个设备

时间:2018-08-03 09:15:42

标签: flutter hot-reload

是否可以通过热重装连接多个设备? 具体来说,Android和iOS模拟器同时使用。

7 个答案:

答案 0 :(得分:10)

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

enter image description here

答案 1 :(得分:8)

这在Android Studio中对我有效:

  1. 启动两个模拟器

  2. 使用flutter run -d all

  3. 运行代码
  4. r进行热加载

答案 2 :(得分:5)

如果您将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"        
        }
    ]
}

设置

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

Application folder file structure once the VSC config files are created

仅将以下代码粘贴到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",
        }
    ],
}

仅将以下代码粘贴到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' "
    }
  ]
}

相应地替换设备名称(“ iPhone 11”,“ IA Emulator上的AOSP”,“ Chrome”)。

启动所有设备

按F5键。

您已完成。

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

Debug & Run Menu > Configuration Selection

然后您将看到终端窗口出现,并且将能够在运行的各个热重装会话之间切换(如Tasks在其自己的Shell中)。

Individual Terminal Sessions with each Flutter Device running concurrently

某些背景

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

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

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

如果使用化合物,则需要在下一次运行之前完成配置,这不是我们想要的。 使用Tasks,我们可以选择按顺序执行它们,但是默认情况下,使用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"]
    }
]

答案 3 :(得分:4)

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

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

      
        

    打开-a模拟器

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

  3. 打开一个终端来管理Android的热装 在应用程序的文件夹中运行

      
        

    flutter运行-d [ios-device-id]

      
  4. 打开另一个终端以管理iOS的热装 在应用程序的文件夹中,运行

      
        

    flutter运行-d [android-device-id]

      

在两个终端中,您都会看到:

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

因此,这时只需更新代码,保存并在每个终端中按“ r”,虽然不是同时执行的,但足以让两个模拟器同时打开并查看结果了

答案 4 :(得分:2)

  1. 首先,连接要在其上运行应用程序的设备。
  2. 然后,打开终端并输入:flutter run -d all
  3. 要进行热重装,请在终端中按r

答案 5 :(得分:2)

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

compound

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

Source

答案 6 :(得分:0)

Android Studio Flutter:热重装多个设备

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

热重装多个设备的键盘快捷键:查看运行菜单,找到用于一次热重装多个设备的键盘快捷键。

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

enter image description here