• Stars
    star
    181
  • Rank 212,110 (Top 5 %)
  • Language CMake
  • License
    Apache License 2.0
  • Created over 6 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Unoffical CMake-based build system for android command line utilities

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.

More Repositories

1

tpm

Tiny password manager
Shell
84
star
2

hii

A file-based IRC client inspired by ii
Go
34
star
3

zig-riscv-embedded

Experimental Zig-based CoAP node for the HiFive1 RISC-V board
Zig
32
star
4

creek

A malleable and minimalist status bar for the River compositor
Zig
26
star
5

edward

An extensible POSIX-compatible implementation of the ed(1) text editor
Scheme
24
star
6

depp

No frills static page generator for Git repositories
Go
16
star
7

saneterm

Modern line-oriented terminal emulator without support for TUIs
Python
14
star
8

insomnia

A frontend for the hii IRC client
C
12
star
9

git-shuffle

Randomize Git commit timestamps to enhance privacy
C
9
star
10

zoap

A WiP CoAP implementation for bare-metal constrained devices in Zig
Zig
6
star
11

kahl

R⁷RS Scheme parser combinator library for decoding BARE messages
Scheme
5
star
12

riscv-utils

Scheme utility procedures for the RISC-V instruction set architecture
Scheme
5
star
13

gdris

A toy gopher client written in Idris2
Idris
4
star
14

mpvfs

9P file server for controlling mpv playback
Go
4
star
15

marvin

A simple and modular irc bot
Go
4
star
16

noprs

GitHub webhook for closing all new GitHub PRs with a costum message
Hy
3
star
17

ninenano

Client implementation of the 9P protocol for constrained devices
C
3
star
18

cpod

Yet another cron friendly podcatcher
Go
3
star
19

posix-regex

CHICKEN Scheme wrapper for POSIX regular expression matching
Scheme
3
star
20

archive-mail

Maintains maildir archives synced with current maildirs
Go
3
star
21

ifupdown-ng-waitif

An ifupdown-ng executor which blocks until the interface is actually running
C
3
star
22

input

Prompt for input with readline-like key bindings
C
3
star
23

rwx

Run a programm while X is running
C
2
star
24

edward-contrib

Extra commands for the extensible edward text editor
Scheme
2
star
25

tracktime

Small utility for tracking working hours in a plain text file
Go
2
star
26

libmpdserver

Parser combinator library for MPD client commands
C
2
star
27

readit

Tooling for managing structured reading notes for scientific publications
Scheme
2
star
28

tmsim

A fast turing machine simulator with graphviz export functionality
C
2
star
29

mmp

The mini music player, an alternative to MPD
Hy
2
star
30

dwm-status

Yet another stupid dwm status tool
C
2
star
31

abuild-lint

A linting utility for Alpine Linux APKBUILDs
Go
2
star
32

aports

Custom Alpine Linux aports
Shell
2
star
33

acme-mock

An ACME server implementation performing no validations
Go
2
star
34

srfi-151

Fork of <https://github.com/scheme-requests-for-implementation/srfi-151> for CHICKEN
Scheme
1
star
35

mblaze-ui

A minimal TUI for the mblaze email client
Go
1
star
36

climp

Dirty interpreter for the limp programming language in C
C
1
star
37

dwm

dwm <http://dwm.suckless.org/> with some minor modification
C
1
star
38

corectl

CHICKEN egg for controlling LEDs on the project 0001 keyboard.
Scheme
1
star
39

editline-tabcomp

Tab completion implementation for BSD editline (libedit)
C
1
star
40

archive-logs

Iteratively archive newline separated log files
C
1
star
41

alpine-chroot

Various utilities for creating and using Alpine Linux chroots
Shell
1
star
42

go-feedparser

Simple RSS and ATOM feed parser
Go
1
star
43

scmdoc

Automatically generate documentation from comments in R7RS Scheme code
Haskell
1
star
44

mach

A work-in-progress implementation of make(1)
Haskell
1
star