Code Monkey home page Code Monkey logo

android-platform-tools's Introduction

android-platform-tools

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 https://developer.android.com/studio/releases/platform-tools.html

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.

Requirements

  • 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');
  
//downloadOnly
return adb
    .downloadTools()
    .then((tools) => {
        const toolsPath = tools.path;
    });
//downloadWithValidationAndPaths
return adb
    .downloadAndReturnToolPaths()
    .then((tools) => {
        const adbPath = tools.adbPath;
        const platformToolsPath = tools.platformToolsPath;
    });

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

adbPath
platformToolsPath
fastbootPath
dmtracedumpPath
etc1toolPath
hprofconvPath
sqlite3Path

Contributions

  • Always welcome

Roadmap

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

TroubleShooting

  • EACCESS errors on unix: Error: EACCES: permission denied https://docs.npmjs.com/getting-started/fixing-npm-permissions
  • 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

Legal

  • 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

android-platform-tools's People

Contributors

jamie-sherriff avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.