()
| 306 | } |
| 307 | |
| 308 | async function listAndroidAvdNames(): Promise<string[]> { |
| 309 | const result = await runCmd('emulator', ['-list-avds'], { |
| 310 | allowFailure: true, |
| 311 | timeoutMs: ANDROID_BOOT_PROP_TIMEOUT_MS, |
| 312 | }); |
| 313 | if (result.exitCode !== 0) { |
| 314 | throw new AppError('COMMAND_FAILED', 'Failed to list Android emulator AVDs', { |
| 315 | stdout: result.stdout, |
| 316 | stderr: result.stderr, |
| 317 | exitCode: result.exitCode, |
| 318 | hint: 'Verify Android emulator tooling is installed and available in PATH.', |
| 319 | }); |
| 320 | } |
| 321 | return parseAndroidAvdList(result.stdout); |
| 322 | } |
| 323 | |
| 324 | async function listStoppedAndroidAvdDevices(runningDevices: DeviceInfo[]): Promise<DeviceInfo[]> { |
| 325 | const avdNames = await listAndroidAvdNames().catch(() => []); |
no test coverage detected