3.0.2 • Public • Published


Build Status Build status Dependency Status

This is a fully self contained module that wraps the Android SDK platform tools

This grabs the latest SDK Platform tools from

Fully multi platform and tested on windows, Linux and Mac OS. Please let me know if your OS does not work.

It will Also store the Android platform tools locally and check it exists at runtime so it does not download each time.


  • NodeJs 8+ recommended NodeJs 4/6 should also work but are unsupported

Version 3 changes

  • BREAKING: change logic for issue #1 to default to __dirname but can be overridden instead
    • Doesn't make sense to have the CLI install to every directory you call it in.
    • The functions getToolPaths, downloadTools and downloadAndReturnToolPaths take a second parameter of base directory, defaults to __dirname of the package installation dir
  • The following syntax is an example to use the previous behaviour adb.downloadAndReturnToolPaths('custom-path3', process.cwd())

NPX Usage

$ npx android-platform-tools devices
npx: installed 80 in 2.914s
List of devices attached

Command Line Interface Usage

  • npm install -g android-platform-tools
  • This provides an alias for adb adbn <any adb command here> or adb <any adb command here>
  • For example: adbn devices or adb devices
    Returns the usual: List of devices attached
  • adbn to avoid path conflicts with any existing android sdk installation with adb
  • Version 1.0.0+ Now provides aliases for fastboot, etc1tool, dmtracedump, hprof-conv and sqlite3
  • As with adb they have their respective n suffixes (fastbootn, etc1tooln, dmtracedumpn, hprof-convn and sqlite3n)

CLI Customisation

The following environment variables are available

  • ADB_HIGHLIGHT_ERRORS (Highlights the word error in stdout in red)
  • ADB_RAINBOW (Makes each line in stdout a different color and windows environment friendly)

Programmatic Usage

const adb = require('android-platform-tools');
return adb
    .then((tools) => {
        const toolsPath = tools.path;
return adb
    .then((tools) => {
        const adbPath = tools.adbPath;
        const platformToolsPath = tools.platformToolsPath;

With Version 1.0.0 downloadAndReturnToolPaths now returns an object with the following properties:



  • Always welcome


  • more customisation of the platform tools path, currently defaults to __dirname and "platform-tools"
  • Also consult TODO.txt


  • EACCESS errors on unix: Error: EACCES: permission denied
  • Be careful with option one because doing a chown on usr/bin can override the sudo command on unix systems
  • EPERM: operation not permitted, unlink 'C:%HOMEPATH%\AppData\Roaming\npm\node_modules\android-platform-tools\platform-tools\AdbWinApi.dll' On windows to, to fix it means adb is still running try a adb kill-server

Known Issues

  • adb shell is a bit sluggish for input and will look into this
  • Please add any issues you find to github
  • linting doesn't work under node 11 due to graceful-fs sub dependency

Running Tests

  • npm test

Checking code style

  • npm run lint

Contributing guidelines

  • Write tests
  • Check linting
  • Do a Pull request


  • By using this module you agree to any terms and conditions outlined by Google, documented in the NOTICE.txt under the platform tools installation

Any Questions?

  • Feel free to contact me on github

Package Sidebar


npm i android-platform-tools

Weekly Downloads






Unpacked Size

24.4 kB

Total Files


Last publish


  • jsherriff