diff --git a/lib/common/mobile/android/android-emulator-services.ts b/lib/common/mobile/android/android-emulator-services.ts index c9f2f20c07..a901981d19 100644 --- a/lib/common/mobile/android/android-emulator-services.ts +++ b/lib/common/mobile/android/android-emulator-services.ts @@ -2,6 +2,7 @@ import { AndroidVirtualDevice } from "../../constants"; import { getCurrentEpochTime, sleep } from "../../helpers"; import { EOL } from "os"; import { LoggerConfigData } from "../../../constants"; +import * as semver from "semver"; export class AndroidEmulatorServices implements Mobile.IEmulatorPlatformService { constructor(private $androidGenymotionService: Mobile.IAndroidVirtualDeviceService, @@ -144,7 +145,10 @@ export class AndroidEmulatorServices implements Mobile.IEmulatorPlatformService private getBestFit(emulators: Mobile.IDeviceInfo[]) { const best = _(emulators).maxBy(emulator => emulator.version); - return (best && best.version >= AndroidVirtualDevice.MIN_ANDROID_VERSION) ? best : null; + const minVersion = semver.coerce(AndroidVirtualDevice.MIN_ANDROID_VERSION); + const bestVersion = best && best.version && semver.coerce(best.version); + + return (bestVersion && semver.gte(bestVersion, minVersion)) ? best : null; } private async waitForEmulatorBootToComplete(emulator: Mobile.IDeviceInfo, endTimeEpoch: number, timeout: number): Promise<{ runningEmulator: Mobile.IDeviceInfo, errors: string[] }> { diff --git a/lib/common/mobile/emulator-helper.ts b/lib/common/mobile/emulator-helper.ts index 3d3483bc84..6a175eaba0 100644 --- a/lib/common/mobile/emulator-helper.ts +++ b/lib/common/mobile/emulator-helper.ts @@ -3,6 +3,7 @@ import { RUNNING_EMULATOR_STATUS, DeviceTypes } from "../constants"; export class EmulatorHelper implements Mobile.IEmulatorHelper { // https://developer.android.com/guide/topics/manifest/uses-sdk-element public mapAndroidApiLevelToVersion = { + "android-29": "10.0.0", "android-28": "9.0.0", "android-27": "8.1.0", "android-26": "8.0.0",