Android.prototype.initDevice = function * () { if (this.args.udid) { this.udid = this.args.udid; this.adb.setDeviceId(this.udid); return; } var devices = yield ADB.getDevices(); var device = devices[0]; if (device) { this.adb.setDeviceId(device.udid); this.udid = device.udid; } else { logger.info('no device, now create one from avd'); var env = global.process.env; var emulatorCommand = path.resolve(env.ANDROID_HOME, 'tools', 'emulator'); var androidCommand = path.resolve(env.ANDROID_HOME, 'tools', 'android'); var data = yield _.exec(`${androidCommand} list avd`); data = data.split(EOL); data.shift(); if (data.length === 0) { throw new Error('no avd created! Please create one avd first'); } else { var avdArr = data.filter(avd => { return /Name:/.test(avd); }).map(avd => { return _.trim(avd.split(':')[1]); }); _.exec(`${emulatorCommand} -avd ${avdArr[0]}`); var checkEmulator = () => { return new Promise((resolve, reject) => { ADB.getBootStatus().then(data => { resolve(data === 'stopped'); }).catch(() => { reject('check emulator failed'); }); }); }; yield _.waitForCondition(checkEmulator, 60 * 1000, 2 * 1000); devices = yield ADB.getDevices(); device = devices[0]; if (device) { this.adb.setDeviceId(device.udid); this.udid = device.udid; } else { throw new Error('emulator start failed or too slow!'); } } } this.isVirtual = device.type === 'virtual'; };
Android.prototype.initDevice = function *() { var devices = yield ADB.getDevices(); if (devices.length) { var device = devices[0]; this.adb.setDeviceId(device.udid); this.udid = device.udid; } else { console.log('no device'); } };
exports.getDevices = function *() { var matchedDevice = null; var devices; if (isIOS) { devices = yield Simulator.getDevices(); devices.forEach(function(device) { if (device.name === 'iPhone 6' && device.available) { matchedDevice = device; } }); } else { devices = yield ADB.getDevices(); matchedDevice = devices[0]; } return matchedDevice; };