Git Product home page Git Product logo

android-tools's Introduction

android-tools

Git repository to make it easier to package certain command line utilities provided by android-tools.

Motivation

Many Linux distributions have a package called android-tools which ships essential android command line tools like adb or fastboot. Sadly the upstream build system for those tools is rather complex and doesn't allow building the command line tools only.

Linux Distribution therefore mostly ship their own build systems for building the command line utilities. This repository aims to make packaging of android command utilities easier by providing a simple CMake based build system and a ready-to-use tarball which doesn't require cloning all of the required git repositories manually. Besides this makes it easy to collect all patches required to build standalone android command line utilities in a central place.

Status

Currently the following tools are supported:

  • adb
  • fastboot
  • mke2fs.android (required by fastboot)
  • simg2img, img2simg, append2simg
  • lpdump, lpmake, lpadd, lpflash, lpunpack
  • mkbootimg, unpack_bootimg, repack_bootimg, avbtool
  • mkdtboimg

The build system itself works quite well and is already being used for the Alpine Linux android-tools package which I maintain.

I personally don't use any android-tools except adb and fastboot. Thus my motivation to add support for additional tools is rather low at the moment. However, patches adding support for new tools in a clean way are welcome. Additionally, patches needed to make the software compile on other Linux distributions are welcome as well. Please create new patches using git format-patch --no-numbered --no-signature โ€ฆ.

Dependencies

The following libraries are required by android-tools:

  1. libusb
  2. PCRE
  3. Google Test
  4. protobuf
  5. brotli
  6. zstd
  7. lz4

Python 3 is optionally needed as a run-time dependency in order to use the mkbootimg, unpack_bootimg, and repack_bootimg scripts which are all written in Python.

Additionally the following software is required at compile-time:

  1. A C and C++ compiler (either GCC >= 10.X or clang)
  2. The Go compiler
  3. CMake
  4. Perl

Currently the build system doesn't check whether all of these are installed.

Installation

Source tarballs containing an already patched version of all vendored dependencies are available on the GitHub Release Page.

These tarballs should be used for packaging and general installation. After the tarball was downloaded and extracted android-tools can be build and installed as follows:

$ mkdir build && cd build
$ cmake ..
$ make
$ make install

Generating tarballs

New source tarballs can be created from the Git repository using:

$ mkdir build && cd build
$ cmake ..
$ make package_source

Before a new release is uploaded a new git-tag(1) should be created for the release. Afterwards the tarball can be uploaded to the GitHub Release Page.

See also

The Arch Linux android-tools package by Anatol Pomozov which inspired this project. Most definitions in the CMakeLists.txt have been copied from Anatol's ruby script.

android-tools's People

Contributors

nmeum avatar biswa96 avatar sgn avatar anatol avatar jamikettunen avatar johnnynator avatar munix9 avatar stephan-gh avatar noraj avatar vanaf avatar moetayuko avatar decatf avatar spriteovo avatar xeonacid avatar jershell 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.