public IEnumerable <Avd> ListAvds() { var r = new List <Avd>(); var lines = run("list", "avd"); var str = string.Join("\n", lines); var matches = rxListAvds.Matches(str); if (matches != null && matches.Count > 0) { foreach (Match m in matches) { var a = new Avd { Name = m.Groups?["name"]?.Value, Device = m.Groups?["device"]?.Value, Path = m.Groups?["path"]?.Value, Target = m.Groups?["target"]?.Value, BasedOn = m.Groups?["basedon"]?.Value }; if (!string.IsNullOrWhiteSpace(a.Name)) { r.Add(a); } } } return(r); }
public static IEnumerable <Avd> ListAvdsFromFiles() { var folder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".android", "avd"); if (Directory.Exists(folder)) { var files = Directory.EnumerateFiles(folder, "*.ini", SearchOption.TopDirectoryOnly); foreach (var file in files) { Avd avd = default; try { var ini = Avd.ParseIni(file); if (ini.TryGetValue("path", out var avdPath)) { if (Directory.Exists(avdPath)) { avd = Avd.From(avdPath); } } } catch { } if (avd != null) { yield return(avd); } } } }
/// <summary> /// Default ctor /// </summary> internal OfflineEmulatorDeviceItem(Avd avd) { this.avd = avd; ReloadIcon(); SetName(avd.Name); SetSerial(avd.Name); SetPlatform(GetPlatform(avd)); SetCpuAbi(avd.Config.AbiType); }
public IEnumerable <Avd> ListAvds() { var r = new List <Avd>(); var lines = run("list", "avd"); var str = string.Join("\n", lines); var matches = rxListAvds.Matches(str); if (matches != null && matches.Count > 0) { foreach (Match m in matches) { var path = m.Groups?["path"]?.Value; if (!string.IsNullOrEmpty(path) && Directory.Exists(path)) { var avd = Avd.From(path); var parsedName = m.Groups?["name"]?.Value; if (string.IsNullOrEmpty(avd.Name) && !string.IsNullOrEmpty(parsedName)) { avd.Name = parsedName; } var parsedDevice = m.Groups?["device"]?.Value; if (string.IsNullOrEmpty(avd.Device) && !string.IsNullOrEmpty(parsedDevice)) { avd.Device = parsedDevice; } var parsedTarget = m.Groups?["target"]?.Value; if (string.IsNullOrEmpty(avd.Target) && !string.IsNullOrEmpty(parsedTarget)) { avd.Target = parsedTarget; } var parsedBasedOn = m.Groups?["basedon"]?.Value; if (string.IsNullOrEmpty(avd.BasedOn) && !string.IsNullOrEmpty(parsedBasedOn)) { avd.BasedOn = parsedBasedOn; } r.Add(avd); } } } return(r); }
public static Avd From(string avdPath) { try { var avdIniFile = System.IO.Path.Combine(avdPath, "..", System.IO.Path.GetFileNameWithoutExtension(avdPath) + ".ini"); var configIniFile = System.IO.Path.Combine(avdPath, "config.ini"); if (File.Exists(avdIniFile)) { var avdIni = ParseIni(avdIniFile); if (File.Exists(configIniFile)) { var configIni = ParseIni(configIniFile); var avd = new Avd(); avd.Name = System.IO.Path.GetFileNameWithoutExtension(avdIniFile); avd.Path = avdPath; if (avdIni.TryGetValue("target", out var avdTarget)) { avd.Target = avdTarget; } if (configIni.TryGetValue("hw.device.name", out var avdDevice)) { avd.Device = avdDevice; } if (configIni.TryGetValue("image.sysdir.1", out var avdBasedOn)) { avd.SdkId = avdBasedOn?.Trim('\\', '/')?.Replace('\\', ';')?.Replace('/', ';'); } return(avd); } } } catch (Exception ex) { throw ex; } return(null); }
/// <summary> /// Default ctor /// </summary> public StartAvdControl(Avd avd) : base(string.Format("Starting {0}", avd.Name)) { this.avd = avd; CloseButtonVisible = true; }
public AvdEventArgs(Avd avd) { this.avd = avd; }
/// <summary> /// Gets a human readable platform name /// </summary> private static string GetPlatform(Avd avd) { var framework = Frameworks.Instance.FirstOrDefault(x => x.Descriptor.Target == avd.Target); return((framework != null) ? framework.ToString() : avd.Target); }
/// <summary> /// Default ctor /// </summary> public EditAvdControl(Avd avd) { this.avd = avd; InitializeComponent(); }