[Samsung Galaxy Express GT-I8730 ROMs, Kernels, Rec] aureljared:
There's an easy way to do whatever's discussed below, except for a) getting the SDK, b) syncing the repos, and c) building the ROM; and that way is using this script. But it's still better to do the steps below manually as it gets you acquainted with the terminal - you'll be using it

a lot

.

Thanks to [MENTION=4983400]klvnhng[/MENTION] for the original tutorial for mako

Credits to him.

You will need:

A computer running Ubuntu with at least 2GB memory and around 40-65 GB of free space

If you don't want to install Ubuntu, run it instead in VMWare Player or VirtualBox.

make sure you provide the virtual machine with the amount of recommended disk space or more

give it no less than 3-4GB of RAM

A (preferably fast) internet connection (trust me, you don't want to do this with a 256 or 512 kbps connection)

Familiarity with Android and Linux. Read up at source.android.com.

Setting up the build environment

1. Install JDK

DO NOT USE OPENJDK. Remove it by entering

sudo apt-get purge openjdk* icedtea* icedtea-6*

Install Oracle Java 6 by typing this into a terminal:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer

Android SDK requires the x86 compatibility packages, ia32-libs. Install it by entering this:

sudo apt-get -y install ia32-libs

As an alternative, you can also do this (thanks to [MENTION=4166593]jjchico[/MENTION]):

sudo apt-get install lsb-release lib32gcc1 libc6-i386 lib32z1 lib32stdc++6 lib32bz2-1.0 lib32ncurses5

2. Android SDK

Download it here.

Extract it to a folder of your choice (in this guide, I will refer to it as ~/android/sdk).

Enter these commands into the terminal:

cd ~/android/sdk/adt-bundle/sdk/tools
./android sdk

Click Install packages. cd to ~/android/sdk/adt-bundle/sdk/platform-tools and type:

./adb
./fastboot

If you've done everything correctly, you should get a big block of text for both (which list all of the adb/fastboot commands).

3. Install required packages

Copy and paste this command into the terminal:

sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev zlib1g-dev:i386 libc6-dev lib32ncurses5-dev \
ia32-libs x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 \
lib32z-dev libgl1-mesa-dev g++-multilib mingw32 \
tofrodos python-markdown libxml2-utils xsltproc readline-common \
libreadline6-dev libreadline6 lib32readline-gplv2-dev libncurses5-dev \
lib32readline5 lib32readline6 libreadline-dev libreadline6-dev:i386 \
libreadline6:i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev \
libsdl1.2-dev libesd0-dev squashfs-tools pngcrush schedtool libwxgtk2.8-dev

4. Install the repo command

Make directories called bin and android in your home folder, respectively.

mkdir -p ~/bin
mkdir -p ~/android

Download and setup the repo binary:

curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

Now add it to your path:

export PATH="$PATH:~/bin"

And make sure it belongs in your path between subsequent reboots:

echo "export PATH="$PATH:~/android/sdk:~/bin"" >> ~/.bashrc
source ~/.bashrc

5. Configuring USB

You must configure USB to detect your Android device(s) properly.

Do this in a terminal:

curl https://raw.githubusercontent.com/aureljared/build-env-init/master/51-android.rules > ~/bin/51-android.rules
chmod a+r ~/bin/51-android.rules
sudo cp -vfp ~/bin/51-android.rules /etc/udev/rules.d/51-android.rules

6. Syncing up

The next step is to initialize the repository and download the source code to your computer.

Type the following lines into the terminal:

mkdir -p ~/android/cm-11.0
cd ~/android/cm-11.0
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0

To download all the necessary device-specific files for our device, do this:

curl https://raw.githubusercontent.com/aureljared/android-manifests/expresslte-cm-11.0/local_manifest.xml >> .repo/local_manifests/local_manifest.xml

Now run

repo sync

You have now begun downloading all of the CM source code to your build directory. Depending on your internet speed, this can take from a couple of hours to a few days. If the sync interrupts, don't worry. Simply continue the sync (you don't have to restart completely, only the project you were downloading when the interrupt occured, lol) by entering:

repo sync

Some tips:

You can interrupt the process by pressing Ctrl + C, it will continue where it left off the next time anyway.

Remember, you need to cd into your build directory (~/android/cm-11.0, if you've been following this guide) for the command to work.

If you want only one project to be synced at a time, run repo sync -j1 instead.

This step takes a long time depending on your internet connection speed (FYI you're downloading ~20 GB of code!)

7. Building CM (yay!)

You must download the necessary pre-built apps:

~/android/cm-11.0/vendor/cm/get-prebuilts

Now let's build! cd to your build directory and run the following commands in the terminal:

. build/envsetup.sh
brunch expressltexx

Now, just let your computer do the rest. This step is very demanding for your computer, so you better leave it alone while it builds. Usually this takes an hour or more. Go get some sleep or eat something.

Done? If everything went correctly, cd to ~/android/cm-11.0/out/target/product/expresslte and you should see your newly built ROM entitled:

cm-11.0-20xxxxxx-UNOFFICIAL-expressltexx.zip

Congratulations! You've successfully built CM 11.0!

For re-builds (i.e. when the source code has been updated and you would like to make a new nightly), just do this:

cd ~/android/cm-11.0
make clobber
repo sync
. build/envsetup.sh
brunch expressltexx

Have fun building!​