create method

  1. @override
Future<void> create({
  1. bool verbose = false,
})
override

Creates a new version of the device. uuid is usually assigned by the platform within this method.

Implementation

@override
Future<void> create({bool verbose = false}) async {
  final availableVersions = await AvdmanagerCli.instance.availableRuntimes();
  final discoveredVersion = availableVersions.firstWhere(
    (v) => v['apiLevel'].toString() == osVersion,
    orElse: () {
      final versions = availableVersions.map((v) => v['apiLevel']).join(', ');
      throw StateError('$osVersion is not available in $versions');
    },
  );

  if (discoveredVersion['googleApis'] != googleApis) {
    throw StateError('$osVersion does not have a compatible Google APIs ($googleApis) image');
  }

  final imageName = ['system-images' 'android-$osVersion'];
  if (googleApis) imageName.add('google_apis');
  imageName.add('x86');

  final deviceName =
      name ?? (await AvdmanagerCli.instance.generateName(model: model, osVersion: osVersion));

  await runWithError('avdmanager', [
    if (verbose) '--verbose',
    'create',
    'avd',
    '--force',
    '--name',
    deviceName,
    '--device',
    model,
    '--package',
    imageName.join(';'),
  ]);
}