-
Notifications
You must be signed in to change notification settings - Fork 24.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix run-android to execute app on all connected devices
Summary:**EDIT: ** This has been updated to simply fix the `run-android` command so that it runs on all connected devices instead of throwing an error. **Original PR description:** This adds a new command to the react-native CLI. When executed this command will install and successfully execute your app on all connected Android devices: `react-native run-android-all` Closes #5901 **Note:** I wasn't sure how to approach this API since it seems a bit like a flag, but I didn't see any other flags implemented in the cli so it seems like the current trend is to keep all commands to a single phrase. I am open to changing this if need be. Closes #5902 Differential Revision: D2976580 Pulled By: mkonicek fb-gh-sync-id: e7f734478f719cf59e0192b5f4be3f6408c31964 shipit-source-id: e7f734478f719cf59e0192b5f4be3f6408c31964
- Loading branch information
Showing
2 changed files
with
82 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
/** | ||
* Copyright (c) 2015-present, Facebook, Inc. | ||
* All rights reserved. | ||
* | ||
* This source code is licensed under the BSD-style license found in the | ||
* LICENSE file in the root directory of this source tree. An additional grant | ||
* of patent rights can be found in the PATENTS file in the same directory. | ||
* | ||
* @flow | ||
*/ | ||
|
||
const child_process = require('child_process'); | ||
|
||
/** | ||
* Parses the output of the 'adb devices' command | ||
*/ | ||
function parseDevicesResult(result: string): Array<string> { | ||
if (!result) { | ||
return []; | ||
} | ||
|
||
const devices = []; | ||
const lines = result.trim().split(/\r?\n/); | ||
|
||
for (let i=0; i < lines.length; i++) { | ||
let words = lines[i].split(/[ ,\t]+/).filter((w) => w !== ''); | ||
|
||
if (words[1] === 'device') { | ||
devices.push(words[0]); | ||
} | ||
} | ||
return devices; | ||
} | ||
|
||
/** | ||
* Executes the commands needed to get a list of devices from ADB | ||
*/ | ||
function getDevices(): Array<string> { | ||
try { | ||
const devicesResult = child_process.execSync('adb devices'); | ||
return parseDevicesResult(devicesResult.toString()); | ||
} catch (e) { | ||
return []; | ||
} | ||
|
||
|
||
} | ||
|
||
module.exports = { | ||
parseDevicesResult: parseDevicesResult, | ||
getDevices: getDevices | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters