Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f9b9159

Browse files
fix: support multiple emulators with the same api level
1 parent b020421 commit f9b9159

File tree

3 files changed

+39
-30
lines changed

3 files changed

+39
-30
lines changed

lib/android-controller.d.ts

-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ export declare class AndroidController {
4545
private static parseRunningDevicesList(verbose);
4646
private static parseRealDevices(runningDevices, devices?);
4747
static emulatorId(platformVersion: any): string;
48-
private static loadEmulatorsIds();
4948
private static sendKeyCommand;
5049
private static checkAndroid();
5150
private static executeAdbCommand(device, command);

lib/android-controller.ts

+38-28
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,8 @@ export class AndroidController {
2525

2626
public static async getAllDevices(verbose: boolean = false): Promise<Map<string, Array<IDevice>>> {
2727
AndroidController.checkAndroid();
28+
// this should be always first.
2829
const runningDevices = AndroidController.parseRunningDevicesList(verbose);
29-
if (AndroidController._emulatorIds.size === 0) {
30-
AndroidController.loadEmulatorsIds();
31-
}
3230
const devices: Map<string, Array<IDevice>> = new Map<string, Array<IDevice>>();
3331
await AndroidController.parseEmulators(runningDevices, devices);
3432
await AndroidController.parseRealDevices(runningDevices, devices);
@@ -422,10 +420,6 @@ export class AndroidController {
422420
emulator.apiLevel = apiLevel[0];
423421
}
424422

425-
if (emulator && !emulator.token && AndroidController._emulatorIds.has(emulator.apiLevel)) {
426-
emulator.token = AndroidController._emulatorIds.get(emulator.apiLevel)
427-
}
428-
429423
if (emulator && emulator.name && emulator.apiLevel) {
430424
if (!emulators.has(emulator.name)) {
431425
emulators.set(emulator.name, new Array<IDevice>());
@@ -434,6 +428,7 @@ export class AndroidController {
434428
}
435429
});
436430

431+
const busyTokens = new Array();
437432
runningDevices.forEach(async (dev) => {
438433
if (dev.type === DeviceType.EMULATOR) {
439434
try {
@@ -459,6 +454,7 @@ export class AndroidController {
459454
if (avdInfo.includes(k)) {
460455
v[0].status = Status.BOOTED;
461456
v[0].token = dev.token;
457+
busyTokens.push(dev.token);
462458
}
463459
})
464460
} catch (error) {
@@ -467,6 +463,20 @@ export class AndroidController {
467463
}
468464
});
469465

466+
if (busyTokens.length === 0) {
467+
busyTokens.push(5544);
468+
}
469+
emulators.forEach((devices, key, map) => {
470+
devices.forEach(device => {
471+
if (!device.token) {
472+
const lastToken = Math.max(...busyTokens)
473+
const token = lastToken % 2 === 0 ? lastToken + 2 : lastToken + 1;
474+
device.token = token.toString();
475+
busyTokens.push(token);
476+
}
477+
});
478+
});
479+
470480
if (verbose) {
471481
console.log("Avds lAist: ", info);
472482
console.log("Parsed emulators: ", emulators);
@@ -533,27 +543,27 @@ export class AndroidController {
533543
return AndroidController._emulatorIds.get(platformVersion.toString());
534544
}
535545

536-
private static loadEmulatorsIds() {
537-
AndroidController._emulatorIds.set("4.2", "5554");
538-
AndroidController._emulatorIds.set("4.3", "5556");
539-
AndroidController._emulatorIds.set("4.4", "5558");
540-
AndroidController._emulatorIds.set("5.0", "5560");
541-
AndroidController._emulatorIds.set("5.1", "5562");
542-
AndroidController._emulatorIds.set("6", "5564");
543-
AndroidController._emulatorIds.set("6.", "5564");
544-
AndroidController._emulatorIds.set("6.0", "5564");
545-
AndroidController._emulatorIds.set("7", "5566");
546-
AndroidController._emulatorIds.set("7.", "5566");
547-
AndroidController._emulatorIds.set("7.0", "5566");
548-
AndroidController._emulatorIds.set("7.1", "5568");
549-
AndroidController._emulatorIds.set("7.1.1", "5570");
550-
AndroidController._emulatorIds.set("8", "5572");
551-
AndroidController._emulatorIds.set("8.", "5572");
552-
AndroidController._emulatorIds.set("8.0", "5572");
553-
AndroidController._emulatorIds.set("26", "5572");
554-
AndroidController._emulatorIds.set("27", "5574");
555-
AndroidController._emulatorIds.set("8.1", "5574");
556-
}
546+
// private static loadEmulatorsIds() {
547+
// AndroidController._emulatorIds.set("4.2", "5554");
548+
// AndroidController._emulatorIds.set("4.3", "5556");
549+
// AndroidController._emulatorIds.set("4.4", "5558");
550+
// AndroidController._emulatorIds.set("5.0", "5560");
551+
// AndroidController._emulatorIds.set("5.1", "5562");
552+
// AndroidController._emulatorIds.set("6", "5564");
553+
// AndroidController._emulatorIds.set("6.", "5564");
554+
// AndroidController._emulatorIds.set("6.0", "5564");
555+
// AndroidController._emulatorIds.set("7", "5566");
556+
// AndroidController._emulatorIds.set("7.", "5566");
557+
// AndroidController._emulatorIds.set("7.0", "5566");
558+
// AndroidController._emulatorIds.set("7.1", "5568");
559+
// AndroidController._emulatorIds.set("7.1.1", "5570");
560+
// AndroidController._emulatorIds.set("8", "5572");
561+
// AndroidController._emulatorIds.set("8.", "5572");
562+
// AndroidController._emulatorIds.set("8.0", "5572");
563+
// AndroidController._emulatorIds.set("26", "5572");
564+
// AndroidController._emulatorIds.set("27", "5574");
565+
// AndroidController._emulatorIds.set("8.1", "5574");
566+
// }
557567

558568
private static sendKeyCommand = (token, key) => {
559569
return `${AndroidController.ADB} -s ${token} shell input keyevent ${key}`;

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "mobile-devices-controller",
3-
"version": "2.0.4",
3+
"version": "2.0.6",
44
"description": "Manage simulators, emulators and devices",
55
"main": "index.js",
66
"scripts": {

0 commit comments

Comments
 (0)