Building Androidâ„¢ on Solus
This article covers building the Android Open Source Project (AOSP) on Solus, the instructions can also be tweaked to also install forks of Android such as LineageOS.
Note that Solus is not an officially supported Linux distribution for building Android.
Prerequisites
Before we can start we need to setup our build environment ready for building Android. You’ll need a minimum of 100GB
of free space to download and compile Android.
Installing Build Dependencies
Android 7 (Nougat) and Android 8 (Oreo) require OpenJDK 8. Android 5 (Lollipop) and Android 6 (Marshmallow) require OpenJDK 7 which is not currently in the repository.
To install OpenJDK 8 run:
sudo eopkg it openjdk-8-devel
Next we need to install packages from the system.devel
component, these provide common build tools for general software development.
sudo eopkg it -c system.devel
Now we’ll need to install the rest of the required build dependencies.
sudo eopkg it curl-devel git gnupg gperf libgcc-32bit libxslt-devel lzop ncurses-32bit-devel ncurses-devel readline-32bit-devel rsync schedtool sdl1-devel squashfs-tools unzip wxwidgets-devel zip zlib-32bit-devel
Installing the repo
Tool
repo
is a tool from Google to manage multiple git repositories. We’ll need to install it to download the Android source code.
mkdir ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
We now need to export ~/bin
to our PATH so we can run repo
from any directory. Paste the following into your ~/.bashrc
file.
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Run source ~/.bashrc
for the changes to apply.
Now our build environment is prepared, we can download the source code.
Downloading the Source Code
First we need to create a directory where we want to download Android.
mkdir ~/android && cd ~/android
Next we’ll need to initialize the repository with what version of Android you want to build. You can find a list of versions you can checkout here.
repo init -u https://android.googlesource.com/platform/manifest -b android-8.0.0_r34
Now we can finally download the source code, this will take a long time and depends on the speed of your internet connection. The -j
option downloads as many repos simultaneously as you have processor cores, and, the -c
option only downloads the current branch.
repo sync -j `nproc` -c
If you have a slow or unreliable internet connection using j 1
may be more reliable.
Building Android
Once the source has finished downloading we can build Android. The following commands will not build android for any specific device. For building Android specifically for your device you’ll need to find additional instructions.
source build/envsetup.sh
lunch full-eng
make -j`nproc`
Tips & Tricks
There are a number of quality of life improvements you can do to improve your experience of building Android.
Using ccache to Speed Up Subsequent Builds
ccache will cache compiler files after the initial compile to speed up subsequent builds, for building any large project more than once it’s a must enable.
In your ~/.bashrc
file add the following to specify to use ccache.
export USE_CCACHE=1
You’ll also need to specific the max amount of disk space you want ccache to use, where 10G
corresponds to 10GB.
prebuilts/misc/linux-x86/ccache/ccache -M 10G
Additionally you can specify which directory you want the ccache to reside, this can be helpful if you have an additional disk drive. Normally ccache resides at ~/.ccache
.
export CCACHE_DIR=/<path_of_your_choice>/.ccache
If you’re struggling for disk space you can turn on ccache compression to increase the number of files it can cache for a very minor performance penalty. Paste the following into your ~/.bashrc
file to enable.
export CCACHE_COMPRESS=1
After making changes to your ~/.bashrc
file, remember to run source ~/.bashrc
for changes to take effect.
More Information
Google has provided build instructions for building AOSP on Ubuntu and MacOS, you may find additional useful information there, not stated here.
https://source.android.com/source/requirements
If your device is supported by LineageOS you can choose your device and follow the device specific build instructions at the LineageOS Wiki.