fix an issue parsing adb devices (#3235)
This commit is contained in:
parent
504610791f
commit
26906240e5
@ -473,27 +473,23 @@ List<AndroidDevice> getAdbDevices() {
|
|||||||
List<String> output = runSync(<String>[adbPath, 'devices', '-l']).trim().split('\n');
|
List<String> output = runSync(<String>[adbPath, 'devices', '-l']).trim().split('\n');
|
||||||
|
|
||||||
// 015d172c98400a03 device usb:340787200X product:nakasi model:Nexus_7 device:grouper
|
// 015d172c98400a03 device usb:340787200X product:nakasi model:Nexus_7 device:grouper
|
||||||
RegExp deviceRegex1 = new RegExp(
|
RegExp deviceRegExLong = new RegExp(
|
||||||
r'^(\S+)\s+device\s+.*product:(\S+)\s+model:(\S+)\s+device:(\S+)$');
|
r'^(\S+)\s+device\s+.*product:(\S+)\s+model:(\S+)\s+device:(\S+)$');
|
||||||
|
|
||||||
// 0149947A0D01500C device usb:340787200X
|
// 0149947A0D01500C device usb:340787200X
|
||||||
RegExp deviceRegex2 = new RegExp(r'^(\S+)\s+device\s+\S+$');
|
// emulator-5612 host features:shell_2
|
||||||
RegExp unauthorizedRegex = new RegExp(r'^(\S+)\s+unauthorized\s+\S+$');
|
RegExp deviceRegExShort = new RegExp(r'^(\S+)\s+(\S+)\s+\S+$');
|
||||||
RegExp offlineRegex = new RegExp(r'^(\S+)\s+offline\s+\S+$');
|
|
||||||
|
|
||||||
// Skip the first line, which is always 'List of devices attached'.
|
for (String line in output) {
|
||||||
for (String line in output.skip(1)) {
|
// Skip lines like: * daemon started successfully *
|
||||||
// Skip lines like:
|
|
||||||
// * daemon not running. starting it now on port 5037 *
|
|
||||||
// * daemon started successfully *
|
|
||||||
if (line.startsWith('* daemon '))
|
if (line.startsWith('* daemon '))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (line.startsWith('List of devices'))
|
if (line.startsWith('List of devices'))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (deviceRegex1.hasMatch(line)) {
|
if (deviceRegExLong.hasMatch(line)) {
|
||||||
Match match = deviceRegex1.firstMatch(line);
|
Match match = deviceRegExLong.firstMatch(line);
|
||||||
String deviceID = match[1];
|
String deviceID = match[1];
|
||||||
String productID = match[2];
|
String productID = match[2];
|
||||||
String modelID = match[3];
|
String modelID = match[3];
|
||||||
@ -508,21 +504,21 @@ List<AndroidDevice> getAdbDevices() {
|
|||||||
modelID: modelID,
|
modelID: modelID,
|
||||||
deviceCodeName: deviceCodeName
|
deviceCodeName: deviceCodeName
|
||||||
));
|
));
|
||||||
} else if (deviceRegex2.hasMatch(line)) {
|
} else if (deviceRegExShort.hasMatch(line)) {
|
||||||
Match match = deviceRegex2.firstMatch(line);
|
Match match = deviceRegExShort.firstMatch(line);
|
||||||
String deviceID = match[1];
|
|
||||||
devices.add(new AndroidDevice(deviceID));
|
|
||||||
} else if (unauthorizedRegex.hasMatch(line)) {
|
|
||||||
Match match = unauthorizedRegex.firstMatch(line);
|
|
||||||
String deviceID = match[1];
|
String deviceID = match[1];
|
||||||
|
String deviceState = match[2];
|
||||||
|
|
||||||
|
if (deviceState == 'unauthorized') {
|
||||||
printError(
|
printError(
|
||||||
'Device $deviceID is not authorized.\n'
|
'Device $deviceID is not authorized.\n'
|
||||||
'You might need to check your device for an authorization dialog.'
|
'You might need to check your device for an authorization dialog.'
|
||||||
);
|
);
|
||||||
} else if (offlineRegex.hasMatch(line)) {
|
} else if (deviceState == 'offline') {
|
||||||
Match match = offlineRegex.firstMatch(line);
|
|
||||||
String deviceID = match[1];
|
|
||||||
printError('Device $deviceID is offline.');
|
printError('Device $deviceID is offline.');
|
||||||
|
} else {
|
||||||
|
devices.add(new AndroidDevice(deviceID));
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
printError(
|
printError(
|
||||||
'Unexpected failure parsing device information from adb output:\n'
|
'Unexpected failure parsing device information from adb output:\n'
|
||||||
@ -530,6 +526,7 @@ List<AndroidDevice> getAdbDevices() {
|
|||||||
'Please report a bug at https://github.com/flutter/flutter/issues/new');
|
'Please report a bug at https://github.com/flutter/flutter/issues/new');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return devices;
|
return devices;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,8 +8,8 @@ import 'dart:io';
|
|||||||
import 'package:path/path.dart' as path;
|
import 'package:path/path.dart' as path;
|
||||||
|
|
||||||
import '../artifacts.dart';
|
import '../artifacts.dart';
|
||||||
import '../build_configuration.dart';
|
|
||||||
import '../base/process.dart';
|
import '../base/process.dart';
|
||||||
|
import '../build_configuration.dart';
|
||||||
import '../globals.dart';
|
import '../globals.dart';
|
||||||
import '../runner/flutter_command_runner.dart';
|
import '../runner/flutter_command_runner.dart';
|
||||||
|
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:path/path.dart' as path;
|
|
||||||
import 'package:mustache4dart/mustache4dart.dart' as mustache;
|
import 'package:mustache4dart/mustache4dart.dart' as mustache;
|
||||||
|
import 'package:path/path.dart' as path;
|
||||||
|
|
||||||
import 'artifacts.dart';
|
import 'artifacts.dart';
|
||||||
import 'globals.dart';
|
import 'globals.dart';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user