The following are a couple of recommendations for setting up a Host machine for building the Android Nougat 7.1.1_1.0.0 BSP. Some of these recommendations are not exclusive of the Nougat release and may help in other scenarios. These also apply to using Virtual Machines as Host.
Installing Open JDK 8 on Ubuntu 14.04
As mentioned on the Android guide for Establishing a Build Environment (http://source.android.com/source/initializing.html) there are no available supported OpenJDK 8 packages for Ubuntu 14.04, which is the version recommended and tested on the Nougat Android BSP. An alternative is downloading the Ubuntu 15.04 Open JDK 8 packages and installing them manually, which can be done by following this procedure:
Download the .deb packages for 64-bit architecture from archive.ubuntu.com:
openjdk-8-jre-headless_8u45-b14-1_amd64.deb with SHA256 0f5aba8db39088283b51e00054813063173a4d8809f70033976f83e214ab56c0
openjdk-8-jre_8u45-b14-1_amd64.deb with SHA256 9ef76c4562d39432b69baf6c18f199707c5c56a5b4566847df908b7d74e15849
openjdk-8-jdk_8u45-b14-1_amd64.deb with SHA256 6e47215cf6205aa829e6a0a64985075bd29d1f428a4006a80c9db371c2fc3c4c
Once you have downloaded these three packages and checked the checksum for them install the packages (optional) install them by running:
$ sudo apt-get update
$ sudo dpkg -i openjdk-8-jre-headless_8u45-b14-1_amd64.deb
$ sudo dpkg -i openjdk-8-jre_8u45-b14-1_amd64.deb
$ sudo dpkg -i openjdk-8-jdk_8u45-b14-1_amd64.deb
Increasing SWAP to compensate for the lack of RAM
Having insufficient RAM especially on the linking part of the image build may cause a number of issues that are difficult to troubleshoot. In these cases it’s good to take a look at the resource monitor to see if indeed the RAM was depleted.
One way to make up for the limited RAM is using a bigger swap. Google recommends at least 16GB of RAM/swap so it’s not uncommon to create a 10GB swap when working in VM, to do this please use the following commands.
$ sudo fallocate -l 10g /mnt/10GB.swap
$ sudo chmod 600 /mnt/10GB.swap
$ sudo mkswap /mnt/10GB.swap
$ sudo swapon /mnt/10GB.swap
Increasing heap size to avoid out of memory errors
It is possible to encounter an out of memory error with the recommendation “try increasing heap size witj java option ‘-Xmx<size>’. If you encounter this error or would like to proactively avoid it you may run the following commands that will increase heap size to four gigabytes and then reset the Jack Server by killing it and starting it again.
With the android environment initialized:
$ cd my android
$ export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
$ jack-admin kill-server && jack-admin start-server
Fixing Jack Servers errors due to multiple users on the Host
Android Nougat uses Jack Server as mono-user by default. If this is not the case for your host you would need to choose different port numbers for each user and adjust SERVER_NB_COMPILE accordingly. You can also disable the Jack server by setting SERVER=false in your $HOME/.jack.
Alternatively, you may also use the patch available on the following link to myandroid/prebuilts/sdk. It will help to fix the mono-user build restriction. When installing the jack-server, it will detect if Jack server is running in the same build machine and then generate a random ports for my build instead of using the default one.