Patch sources and generate files for BusyBox on Android
Go to file
2017-07-30 13:11:43 +08:00
jni Add scripts, patches, and Makefiles 2017-07-29 18:56:41 +08:00
.gitignore Add scripts, patches, and Makefiles 2017-07-29 18:56:41 +08:00
busybox.mk Add scripts, patches, and Makefiles 2017-07-29 18:56:41 +08:00
LICENSE Initial commit 2017-07-29 05:41:48 -05:00
ndk_build.patch Add scripts, patches, and Makefiles 2017-07-29 18:56:41 +08:00
ndk_busybox_kitchen.sh Add scripts, patches, and Makefiles 2017-07-29 18:56:41 +08:00
README.md Update README.md 2017-07-30 13:11:43 +08:00

ndk-busybox-kitchen

This repo is the kitchen used to create and update the pre-generated busybox repo ndk-busybox, which is meant to be built with the ndk-build command included in the NDK package (more info here).

Introduction

The busybox uses the same configuration system as the Linux kernel, thus requires additional setup and configuration before you can build from the sources. As a result, people compiling busybox for Android used to use their own toolchain or NDK's standalone toolchain to cross compile with the Makefile shipped in official BusyBox sources. However, cross compiling requires setting up the environment for your specific device, re-doing configuration for each target architecture, and finally it's not Windows friendly - you need to install POSIX Environment like Cygwin to setup and compile. Of course those willing to go deep can create an automation script to do all the heavy jobs for you, but the solution isn't really that portable and simple to use. Most importantly, that setup process doesn't fit in the build process I created for Magisk. As a result, this repo is born!

Platforms

The script is meant to run on Unix operating systems. On Linux, it works out of the box; on macOS, which I personally use as daily driver, requires additional setup.
Install homebrew, and install GNU utilities using brew install coreutils gnu-sed. Before you call the script, make sure to make the GNU tools in PATH by calling
export PATH=$(brew --prefix coreutils)/libexec/gnubin:$(brew --prefix gnu-sed)/libexec/gnubin:$PATH
After these commands, the script should work just like it is in Linux environments.

Not to be confused, the generated result can be used on any platform that support NDK: Linux, macOS, and Windows. It's just the header/Makefile generation that requires Unix OS to work, which is what the script in this repo does.

Brief Explanation

This project is inspired by osm0sis/android-busybox-ndk, and heavily depends on the patches and the config file in the repo. The script ndk_busybox_kitchen.sh will download BusyBox, download osm0sis/android-busybox-ndk, apply patches for NDK, fetch the correct config, then finally generates all header files and Android.mk for NDK building.

Building BusyBox

This repo also ships with the minimal environment to compile busybox. Once you have properly run ndk_busybox_kitchen.sh, the folder busybox should be ready for compilation. If you simply just want to build busybox using this repo but don't want / cannot (e.g. you're on Windows) run the script, you can also clone my prebuilt source with git clone https://github.com/topjohnwu/ndk-busybox busybox.

After the folder busybox is properly setup, simply call <ndk-path>/ndk-build, then BusyBox should build graciously :)