An npm package with pre-built binaries for android sdk tools such as
heimdall. A convenience function helps finding the correct executable and environment variables and config options are available to manipulate the behavior.
See promise-android-tools for a full wrapper that provides async access to all tools and subcommands.
Install the library by running
npm i android-tools-bin. See the documentation for detailed API information.
By default, the function will check if the requested tool is available for the current architecture and platform and fall back to returning a system command for the natively installed tool, if none is packaged.
const getAndroidToolPath = ;const adbCommand = ;const fastbootCommand = ;const mke2fsCommand = ;const heimdallCommand = ;
To prevent falling back to native system commands, pass
false as the second argument. The function will then throw an error if the requested binary is not available.
const getAndroidToolPath = ;tryconst adbCommand = ;catcherrorconsole;
Requesting native tools using environment variables
To allow the user of a packaged NodeJS or Electron application some level of control as to wether the native tools should be used, the function provides environment variables:
USE_SYSTEM_TOOLS # if specified, no packaged binaries will be usedUSE_SYSTEM_<tool> # pass the toolname in all caps (eg. USE_SYSTEM_ADB) to select which tools to use natively
Requesting native tools using the native argument
If, for some reason, you don't want to use the packaged binaries, you can use the third argument to pass an object describing which binaries you want natively and which you want packaged. You can also specify to not use any packaged binaries:
const getAndroidToolPath = ;const adbCommand = ;const fastbootCommand = ;const fastbootCommand = ;
You can get the base directory of the packaged files by calling
$ npm install # to install dependencies$ npm update # to update dependencies$ npm audit fix # to install security patches$ npm run lint # to check coding style$ npm run lint-fix # to automatically fix coding style issues$ npm run test # to run unit-tests with coverage reports$ npm run test-nocover # to run unit-tests without coverage reports$ npm run docs # to build detailed jsdoc documentation$ npm run build # to compile backwards-compatible code using babel and get binaries
The library was originally developed for use in the UBports Installer and its promise-android-tools library, but it might be useful to other projects. Semantic versioning will ensure API stability for public functions.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.