是否可以通过热重装连接多个设备? 具体来说,Android和iOS模拟器同时使用。
答案 0 :(得分:10)
答案 1 :(得分:8)
这在Android Studio中对我有效:
启动两个模拟器
使用flutter run -d all
按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
。
仅将以下代码粘贴到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
配置,然后运行。
然后您将看到终端窗口出现,并且将能够在运行的各个热重装会话之间切换(如Tasks在其自己的Shell中)。
某些背景
我们通过任务上的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之外。
加载iOS模拟器 在终端中
打开-a模拟器
加载Android模拟器 在Android Studio中打开ADV并运行所需的模拟器
打开一个终端来管理Android的热装 在应用程序的文件夹中运行
flutter运行-d [ios-device-id]
打开另一个终端以管理iOS的热装 在应用程序的文件夹中,运行
flutter运行-d [android-device-id]
在两个终端中,您都会看到:
?要在运行时更改热装,请按“ r”。要热重启(并重建状态),请按“ R”。
因此,这时只需更新代码,保存并在每个终端中按“ r”,虽然不是同时执行的,但足以让两个模拟器同时打开并查看结果了
答案 4 :(得分:2)
flutter run -d all
r
答案 5 :(得分:2)
要同时调试多个设备,您应该为每个设置了 deviceId 字段的设备设置启动配置(这与您传递给 flutter run -d xxx)
的 ID 相同。点击 {{1} 打开启动配置}}. 在底部添加一个 Debug -> Open Configurations
配置,它将同时启动两个(或多个)配置:
compound
保存后,复合配置将显示在调试侧栏顶部的下拉列表中。
答案 6 :(得分:0)