[Nexus 7 General] ezbncs:
First let me give you some background information before we start. I know there are guides out there but I found them all to be incomplete either missing a step here or there that is why I am posting this guide. After a lot of trial and error I tried to make the process as simple as it can be. This guide is for Ubuntu 14.04 64bit Desktop or Server version. This guide might work on other distros but I cannot guarantee it. This guide is designed to build the AOSP rom from Google source jellybean to lollipop. I highly recommend doing this on a remote server, like a vps or dedicated box. This guide is for root users if your not root then you may need to use "sudo" on many of the commands.

## Disclaimer I am not responsible for anything that happens to your device this is a guide only. I am not a master developer or linux guru if you have questions I will try to answer them best I can. ##

Most important command if your on a remote machine this will keep the process going if you get disconnected.

screen

## Establishing a Build Environment ##

# Java Install

apt-get update

apt-get upgrade (upgrades all the packages installed on system that have updates)

apt-get install openjdk-7-jdk (Lollipop)

apt-get install openjdk-6-jdk (KitKat or older)

# Optionally, update the default Java version by running:

update-alternatives --config java

update-alternatives --config javac

# Check if JAVA is Installed

java -version

# You should see something like this depending on the version you installed.

java version "1.7.0_91"

OpenJDK Runtime Environment (IcedTea 2.6.3) (7u91-2.6.3-0ubuntu0.14.04.1)

OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode)

# Installing required packages

apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip python-networkx libswitch-perl schedtool

## Downloading the Source ##

# To install Repo:

Make sure you have a bin/ directory in your home directory and that it is included in your path:

mkdir ~/bin

PATH=~/bin:$PATH

# Download the Repo tool and ensure that it is executable:

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

chmod a+x ~/bin/repo

# Initializing a Repo client

# After installing Repo, set up your client to access the Android source repository:

# Create an empty directory to hold your working files. Give it any name you like:

mkdir WORK

cd WORK

git config --global user.email "useyourrealemail"

git config --global user.name "usearealname"

repo init -u https://android.googlesource.com/platform/manifest

To check out a branch other than "master", specify it with -b. For a list of branches, see Source Code Tags and Builds.

repo init -u https://android.googlesource.com/platform/manifest -b android-5.1.1_r1 ( To build only Lollipop. I suggest this option for most)

## Downloading the Android Source Tree ##

# To pull down the Android source tree to your working directory from the repositories as specified in the default manifest, run

repo sync -j4

# The Android source files will be located in your working directory under their project names. This takes anywhere from 15 minutes to a few hours depending on your internet connection. (Thats why I recommend building on a remote machine)

## Binaries ##

# Extracting the proprietary binaries

# Each set of binaries comes as a self-extracting script in a compressed archive. After uncompressing each archive, run the included self-extracting script from the root of the source tree, confirm that you agree to the terms of the enclosed license agreement, and the binaries and their matching makefiles will get installed in the vendor/ hierarchy of the source tree.

https://developers.google.com/android/nexus/drivers

# Nexus 7 (Wi-Fi) binaries for Android 4.1.2

wget -c https://dl.google.com/dl/android/aosp/broadcom-grouper-jzo54k-26240daf.tgz && wget -c wget -c https://dl.google.com/dl/android/aosp/elan-grouper-jzo54k-c889b8f4.tgz && wget -c wget -c https://dl.google.com/dl/android/aosp/invensense-grouper-jzo54k-aae1cd0c.tgz && wget -c wget -c https://dl.google.com/dl/android/aosp/nvidia-grouper-jzo54k-56de148f.tgz && wget -c wget -c https://dl.google.com/dl/android/aosp/nxp-grouper-jzo54k-4bfb1fb6.tgz && wget -c wget -c https://dl.google.com/dl/android/aosp/widevine-grouper-jzo54k-aca0e725.tgz

for f in *.tgz; do tar xzf $f; done

for extractor_script in *.sh; do bash $extractor_script; done

Please ACCEPT each one by typing I ACCEPT

# Nexus 7 (Wi-Fi) binaries for Android 4.2/4.2.1

wget -c https://dl.google.com/dl/android/aosp/broadcom-grouper-jop40c-1bf6a3d7.tgz && wget -c https://dl.google.com/dl/android/aosp/elan-grouper-jop40c-3c485b17.tgz && wget -c https://dl.google.com/dl/android/aosp/invensense-grouper-jop40c-9f366366.tgz && wget -c https://dl.google.com/dl/android/aosp/nvidia-grouper-jop40c-1a641dd0.tgz && wget -c https://dl.google.com/dl/android/aosp/nxp-grouper-jop40c-e072af0d.tgz && wget -c https://dl.google.com/dl/android/aosp/widevine-grouper-jop40c-ef747ec3.tgz

for f in *.tgz; do tar xzf $f; done

for extractor_script in *.sh; do bash $extractor_script; done

Please ACCEPT each one by typing I ACCEPT

# Nexus 7 (Wi-Fi) binaries for Android 4.2.2

wget -c https://dl.google.com/dl/android/aosp/asus-grouper-jdq39-b6907aa5.tgz && wget -c https://dl.google.com/dl/android/aosp/broadcom-grouper-jdq39-4a9b93a2.tgz && wget -c https://dl.google.com/dl/android/aosp/elan-grouper-jdq39-82c8d127.tgz && wget -c https://dl.google.com/dl/android/aosp/invensense-grouper-jdq39-28df082f.tgz && wget -c https://dl.google.com/dl/android/aosp/nvidia-grouper-jdq39-738059f9.tgz && wget -c ]https://dl.google.com/dl/android/aosp/nxp-grouper-jdq39-28a5fe9a.tgz && wget -c https://dl.google.com/dl/android/aosp/widevine-grouper-jdq39-73fc49a2.tgz

for f in *.tgz; do tar xzf $f; done

for extractor_script in *.sh; do bash $extractor_script; done

Please ACCEPT each one by typing I ACCEPT

# Nexus 7 (Wi-Fi) binaries for Android 4.3

wget -c https://dl.google.com/dl/android/aosp/asus-grouper-jwr66y-d9ad928d.tgz && wget -c https://dl.google.com/dl/android/aosp/broadcom-grouper-jwr66y-af694cc9.tgz && wget -c https://dl.google.com/dl/android/aosp/elan-grouper-jwr66y-2ece01e1.tgz && wget -c https://dl.google.com/dl/android/aosp/invensense-grouper-jwr66y-f21f0c49.tgz && wget -c https://dl.google.com/dl/android/aosp/nvidia-grouper-jwr66y-b3b0003e.tgz && wget -c https://dl.google.com/dl/android/aosp/nxp-grouper-jwr66y-f5d295e4.tgz && wget -c https://dl.google.com/dl/android/aosp/widevine-grouper-jwr66y-a0b9cafc.tgz

for f in *.tgz; do tar xzf $f; done

for extractor_script in *.sh; do bash $extractor_script; done

Please ACCEPT each one by typing I ACCEPT

# Nexus 7 (Wi-Fi) binaries for Android 4.4

wget -c https://dl.google.com/dl/android/aosp/asus-grouper-krt16s-286ffbbf.tgz&& wget -c https://dl.google.com/dl/android/aosp/broadcom-grouper-krt16s-2461febe.tgz && wget -c https://dl.google.com/dl/android/aosp/elan-grouper-krt16s-4b37aa74.tgz && wget -c https://dl.google.com/dl/android/aosp/invensense-grouper-krt16s-d5bdd039.tgz&& wget -c https://dl.google.com/dl/android/aosp/nvidia-grouper-krt16s-2e8efaff.tgz && wget -c https://dl.google.com/dl/android/aosp/nxp-grouper-krt16s-fe4b53e1.tgz && wget -c https://dl.google.com/dl/android/aosp/widevine-grouper-krt16s-68751697.tgz

for f in *.tgz; do tar xzf $f; done

for extractor_script in *.sh; do bash $extractor_script; done

Please ACCEPT each one by typing I ACCEPT

# Nexus 7 (Wi-Fi) binaries for Android 4.4.2

wget -c https://dl.google.com/dl/android/aosp/asus-grouper-kot49h-2567c00c.tgz && wget -c https://dl.google.com/dl/android/aosp/broadcom-grouper-kot49h-45c0c43a.tgz && wget -c https://dl.google.com/dl/android/aosp/elan-grouper-kot49h-d3cda89d.tgz && wget -c https://dl.google.com/dl/android/aosp/invensense-grouper-kot49h-2f4def27.tgz && wget -c https://dl.google.com/dl/android/aosp/nvidia-grouper-kot49h-73d2765c.tgz && wget -c https://dl.google.com/dl/android/aosp/nxp-grouper-kot49h-6d4f389b.tgz && wget -c https://dl.google.com/dl/android/aosp/widevine-grouper-kot49h-51d2ed4b.tgz

for f in *.tgz; do tar xzf $f; done

for extractor_script in *.sh; do bash $extractor_script; done

Please ACCEPT each one by typing I ACCEPT

# Nexus 7 (Wi-Fi) binaries for Android 4.4.3

wget -c https://dl.google.com/dl/android/aosp/asus-grouper-ktu84l-8dde86d9.tgz && wget -c https://dl.google.com/dl/android/aosp/broadcom-grouper-ktu84l-079650ef.tgz && wget -c https://dl.google.com/dl/android/aosp/elan-grouper-ktu84l-caa1c219.tgz && wget -c https://dl.google.com/dl/android/aosp/invensense-grouper-ktu84l-fae837a0.tgz&& wget -c https://dl.google.com/dl/android/aosp/nvidia-grouper-ktu84l-22d95d44.tgz && wget -c https://dl.google.com/dl/android/aosp/nxp-grouper-ktu84l-ece658d1.tgz && wget -c https://dl.google.com/dl/android/aosp/widevine-grouper-ktu84l-f3760dae.tgz

for f in *.tgz; do tar xzf $f; done

for extractor_script in *.sh; do bash $extractor_script; done

Please ACCEPT each one by typing I ACCEPT

# Nexus 7 (Wi-Fi) binaries for Android 4.4.4

wget -c https://dl.google.com/dl/android/aosp/asus-grouper-ktu84p-b12ce5f7.tgz && wget -c https://dl.google.com/dl/android/aosp/broadcom-grouper-ktu84p-646d5a68.tgz && wget -c https://dl.google.com/dl/android/aosp/elan-grouper-ktu84p-742223b3.tgz && wget -c https://dl.google.com/dl/android/aosp/invensense-grouper-ktu84p-724c855a.tgz && wget -c https://dl.google.com/dl/android/aosp/nvidia-grouper-ktu84p-e6d581dc.tgz && wget -c https://dl.google.com/dl/android/aosp/nxp-grouper-ktu84p-27abae08.tgz && wget -c https://dl.google.com/dl/android/aosp/widevine-grouper-ktu84p-57b01f77.tgz

for f in *.tgz; do tar xzf $f; done

for extractor_script in *.sh; do bash $extractor_script; done

Please ACCEPT each one by typing I ACCEPT

# Nexus 7 (Wi-Fi) binaries for Android 5.0

wget -c https://dl.google.com/dl/android/aosp/asus-grouper-lrx21p-896ccd01.tgz && wget -c https://dl.google.com/dl/android/aosp/broadcom-grouper-lrx21p-1220d525.tgz && wget -c https://dl.google.com/dl/android/aosp/elan-grouper-lrx21p-a53f697e.tgz && wget -c https://dl.google.com/dl/android/aosp/invensense-grouper-lrx21p-4a1a3ab1.tgz && wget -c https://dl.google.com/dl/android/aosp/nvidia-grouper-lrx21p-c4905f19.tgz && wget -c https://dl.google.com/dl/android/aosp/nxp-grouper-lrx21p-d0465c3c.tgz && wget -c https://dl.google.com/dl/android/aosp/widevine-grouper-lrx21p-78877346.tgz

for f in *.tgz; do tar xzf $f; done

for extractor_script in *.sh; do bash $extractor_script; done

Please ACCEPT each one by typing I ACCEPT

# Nexus 7 (Wi-Fi) binaries for Android 5.0.2

wget -c https://dl.google.com/dl/android/aosp/asus-grouper-lrx22g-aec33ad2.tgz && wget -c https://dl.google.com/dl/android/aosp/broadcom-grouper-lrx22g-c7f54ba9.tgz && wget -c https://dl.google.com/dl/android/aosp/elan-grouper-lrx22g-580da07a.tgz && wget -c https://dl.google.com/dl/android/aosp/invensense-grouper-lrx22g-fd3690aa.tgz && wget -c https://dl.google.com/dl/android/aosp/nvidia-grouper-lrx22g-1d3281e3.tgz && wget -c https://dl.google.com/dl/android/aosp/nxp-grouper-lrx22g-93aec176.tgz && wget -c https://dl.google.com/dl/android/aosp/widevine-grouper-lrx22g-179aea10.tgz

for f in *.tgz; do tar xzf $f; done

for extractor_script in *.sh; do bash $extractor_script; done

Please ACCEPT each one by typing I ACCEPT

# Nexus 7 (Wi-Fi) binaries for Android 5.1.0

wget -c https://dl.google.com/dl/android/aosp/asus-grouper-1743759-83e8c08c.tgz && wget -c https://dl.google.com/dl/android/aosp/broadcom-grouper-1743759-48f4fdc9.tgz && wget -c https://dl.google.com/dl/android/aosp/elan-grouper-1743759-9f5eb659.tgz && wget -c https://dl.google.com/dl/android/aosp/invensense-grouper-1743759-744cc938.tgz && wget -c https://dl.google.com/dl/android/aosp/nvidia-grouper-1743759-a1088a38.tgz&& wget -c https://dl.google.com/dl/android/aosp/nxp-grouper-1743759-1d7e8bba.tgz && wget -c https://dl.google.com/dl/android/aosp/widevine-grouper-1743759-d6f899eb.tgz

for f in *.tgz; do tar xzf $f; done

for extractor_script in *.sh; do bash $extractor_script; done

Please ACCEPT each one by typing I ACCEPT

# Nexus 7 (Wi-Fi) binaries for Android 5.1.1

wget -c https://dl.google.com/dl/android/aosp/asus-grouper-lmy47v-f395a331.tgz && wget -c https://dl.google.com/dl/android/aosp/broadcom-grouper-lmy47v-5671ab27.tgz && wget -c https://dl.google.com/dl/android/aosp/elan-grouper-lmy47v-6a10e8f3.tgz&& wget -c https://dl.google.com/dl/android/aosp/invensense-grouper-lmy47v-ccd43018.tgz && wget -c https://dl.google.com/dl/android/aosp/nvidia-grouper-lmy47v-c9005750.tgz&& wget -c https://dl.google.com/dl/android/aosp/nxp-grouper-lmy47v-18820f9b.tgz&& wget -c https://dl.google.com/dl/android/aosp/widevine-grouper-lmy47v-e570494f.tgz

for f in *.tgz; do tar xzf $f; done

for extractor_script in *.sh; do bash $extractor_script; done

Please ACCEPT each one by typing I ACCEPT

# Now that is done you should of seen several files being extracted in certain directories.

source build/envsetup.sh

lunch (Pick the grouper-userdebug}

#To make a Fastboot flash image

make -j4

# If you get the following error on make

************************************************************

You are attempting to build with an unsupported JDK.

You use OpenJDK but only Sun/Oracle JDK is supported.

Please follow the machine setup instructions at

************************************************************

add-apt-repository ppa:webupd8team/java

apt-get update

apt-get install oracle-java7-installer (Lollipop)

apt-get install oracle-java6-installer (KitKat or older)

update-alternatives --config java

The rerun command (make -j4)

#Flashable Zip

make -j4 otapackage

# If you get the following error on make

************************************************************

You are attempting to build with an unsupported JDK.

You use OpenJDK but only Sun/Oracle JDK is supported.

Please follow the machine setup instructions at

************************************************************

add-apt-repository ppa:webupd8team/java

apt-get update

apt-get install oracle-java7-installer (Lollipop)

apt-get install oracle-java6-installer (KitKat or older)

update-alternatives --config java

The rerun command (make -j4 otapackage)

CREDITS and THANKS to:

AOSP/Google and Google Search