Preparing AOSP build environment
System requirements
The build can be performed on x64-based Linux and macOS PCs, as well as on Linux virtual machines. The system requirements are recommended to ensure a smooth build process.
Android 5.0-6.0
- 2 CPU cores
- 160 GB of free storage space
- 6 GB RAM
Android 7.0-8.1
- 4 CPU cores
- 180 GB of free storage space
- 10 GB RAM
Installing required packages for Android 5.0-6.0
First, install the packages if you are using any of the three suggested Linux distributions.
Ubuntu 14.04 LTS
sudo apt-get install git-core gnupg flex bison gperf \ build-essential zip curl zlib1g-dev libc6-dev-i386 \ libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev \ lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip \ libssl-dev zlib1g-dev xz-utils wget python2.7 openjdk-7-jdk \ libc++-dev lib32stdc++6
openSUSE 13.2
sudo zypper in -t pattern 32bit sudo zypper in gcc glibc-devel-32bit ncurses-devel-32bit \ readline-devel-32bit libpth20-32bit java-1_7_0-openjdk \ openssl-devel curl-devel libexpat-devel \ java-1_7_0-openjdk-devel make mawk m4 gperf flex bison \ gettext-tools sudo zypper remove patterns-openSUSE-minimal_base-conflicts sudo zypper in zip python-xml python-xmldiff python-wheel \ python-six python-pytz python-pysqlite python-pygit2 \ python-pycparser python-functional python-async \ python-extras libcurl4-openssl-dev
Debian 8.11.0
sudo apt-get install ia32-libs ia32-libs-dev \ openjdk-7-jre openjdk-7-jdk gcc g++ make \ libgl1-mesa-dev libgl1-mesa-glx libssl-dev libffi-dev \ libcurl4-openssl-dev gettext gnupg flex bison \ build-essential zip curl libc6-dev libncurses5-dev \ x11proto-core-dev libx11-dev libreadline6-dev \ mingw32 tofrodos python-markdown libxml2-utils xsltproc \ zlib1g-dev gperf libc6-dev-i386 lib32z1-dev gcc-multilib \ g++-multilib lib32ncurses5-dev
Installing required packages for Android 7.0-8.1
Android, starting with version 7.0, uses OpenJDK 8, so the sequence of installing preparatory packages on Ubuntu and Debian is slightly different.
Ubuntu 14.04 LTS
sudo apt-get install git-core gnupg flex bison gperf \ build-essential zip curl zlib1g-dev libc6-dev-i386 \ libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev \ lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip \ libssl-dev zlib1g-dev xz-utils wget python2.7 \ libc++-dev lib32stdc++6 wget http://old-releases.ubuntu.com/ubuntu/pool/universe/o/openjdk-8/openjdk-8-jre-headless_8u45-b14-1_amd64.deb wget http://old-releases.ubuntu.com/ubuntu/pool/universe/o/openjdk-8/openjdk-8-jre_8u45-b14-1_amd64.deb wget http://old-releases.ubuntu.com/ubuntu/pool/universe/o/openjdk-8/openjdk-8-jdk_8u45-b14-1_amd64.deb sudo dpkg -i ./openjdk-8-*.deb
openSUSE 13.2
sudo zypper in -t pattern 32bit sudo zypper in gcc glibc-devel-32bit ncurses-devel-32bit \ readline-devel-32bit libpth20-32bit \ openssl-devel curl-devel libexpat-devel \ make mawk m4 gperf flex bison gettext-tools sudo zypper remove patterns-openSUSE-minimal_base-conflicts sudo zypper in zip python-xml python-xmldiff python-wheel \ python-six python-pytz python-pysqlite python-pygit2 \ python-pycparser python-functional python-async \ java-1_8_0-openjdk java-1_8_0-openjdk-devel \ python-extras libcurl4-openssl-dev
Debian 8.11.0
sudo apt-get install ia32-libs ia32-libs-dev \ gcc g++ make \ libgl1-mesa-dev libgl1-mesa-glx libssl-dev libffi-dev \ libcurl4-openssl-dev gettext gnupg flex bison \ build-essential zip curl libc6-dev libncurses5-dev \ x11proto-core-dev libx11-dev libreadline6-dev \ mingw32 tofrodos python-markdown libxml2-utils xsltproc \ zlib1g-dev gperf libc6-dev-i386 lib32z1-dev gcc-multilib \ g++-multilib lib32ncurses5-dev su -c "echo deb http://archive.debian.org/debian jessie-backports main > /etc/apt/sources.list.d/jessie-backports.list" sudo apt-get install openjdk-8-jdk
Installing components for Repo Launcher
To work with the Repo Launcher utility, you need to compile its components from source:
Troubleshooting
Jack server stops at Building with Jack: .../org.apache.http.legacy_intermediates/classes.jack
Reason
This is due to the fact that Jack allocates 4 GB by default for building components, which may not be enough for a full-fledged Android 8.x build.
Solution
1. Enable the JACK_SERVER_VM_ARGUMENTS
variable in your ~/.bashrc
file and manually via terminal:
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx10g"
2. Restart Jack server:
jack-admin kill-server jack-admin start-server