[ GUIDE ] How to Prepare Ubuntu 14.04 LTS Trusty Tahr to Compile Android ROMs

Search This thread

sylentprofet

Senior Member
Jun 10, 2010
283
1,857
Sacramento
repo init -u git://github.com/AOKP/platform_manifest.git -b kitkat

for lillipop type like this repo init -u git://github.com/AOKP/platform_manifest.git -b lollipop

Pretty sure this doesn't work yet. To my knowledge, as of writing this AOKP hasn't updated their platform manifests to reflect the changes made by Lollipop. I'm sure they're hard at work, along with the rest of the teams (Cyanogenmod et al) trying to get a release out, so stay tuned for updates. There's going to be a lot of changes happening in the coming weeks.
 

satyr007

Senior Member
Dec 9, 2008
291
386
Cracow
xdaforums.com
You can use java 1.7 for KK, but If u wanna both version try this: I presume u got 1..6 installed so install 1.7. To build with 1.7 just export path to correct java version before make/brunch: export PATH="usr/lib/jvm/java-1.7.0-openjdk-amd64/bin:$PATH" or something similiar and check "java -version". It should change to 1.7. Restarting bash should switch to 1.6 again.
 
  • Like
Reactions: kyrillos13

Mad07

Senior Member
Sep 30, 2009
287
28
Hi,
Many thanks for the clear instructions to set up the system to be ready for compile.
I have installed Java 1.7 for Lollipop and for the first try the git hub from CM.(the A510 is uncomfortable not a supported device of CM, but I want first look, that the compiler progress is working)
Now, after sync, the source files are local. What's happen if I change something and make once again a sync? Does my changes will be available in the official hub? Hopefully not ....
 
Last edited:

sylentprofet

Senior Member
Jun 10, 2010
283
1,857
Sacramento
Hi,
Now, after sync, the source files are local. What's happen if I change something and make once again a sync? Does my changes will be available in the official hub? Hopefully not ....

Nope, your changes will only be available locally. In fact, if your local copy is different than an updated file on the server, you'll actually get a sync error because the checksums on the files won't match what is in the git repo. You'll need to move your local files out to successfully sync, then compare the differences with the new file.

I recommend looking into how to use git. That's how you can learn to submit patches and changes of your own, once you feel comfortable with the code and compile process.

Good luck!
 

Mad07

Senior Member
Sep 30, 2009
287
28
Nope, your changes will only be available locally. In fact, if your local copy is different than an updated file on the server, you'll actually get a sync error because the checksums on the files won't match what is in the git repo. You'll need to move your local files out to successfully sync, then compare the differences with the new file.

I recommend looking into how to use git. That's how you can learn to submit patches and changes of your own, once you feel comfortable with the code and compile process.

Good luck!

THX, I'll search something to read about this one to understood this issue better.
 

Timoxy

Member
Jul 4, 2014
23
4
Hi all, i'll like to port cyanogenmod 11 on my wiko getaway. I'm on Ubuntu but when i try to lunch aosp_arm-eng, I have this message :
Which would you like? [aosp_arm-eng]
Traceback (most recent call last):
File "build/tools/roomservice.py", line 84, in <module>
if not os.path.exists(local_manifests): os.makedirs(local_manifests)
File "/usr/lib/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 13] Permission denied: '.repo/local_manifests'

** Don't have a product spec for: 'aosp_arm'
** Do you have the right repo manifest?

I'm very lost on my operation. So i'll like to need help ^^.
 

manask002

Senior Member
May 28, 2014
184
17
mumbai
I also get this error.... How to fix this...if you find how to fix it plz tell me

Sent from my D2302 using XDA Free mobile app
 

Riku Azhurlar

Senior Member
Jan 16, 2014
653
515
Toledo
The command for fetching repo from googleapi's was incorrect. Had an elipsis in the link instead of the proper url. Here's the fixed version:

Code:
sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\* && sudo add-apt-repository ppa:webupd8team/java && sudo apt-get update && sudo apt-get install oracle-java6-installer && sudo apt-get install git gnupg ccache lzop flex bison gperf build-essential zip curl zlib1g-dev zlib1g-dev:i386 libc6-dev lib32bz2-1.0 lib32ncurses5-dev x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 lib32z1-dev libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc libreadline6-dev lib32readline-gplv2-dev libncurses5-dev bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev squashfs-tools pngcrush schedtool dpkg-dev && sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so && mkdir ~/bin && curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo && chmod a+x ~/bin/repo && sudo nano ~/.bashrc

At the bottom of bashrc paste the following line:

Code:
export PATH=~/bin:$PATH

Ctrl-O to save and Ctrl-X to exit. Then run:

Code:
source ~/.bashrc && mkdir ~/android && cd ~/android

Thanks Aaahh!

so personally so i can run this and leave id make each apt-get apt-get -y so it automatically assumes yes

---------- Post added at 07:31 PM ---------- Previous post was at 07:30 PM ----------

Hi all, i'll like to port cyanogenmod 11 on my wiko getaway. I'm on Ubuntu but when i try to lunch aosp_arm-eng, I have this message :


I'm very lost on my operation. So i'll like to need help ^^.

in either you manifest.xml or your roomservice.xml for the path the repo should download to instead of device/blah/blah its /device/blah/blah which is giving it a system path instead of atrhe right obne
 

TehTempstack

Member
Apr 5, 2012
6
0
system.img corrupted!?

Hi everyone,

I had a running build machine with Ubuntu 12.04 and recently moved to a new one to test the process on Ubuntu 14.04.
First I followed the guide provided by Google directly but I ended up in having problems with the produces image files - I could flash them to a Nexus 5 but the boot process will stop while showing the Google logo.
Now I came across this guide here, followed it but in the end the result was the same.

I wasn't able to see any build errors - the only difference I was able to recognize is that now the system.img file was about 35MB smaller than before on the Ubuntu 12.04 machine - the four other image files have the very same size.

Does anyone have a clue what can be causing this issue?
 

CheesyNutz

Senior Member
Oct 26, 2010
12,181
3,339
Springfield
i used this and it set up perfectly i can now build CM very easy and quick how would i go about adding another repo say liquidsmooth or any other please
 

ShinySide

Inactive Recognized Developer
Nov 30, 2013
3,951
4,780
IHB
i used this and it set up perfectly i can now build CM very easy and quick how would i go about adding another repo say liquidsmooth or any other please

By looking on their github for their manifest

https://github.com/LiquidSmooth/android

I usually find it easier to just Google "liquid smooth manifest" "carbon rom manifest" etc to find it then sifting thru device trees, packages, etc etc to find it on their github.
 
  • Like
Reactions: tire_007

sylentprofet

Senior Member
Jun 10, 2010
283
1,857
Sacramento
thanks for this,, but im building cm9 AND cm12 how would i go about that, is there a way to change the running javajdk so i can compile ics with 16 and when i want to change it to 7 to do lp builds

Code:
sudo update-alternatives --config java

AND

Code:
sudo update-alternatives --config javac

Make the appropriate selections for choosing between JDK6 and 7. They can both be installed side by side, you just have to tell the system which one to use when. Make sure to do both.
 
Nov 14, 2012
49
7
At step 5 I get this…
E: Unable to locate package lib32

And I don't yet have the /mesa/ directory for step 6...
Any ideas?
 

JJsevol

Senior Member
Jan 8, 2012
417
168
big city
At step 5 I get this…
E: Unable to locate package lib32

And I don't yet have the /mesa/ directory for step 6...
Any ideas?
Try this
sudo apt-get install libgl1-mesa-dri:i386 sudo apt-get install ia32-libs-multiarch:i386 sudo apt-get install ia32-libs-multiarch sudo apt-get install ia32-libs

Had this a while ago and saw this online
 
Nov 14, 2012
49
7
Try this
sudo apt-get install libgl1-mesa-dri:i386 sudo apt-get install ia32-libs-multiarch:i386 sudo apt-get install ia32-libs-multiarch sudo apt-get install ia32-libs

Had this a while ago and saw this online

Ok tried that and here's what I get from the first command...

ryan@ubuntu:~$ sudo apt-get install libgl1-mesa-dri:i386
[sudo] password for ryan:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
unity-control-center : Depends: libcheese-gtk23 (>= 3.4.0) but it is not going to be installed
Depends: libcheese7 (>= 3.0.1) but it is not going to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
 

JJsevol

Senior Member
Jan 8, 2012
417
168
big city
Ok tried that and here's what I get from the first command...

ryan@ubuntu:~$ sudo apt-get install libgl1-mesa-dri:i386
[sudo] password for ryan:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
unity-control-center : Depends: libcheese-gtk23 (>= 3.4.0) but it is not going to be installed
Depends: libcheese7 (>= 3.0.1) but it is not going to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

I haven't encountered that error before and usually you would try to meet those dependencies. Looking around online led me to these: https://github.com/ValveSoftware/steam-for-linux/issues/3728 and http://packages.ubuntu.com/trusty/libs/libcheese-gtk23. If you find a solution let us know.
 
Nov 14, 2012
49
7
I haven't encountered that error before and usually you would try to meet those dependencies. Looking around online led me to these: https://github.com/ValveSoftware/steam-for-linux/issues/3728 and http://packages.ubuntu.com/trusty/libs/libcheese-gtk23. If you find a solution let us know.

OK thanks. I'll check those links out later when I get home. When running some of the other commands you listed, it looked like the dependancies required were for older versions than what I have installed.
 

MarckozZ

Senior Member
Jan 4, 2013
834
567
Argentina
I haven't encountered that error before and usually you would try to meet those dependencies. Looking around online led me to these: https://github.com/ValveSoftware/steam-for-linux/issues/3728 and http://packages.ubuntu.com/trusty/libs/libcheese-gtk23. If you find a solution let us know.

OK thanks. I'll check those links out later when I get home. When running some of the other commands you listed, it looked like the dependancies required were for older versions than what I have installed.

Guys, I followed this guide in Ubuntu 14.04 and this error didn't came up.. But now I have Ubuntu 14.04.2 and... this same thing came up just now.. Maybe some packages are not compatible with this version of Ubuntu... Hope to see a solution for this... Need to build a KK ROM but don't want to format and go back to 14.04 all over again! :confused:
 

Top Liked Posts

  • There are no posts matching your filters.
  • 218
    --- If you would rather use a ready-to-go Virtual Machine, check out my post here. ---
    --- Copied with permission from http://nathanpfry.com ---

    TLDR; if you don't care about an explanation of what your system is doing,
    click here to check out XDA Senior Member Aaahh's sweet two-step method based on my guide below.
    Otherwise, keep reading!​

    With a new version of Ubuntu comes an update to my world-famous guide for setting up a build environment to compile Android ROMs. 14.04 Trusty Tahr is the next Long Term Support edition of the popular Linux distro. The aim of this guide is to simplify the configuration process for you.

    Follow the directions step-by-step. All you have to do is copy and paste the code sections in order and you will be up and running in no time!

    This guide applies to all variations of Ubuntu 14.04 LTS Trusty Tahr 64 bit. Do not use the 32 Bit version.

    Also, PAY CLOSE ATTENTION when to use "sudo" and when to not. It can make things funky if you do something as root that you shouldn't.

    Much thanks goes out to Google, ProTekk, Canonical, and everyone else that I read a random paragraph here and snippet there.

    Ready to begin? Ok.

    1) Unless it's a completely fresh Ubuntu installation, many of you may have the wrong version of Java installed. Let's fix that first.

    The command below makes sure you're starting with a clean slate. Copy and paste it into a terminal (command prompt) window:

    Code:
    sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*

    If necessary, follow the on-screen instructions to remove any previous versions. Otherwise, move on to the next step.

    It's time to install Java, one of the core pieces for compiling Android ROMs. Depending on which version of Android you are building, you will need the corresponding version of the Java Development Kit.

    *** IF YOU ARE BUILDING ANDROID GINGERBREAD THRU KITKAT (2.3 - 4.4.x) USE THESE INSTRUCTIONS FOR JDK 6***
    2) Copy and paste the following into the terminal:

    Code:
    sudo add-apt-repository ppa:webupd8team/java

    This will add the correct PPA to your system for updated builds of Java 6 JDK that are compatible with 14.04.

    3) Now you need to install the package. More copy-paste:

    Code:
    sudo apt-get update && sudo apt-get install oracle-java6-installer

    Follow the on-screen instructions. You must accept the Licensing Agreement to complete the install.

    Press Enter to acknowledge the "OK", then tab over to "Yes" and press Enter again to accept the license. The installation will continue automatically.

    4) Let's make sure the correct version of Java is activated. Run the terminal command:

    Code:
    java -version

    You should see something like:

    java version "1.6.0_45"
    Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
    Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)

    Continue to Step 5.


    *** IF YOU ARE BUILDING ANDROID L AND ABOVE (CURRENT AOSP MASTER BRANCH) USE THESE INSTRUCTIONS FOR JDK 7***
    2) Install Open-JDK 7 for the necessary Java development tools.

    Code:
    sudo apt-get update && sudo apt-get install openjdk-7-jdk

    Follow the on-screen instructions.

    3) Let's make sure the correct version of Java is activated. Run the terminal command:

    Code:
    java -version

    You should see something like OpenJDK 1.7

    Continue on to Step 5.


    5) Back to a fresh terminal prompt. Install the main build tools with this command:

    Code:
    sudo apt-get install git ccache automake lzop bison gperf build-essential zip curl zlib1g-dev zlib1g-dev:i386 g++-multilib python-networkx libxml2-utils bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev squashfs-tools pngcrush schedtool dpkg-dev liblz4-tool make optipng

    That's it on the package side of things. You guessed it, time for more Terminal. This really is the easiest way, I promise.

    6) A program called "repo" lets you communicate with git servers and download all that precious source code. The next command will install it:

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

    7) Use your favorite text editor to open ~/.bashrc - I like nano:

    Code:
    sudo nano ~/.bashrc

    8) At the very bottom (use the Page Down key) paste this code to a new (empty) line:

    Code:
    export PATH=~/bin:$PATH

    9) Save it. In nano that would be Ctrl-O and then Enter. Then Ctrl-X to exit back to a prompt. Restart bash:

    Code:
    source ~/.bashrc

    10) In the terminal, navigate to where you would like to download the Android source code. The commands below will make it in your home folder, but if you have limited space you may want to create it somewhere else. Faster is better, i.e. SSD would be best, USB external is basically unusable. Here we go:

    Code:
    mkdir ~/android
    cd ~/android

    11) Now you're going to initialize the repo. This is where you decide the flavor of Android you want to build, i.e. AOKP, CyanogenMod, AOSP etc.

    For the purposes of the tutorial, here's the command for AOKP KitKat:

    Code:
    repo init -u git://github.com/AOKP/platform_manifest.git -b kitkat

    12) Almost there. Last step, it's a doozy. Time to get the source. Prepare yourself, 10+ GB of downloading await.

    Don't worry, it's automated. Go to sleep. Eat something. Perhaps you have heard of this new thing the kids are doing called "going outside"? Yeah, I didn't think so. Me neither.

    Hey everyone, it's the final terminal command:

    Code:
    repo sync

    Check back periodically every hour or so. It all depends on how fast your connection is.

    That should be everything. Now you're ready to build Android the right way. Good luck!

    For those of you that want to build Lollipop (which requires JDK 1.7) but already have your system configured for GB-KK (JDK 1.6), here's the easiest way to update your system:

    First, install OpenJDK7. At a terminal:

    Code:
    sudo apt-get install openjdk-7-jdk

    Once that completes, you simply need to tell Linux to use the newer version of Java and Java Compiler to render content. Run the following two commands separately, making the correct selection for OpenJDK 1.7 both times when prompted. Again in the terminal:

    Code:
    sudo update-alternatives --config java
    sudo update-alternatives --config javac

    That should do the trick! Have fun everyone..

    Feel free to buy me a coconut water (donate) if you like my work. It would be greatly appreciated!

    Please hit the "Thanks" button if this post helped you out!
    26
    fixed two-liner

    Here is a two liner, :p

    The command for fetching repo from googleapi's was incorrect. Had an elipsis in the link instead of the proper url. Here's the fixed version:

    Code:
    sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\* && sudo add-apt-repository ppa:webupd8team/java && sudo apt-get update && sudo apt-get install oracle-java6-installer && sudo apt-get install git gnupg ccache lzop libglapi-mesa-lts-utopic:i386 libgl1-mesa-dri-lts-utopic:i386 flex bison gperf build-essential zip curl zlib1g-dev zlib1g-dev:i386 libc6-dev lib32bz2-1.0 lib32ncurses5-dev x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 lib32z1-dev libgl1-mesa-glx-lts-utopic:i386 libgl1-mesa-dev-lts-utopic g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc libreadline6-dev lib32readline-gplv2-dev libncurses5-dev bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev squashfs-tools pngcrush schedtool dpkg-dev && sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so && mkdir ~/bin && curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo && chmod a+x ~/bin/repo && sudo nano ~/.bashrc

    At the bottom of bashrc paste the following line:

    Code:
    export PATH=~/bin:$PATH

    Ctrl-O to save and Ctrl-X to exit. Then run:

    Code:
    source ~/.bashrc && mkdir ~/android && cd ~/android

    Thanks Aaahh!
    9
    I appreciate a detailed, step-by-step guide like this. In my experience here, I've found that far too many arrogant developers hold the opinion that since they had to find things out the hard way, everyone else should have to as well. Finding developers that actually want to help people out, rather than snub them with snot-nosed attitudes, is always refreshing, so thanks to the OP for the guide!
    4
    had to resort to the old fashion way of installing jdk from older oracle instructions...!!!

    Respectfully, you're wrong.

    Yesterday I tried the instructions (as I was writing the guide) with the latest Alpha of Xubuntu 14.04 and it works fine.

    It appears they've updated the PPA within the last few days to support Trusty Tahr.

    I wouldn't publish a guide that I hadn't verified myself as working, unlike some people.
    4
    This guide really complicates things. Most of this could be put into a single one-liner.

    Here is a two liner, :p
    Code:
    sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\* && sudo add-apt-repository ppa:webupd8team/java && sudo apt-get update && sudo apt-get install oracle-java6-installer && sudo apt-get install git-core gnupg ccache lzop flex bison gperf build-essential zip curl zlib1g-dev zlib1g-dev:i386 libc6-dev lib32ncurses5 lib32z1 lib32bz2-1.0 lib32ncurses5-dev x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 lib32z-dev libgl1-mesa-glx:i386 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 python && sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so && mkdir ~/bin && curl http://commondatastorage.googleapis....downloads/repo > ~/bin/repo && chmod a+x ~/bin/repo && sudo nano ~/.bashrc
    Copy and paste
    export PATH=~/bin:$PATH
    Code:
    source ~/.bashrc && mkdir ~/android && cd ~/android
    I purposly left out the repo init and sync, that way you can pick what source to init.