我想将flutter应用程序部署到所有连接的物理手机上。我目前的解决方案是一次向每个设备部署一个,但我希望一次完成所有这些操作。我从这个答案中找到的最接近的匹配是使用带有--release
标志的flutter run -d all
,以便部署到所有设备。
然而,使用-d all
也会尝试部署到模拟器,这会引发此错误(并且不会部署到任何设备(:
Release mode is not supported by iPhone 8.
flutter devices
的输出如下(去掉了真正的id(:
PhysicalPixel (mobile) • XXX1 • android-arm64 • Android 11 (API 30)
PhysicaliPhone (mobile) • XXX2 • ios • iOS 14.4.1
iPhone 8 (mobile) • XXX3 • ios • com.apple.CoreSimulator.SimRuntime.iOS-14-5 (simulator)
Chrome (web) • chrome • web-javascript • Google Chrome
有没有办法";部署所有";仅限于物理设备?所需结果部署到PhysicalPixel
和PhysicaliPhone
(具有更多电话的情况下(,但不部署到iPhone 8
(模拟器(或Chrome
。
据我所知,不可能通过某种形式的参数命令a仅在物理设备上运行,但您可以指定哪些设备而不是-d all
如果你把这个答案结合起来(https://stackoverflow.com/a/59593575/13263384)从你链接到的同一个问题,再加上对launch.json的一个小改动,它可能就是你想要的。所以这样做吧:
{
"version": "0.2.0",
"configurations": [
{
"name": "Physical-1",
"request": "launch",
"type": "dart",
"deviceId": "XXX1",
"args": [
"--release"
]
},
{
"name": "Physical-2",
"request": "launch",
"type": "dart",
"deviceId": "XXX2",
"args": [
"--release"
]
},
"compounds": [
{
"name": "Physical devices",
"configurations": [
"Physical-1",
"Physical-2"
]
}
]
}
复合名称物理设备现在将成为一个可运行的目标,它将向这些设备启动构建。
编辑:现在我仔细阅读了这个答案,我认为这个答案实际上比我的好。但你想怎么做取决于你!