@@ -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 } ` ;
0 commit comments