npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

android-tools-bin

v2.0.1

Published

Pre-built binaries for android tools such as adb, fastboot and heimdall.

Downloads

116

Readme

android-tools-bin

ci coverage report npm docs

An npm package with pre-built binaries for android sdk tools such as adb, fastboot, mke2fs and 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.

Usage

Install the library by running npm i android-tools-bin. See the documentation for detailed API information.

Optimistic detection

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.

import { getAndroidToolPath } from "android-tools-bin";
const adbCommand = getAndroidToolPath("adb");
const fastbootCommand = getAndroidToolPath("fastboot");
const mke2fsCommand = getAndroidToolPath("mke2fs");
const heimdallCommand = getAndroidToolPath("heimdall");

Pessimistic detection

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.

import { getAndroidToolPath } from "android-tools-bin";
try {
  const adbCommand = getAndroidToolPath("adb", false);
} catch (error) {
  console.log(
    "they told me choosing PowerPC architecture in the 21st century was a bad idea, but i just wouldn't listen..."
  );
}

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 used
USE_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:

import { getAndroidToolPath } from "android-tools-bin";
const adbCommand = getAndroidPlatformTools("adb", true, { adb: true });
const fastbootCommand = getAndroidPlatformTools("fastboot", true, {
  all: true
});
const fastbootCommand = getAndroidPlatformTools("fastboot", true, {
  heimdall: true,
  mke2fs: true
});

Base directory

You can get the base directory of the packaged files by calling getAndroidToolBaseDir().

Documentation

Documentation for the latest release available online. You can build it yourself by running npm run docs. Then, open ./docs/android-tools-bin/1.0.0/index.html in your favorite browser.

Development

$ npm install # to install dependencies
$ npm update # to update dependencies
$ npm audit fix # to install security patches
$ npm run lint # to automatically fix coding style issues
$ npm run test # to run unit-tests with coverage reports
$ npm run docs # to build detailed jsdoc documentation
$ npm run download # to download binaries
$ npm run build # to compile the typescript code

History

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.

License

Original development by Johannah Sprinz. Copyright (C) 2020-2022 UBports Foundation.

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/.

Tools