getPhysicalDevices method

  1. @override
Future<List<Device>> getPhysicalDevices()
override

Implementation

@override
Future<List<Device>> getPhysicalDevices() async {
  if (!Platform.isMacOS) return [];

  final tempDirectory = Directory.systemTemp;
  final outputFile = File('${tempDirectory.path}/ios_devices.json');

  try {
    final devicectl = await _exec.run(
      'xcrun',
      arguments: ['devicectl', 'list', 'devices', '-j', outputFile.path],
    );

    if (!devicectl.success) return [];

    final json =
        jsonDecode(await outputFile.readAsString()) as Map<String, dynamic>;

    return _parsePhysicalDevices(json);
  } catch (e, st) {
    log('IOSDeviceService.getPhysicalDevices error: $e\n$st');
    return [];
  } finally {
    if (outputFile.existsSync()) {
      outputFile.deleteSync();
    }
  }
}