Related
Hi all
This is a TUT for building badadroid CM 10 kernel from source code
Step 1 : Setup your build environment
1.Setup Ubuntu 64-bit (I am using 12.04 but i recommend using 11.10)
-http://releases.ubuntu.com/
-It is recommended to install Ubuntu on a 40GB ext4 partition to have enough space for your source code
Step 2 : Install required packages to build a ROM (we are compiling kernel but you can build the ROM too)
-first Run this command to update your package lists
Code:
sudo apt-get update
-Run this command in terminal to download packages (Just copy-paste)(press y and enter when promoted)
Code:
sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
-Run this command to fix an incorrect library with Ubuntu 11.10 and above
Code:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Step 3 : Preparing Repo
-Run these commands (each line is a command)
Code:
mkdir ~/bin
export PATH=~/bin:$PATH
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > repo
chmod a+x ~/bin/repo
if any error happen with these commands don't ever re-run it with sudo(I did that mistake before )....post your error
Step 4 : Downloading Repo sources(maybe later we can separate kernel source from ROM)
-Run these commads
Code:
cd ~
mkdir wave
cd wave
repo init -u git://github.com/CyanogenMod/android.git -b jellybean
cd .repo
wget https://raw.github.com/Badadroid/android_wave_local_manifest/jellybean/local_manifest.xml
cd ..
repo sync -j8
Notes
-repo sync command will take really a lot of time to finish depending on your Internet connection speed (about 10 GBs of download)
-If you just want to pause this download and continue later just close terminal then when you want to continue run these commands
Code:
cd ~
cd wave
repo sync -j8
Step 5 : Including tools for the build
-Run these commands just one time
Code:
cd vendor/cm/
./get-prebuilts
cd ../../
-Then run this command before each build
Code:
. build/envsetup.sh
Step 6 : Building
-To build kernel run these commands
Code:
lunch cm_wave-userdebug
make bootimage
-To build ROM run this command
Code:
brunch wave
Big Thanks to:
-Linux developers
-badadroid team
-CM 10 developers
-xda-university
-anyone i forgot to mention
Got any Questions just ask
Best Regards
For repo sync a "-j8" mean make 8 downloading pattern at same time, better if you use more like 32 for more fast downloading
For brunch wave -j2 mean use double core if you got 4 core then -j4
You can install :
sudo apt-get install ccache
add "export USE_CCACHE=1" without quote on your /home/USER/.bashrc
Then command like this :
ccache -M 6 (mean 6giga cache)
ccache -C clear all cache
ccache -c clean old cache
I felt free to translate this tutorial into German...
You can red German version here...
Good. Just btw - it ain't no CM10.1 but 10.0. ;]
Thank u so much for the guide. (mylove90 and Tigrouzen)
What exactly does this badadroid look like and does it mean the samsung bada os + the android os merged together. And How does it work?
Sent from my GT-I9300 using xda premium
Building on Ubuntu 12.04 is currently only experimentally supported and is not guaranteed to work on branches other than master.
Installing required packages (Ubuntu 12.04)
Code:
$ sudo apt-get install git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Installing Repo
Code:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
Code:
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
Now 80% of your work is done.. Now its time for actual cm10.2 development
Code:
mkdir -p cm10.2
Code:
$ PATH=~/bin:$PATH
Code:
cd cm10.2
Code:
repo init -u git://github.com/androidarmv6/android.git -b cm-10.2
Code:
repo sync -jX
where X is any integer. If you have high speed connection then try something like -j16 or -j32
This will take long time because you are trying to download around 15gb
Once this is done go in your cm10.2 directory and do this
Code:
sh vendor/cm/get-prebuilts
Congrats your build machine is now ready.
Create a script named " compile.sh " inside cm10.2 folder and paste these contents inside it.
Code:
#!/system/bin/sh
PATH=~/bin:$PATH
repo sync -j32
.build/envsetup.sh
export USE_CCACHE=1
make clean
brunch protou
So to start compiling you have to do this command inside your cm10.2 folder
Code:
sh compile.sh
This will give you a basic build machine. I haven't added the device specific stuff yet. To do that:
Assuming you are in cm10.2 folder before each step.
1.Create device tree
Code:
mkdir -p /device/htc
Go in /device/htc
Code:
git clone https://github.com/prototype-U/android_device_htc_protou.git
Rename this folder to protou
Code:
git clone https://github.com/ProtouProject/android_device_htc_common.git
Rename this folder to common
2.Add vendors WIP
Code:
mkdir -p /vendor/htc/
Go in /vendor/htc/
Code:
git clone https://github.com/prototype-U/android_vendor_htc_protou.git
Rename this folder to protou
3.Add kernel sources
Code:
mkdir -p kernel/htc/
Go in /kernel/htc/protou
Code:
git clone -b cm10.2 https://github.com/prototype-U/android_kernel_htc_protou.git
Rename this folder to protou
And you are done! You can try compiling now..
I'll try this on Arch Linux in the evening and report back if it worked. Hopefully I'll find the right dependencies for the build as Arch Linux is a bit special with this. Anyway thanks for the guide!
Sent from my HTC Desire X using XDA Premium 4 mobile app
Why?
repo init -u git://github.com/androidarmv6/android.git -b cm-10.2
we got ARMv7
Klapo said:
Why?
repo init -u git://github.com/androidarmv6/android.git -b cm-10.2
we got ARMv7
Click to expand...
Click to collapse
Source, Its on androidarmv6 git its a group or something...not related to this.
Sent from my HTC Desire X using xda premium
Found a typo. It has to be "-b cm-10.2" in last clone command, then it works.
prototype-U said:
Create a script named " compile.sh " inside cm10.2 folder and paste these contents inside it.
Code:
#!/system/bin/sh
PATH=~/bin:$PATH
repo sync -j32
.build/envsetup.sh
export USE_CCACHE=1
make clean
brunch protou
So to start compiling you have to do this command inside your cm10.2 folder
Code:
sh compile.sh
Click to expand...
Click to collapse
A guy from #cyanogenmod-dev told me that is much better to use terminal to start compiling then this script,he told me to do this :
cd cm10.2
export USE_CCACHE=1
source build/envsetup.sh
brunch protou
These are just recommendations.
prototype-U said:
Code:
mkdir -p /device/htc
Go in /device/htc
Click to expand...
Click to collapse
It's actually mkdir -p device/htc. You made a typo,it will create a folder inside the system partition.
Then go into device/htc.
prototype-U said:
Code:
mkdir -p /vendor/htc/
Go in /vendor/htc/
Click to expand...
Click to collapse
Same here,it's mkdir -p vendor/htc .
Then go in vendor/htc.
prototype-U said:
Code:
mkdir -p kernel/htc/
Go in /kernel/htc/protou
Click to expand...
Click to collapse
The folder location is good here but you go :
cd kernel/htc instead of /kernel/htc/protou.
Also i had to install these to make it work. We need java,etc.
Code:
git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.8-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev openjdk-6-jre openjdk-6-jdk pngcrush schedtool libxml2 libxml2-utils xsltproc
Code:
g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline-gplv2-dev gcc-multilib
Don't take this offensively,i am just trying to help.
nightwalkerkg said:
A guy from #cyanogenmod-dev told me that is much better to use terminal to start compiling then this script,he told me to do this :
cd cm10.2
export USE_CCACHE=1
source build/envsetup.sh
brunch protou
These are just recommendations.
It's actually mkdir -p device/htc. You made a typo,it will create a folder inside the system partition.
Then go into device/htc.
Same here,it's mkdir -p vendor/htc .
Then go in vendor/htc.
The folder location is good here but you go :
cd kernel/htc instead of /kernel/htc/protou.
Also i had to install these to make it work. We need java,etc.
Code:
git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.8-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev openjdk-6-jre openjdk-6-jdk pngcrush schedtool libxml2 libxml2-utils xsltproc
Code:
g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline-gplv2-dev gcc-multilib
Don't take this offensively,i am just trying to help.
Click to expand...
Click to collapse
None taken. To be honest I have never tried setting up a build machine because my build server already had everything installed. And the steps I have mentioned above are not tested by me. I modify the core manifest to sync everything rather than doing it manually. Btw there is nothing wrong with the script, I made it just to reduce my manual work.
Sent from my HTC Desire X using xda app-developers app
I ran into problems using the script, because I use zsh as my favorite shell. When the shell interpreter used in the script and the shell used for building is not the same, the sourcing won't work and it will give you an error like "brunch: command not found".
dansou901 said:
I ran into problems using the script, because I use zsh as my favorite shell. When the shell interpreter used in the script and the shell used for building is not the same, the sourcing won't work and it will give you an error like "brunch: command not found".
Click to expand...
Click to collapse
You have to make sure that you have synced all device related repos correctly. To make sure; goto the folder where you synced; goto device/htc and you should see protou and common folders.
dansou901 said:
I ran into problems using the script, because I use zsh as my favorite shell. When the shell interpreter used in the script and the shell used for building is not the same, the sourcing won't work and it will give you an error like "brunch: command not found".
Click to expand...
Click to collapse
Do it each time in a new shell. . /build/envsetup.sh
Sent from my HTC Desire X using xda app-developers app
Instead of renaming we could do
git clone git://github.com/<user>/android_device_htc_protou.git protou
do the same for common
Just a suggestion (sames lot of time :silly: )
--- copied with permission from nathanpfry.com ---
--- If you would like a ready-to-go Virtual Machine, check out my post here! ---
Initializing a fresh Android Build Environment in Ubuntu 13.10 sucks, right? The instructions at the AOSP page are outdated and inaccurate. Near as I can tell, they try to have you install 2 JDKs, the first one not even being the correct link for Saucy Salamander, and the second being OpenJDK. Which might work. But I dunno about all that, I'd rather have Oracle's official stamp when it comes to building for Android.
Currently most of the guides are up to 12.04 LTS, which is fine and dandy, but being on the cutting edge is nice too.
This guide applies to all variations of Ubuntu 13.10 Saucy Salamander 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.
First, let's set up the correct JDK.
Many of you probably have some kind of wrong Java installed unless you're starting with a fresh Ubuntu base, and even then maybe.
Let's get rid of that. Copy and paste this into a Terminal window:
Code:
sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*
Follow the instructions to remove OpenJDK. If you must keep it, it's possible. But I'm not going to tell you how to do it here. I don't want any chance of confusion or mistake.
Now 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 13.10. No more unrecognized Java version errors! And it will update automatically with the rest of your system.
Next, we actually 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 have to Accept the Licensing Agreement to complete the install. Hopefully no human centipede clauses.
Let's make sure the correct version of Java is activated, run the following Terminal command:
Code:
java -version
You should see something like the following:
Code:
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.12-b01, mixed mode)
Ok, back to a fresh Terminal prompt. Time for installing the guts to build stuff in Ubuntu:
Code:
sudo apt-get install git-core lzop ccache gnupg 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 gcc g++ cpp gcc-4.8 g++-4.8
When that is done installing, run the following command in your Terminal window:
Code:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
That's it on the package side of things.
You guessed it, time for more Terminal. This really is the easiest way, seriously. And it's totally worth it when you're basking in the glory of a bunch of people on XDA.
The binary for a program called "repo" will let you talk to git servers and download all that precious source code. That second part after the && allows it to be executable:
Code:
mkdir ~/bin && curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo && chmod a+x ~/bin/repo
Use your favorite text editor to open ~/.bashrc
I like nano:
Code:
sudo nano ~/.bashrc
At the very bottom, add the following line:
Code:
export PATH=~/bin:$PATH
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
In the terminal, navigate to where you would like to store the Android source code. The directions 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
Now you're going to initialize the repo. Here's where you decide the flavor of Android you want to build for, ie AOKP, CyanogenMod, AOSP etc. The following, for the purposes of this tutorial, will initialize for AOKP Jellybean MR-2:
Code:
repo init -u git://github.com/AOKP/platform_manifest.git -b jb-mr2
Almost there. Last step, but it's a doozy. You're going to get the source. Prepare yourself, mere mortal. 10+ GB of downloading await you. 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. The final terminal command, to be run from your android directory:
Code:
repo sync
Check back periodically every hour or so. It really all depends on how fast your internet connection is.
That should be everything. Now you're ready to build Android the right way. Luck!
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!
Thanks for this... It should work on the official final release right?
I tried using a guide for Ubuntu 13.04 and it can't install one of the packages listed and repo init fails...hopefully this will work
Also, anyone know what the repo init command to build PAC rom is?
Sent from my Galaxy Nexus using Tapatalk
hmm...all good except repo doesnt seem to work with
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
but it does with
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
from http://source.android.com/source/downloading.html
I am getting this error:
[email protected]:~/cm10.1$ repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
/home/kevin/bin/repo: Zeile 1: Syntaxfehler beim unerwarteten Wort »newline«
/home/kevin/bin/repo: Zeile 1: `<!DOCTYPE html>'
---------- Post added at 05:21 PM ---------- Previous post was at 05:14 PM ----------
Edit: Fixed it myself.
Kevinjoa said:
I am getting this error:
[email protected]:~/cm10.1$ repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
/home/kevin/bin/repo: Zeile 1: Syntaxfehler beim unerwarteten Wort »newline«
/home/kevin/bin/repo: Zeile 1: `<!DOCTYPE html>'
---------- Post added at 05:21 PM ---------- Previous post was at 05:14 PM ----------
Edit: Fixed it myself.
Click to expand...
Click to collapse
How do you fixed it? I am getting the same Error here.
chrisi92 said:
How do you fixed it? I am getting the same Error here.
Click to expand...
Click to collapse
metalspring posted the fix above (as did I in another thread yesterday):
Code:
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
Oh sry, i didnt saw it. But thx for the solution
Gesendet von meinem SM-N9005 mit Tapatalk
chrisi92 said:
Oh sry, i didnt saw it. But thx for the solution
Click to expand...
Click to collapse
No problems - good luck with the build.
This is awesome. I was having this same problem and now I will have it fixed. Thanks so much.
Sent from my SPH-D710 using Xparent Skyblue Tapatalk 2
Excellent guide...
Read several guides and got stuck in every guide..
Thank you for this great guide...!!!!
if i wanted to build specific for e4gt(d710) i would replace mr2 with d710?
(repo init -u git://github.com/AOKP/platform_manifest.git -b jb-d710)
twrex82 said:
if i wanted to build specific for e4gt(d710) i would replace mr2 with d710?
(repo init -u git://github.com/AOKP/platform_manifest.git -b jb-d710)
Click to expand...
Click to collapse
instructions are right on the aokp platform manifest page-
Init repo only for a particular device :
$ repo init -u https://github.com/AOKP/platform_manifest.git -b jb-mr2 -g all,-notdefault,<devicename>,<vendorname>
for example, to init only trees needed to build mako :
$ repo init -u https://github.com/AOKP/platform_manifest.git -b jb-mr2 -g all,-notdefault,mako,lge
out of curiousity, is there a reason why we need to use java 6? instead of 7 or even 8 now?
psycopanther said:
out of curiousity, is there a reason why we need to use java 6? instead of 7 or even 8 now?
Click to expand...
Click to collapse
As far as I know android will only build properly with the java 6 the op says to use... I've never tried anything else but I've heard there are issues for trying to build using anything else
(Feel free to try though, it's easy enough to remove other java versions and go back to java 6)
Edit: it is possible to build with java 7 but you have to use workarounds to fix different issues
http://www.informit.com/articles/article.aspx?p=1966023
I'm looking forward to reading through this once I get my environment set-up again. My previous attempts to build android have all failed
Ok I have problems with this step:
Code:
sudo apt-get install git-core gnupg 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
I get those errors:
Code:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package lib32ncurses5
E: Unable to locate package lib32z1
E: Unable to locate package lib32bz2-1.0
E: Couldn't find any package by regex 'lib32bz2-1.0'
E: Unable to locate package lib32ncurses5-dev
E: Unable to locate package lib32z-dev
E: Unable to locate package lib32readline-gplv2-dev
E: Unable to locate package lib32readline5
E: Unable to locate package lib32readline6
E: Unable to locate package lib32bz2-dev
Please advise me how to reslove this.
You are using Ubuntu 13.10, right? Different versions of Ubuntu have slightly different packages they need
Sent from my Galaxy Nexus using Tapatalk
metalspring said:
You are using Ubuntu 13.10, right? Different versions of Ubuntu have slightly different packages they need
Sent from my Galaxy Nexus using Tapatalk
Click to expand...
Click to collapse
Yes I do.
I'm trying to install the 64 bit version 13.10 onto my laptop via Virtualbox. I keep getting the following error message when trying to boot up the iso so that I can install it. As far as I know, I the core i5 processor (3210m) is able to support 64bit software. If I am wrong, or there is something that I am possibly doing wrong, please let me know. Thanks in advance.
edit: of course, I find this after posting my issue (hopefully, it helps anyone else who is having the problem, as well):
http://askubuntu.com/questions/3089...ntu-12-04-on-my-virtualbox-4-2-not-successful
..
--- 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!
not for me...
ppa:webupd8team/java no longer supports oracle-java6-installer.....
at least when I tried it on ubuntu 14.04 a week ago......
had to resort to the old fashion way of installing jdk from older oracle instructions...!!!
UPDATED:
----------------
seems at the time we tested(feb.4) it did not work but since then has been fixed...
at the time the OP posted it had been corrected, feb.7
fgdn17 said:
had to resort to the old fashion way of installing jdk from older oracle instructions...!!!
Click to expand...
Click to collapse
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.
well that implies they have fixed it...because on feb 4 we setup Ubuntu 14.04 and had to work around the issue
because it did not work.....
so did it work well for you a week ago???
maybe because of the different systems???
will give it a try again in the next couple of weeks if we get time...either way it's good to know
it has been corrected....
and BTW we also installed openjava 7, switched between the two and
build our source without issues.....
source was android-x86 kitkat
got a chance to check this am and it was FIXED YESTERDAY it appears.....
https://launchpad.net/~webupd8team/+archive/java
https://launchpad.net/~nilarimogard/+related-packages
and as stated did not work a week ago....feb.-1 thru feb 4
thanks for the updates...
fgdn17 said:
got a chance to check this am and it was FIXED YESTERDAY it appears.....
Click to expand...
Click to collapse
That's great, but your first post is still wrong. You should edit it so other users aren't confused.
oracle-java6-installer works perfectly fine in Ubuntu 14.04 at the time of the original posting.
I used 14.04 early and i had to install some extra packages because things wouldn't work properly, just a heads up incase anyone is having problems...
I've build android 4.2 and 4.4 using openjdk 1.7, without any changes, using ubuntu 13.10 (some time ago in aosp there has been added patches which fixes build under java 7, of course it's not for all android versions).
This guide really complicates things. Most of this could be put into a single one-liner.
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!
AdamOutler said:
This guide really complicates things. Most of this could be put into a single one-liner.
Click to expand...
Click to collapse
Then why haven't you done it already, instead of raining on my parade?
sylentprofet said:
Then why haven't you done it already, instead of raining on my parade?
Click to expand...
Click to collapse
Do you want me to post a second guide mid-thread? I'm just suggesting combining steps. Its a lengthy read and it could be much shorter.
AdamOutler said:
Do you want me to post a second guide mid-thread? I'm just suggesting combining steps. Its a lengthy read and it could be much shorter.
Click to expand...
Click to collapse
Or start your own thread?
If you wanna post it in here as a reply, go ahead. When I can verify that it works I'd be happy to update the OP and credit you.
Also I've released Builduntu, a ready-to-go virtual machine. The link is at the top of the OP. No matter what system you've got (OSX, Win, other linux) you can import the machine into VirtualBox or VMWare and have a working development environment in minutes.
Now that I've built a completely new, modern machine, I'm going to repurpose my old system (which is still perfectly usable, with 8GB of RAM and an Intel Core2 Quad) as an Android development platform. I plan to install Linux Mint 14 on it, as I despise Unity with the blazing white heat of a million suns. I'll give your steps a try on it and post here how successful they were; if anything needs tweaking for Mint, you can add them to your instructions (it shouldn't, as Mint is based on Ubuntu).
AdamOutler said:
This guide really complicates things. Most of this could be put into a single one-liner.
Click to expand...
Click to collapse
Here is a two liner,
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.
Aaahh said:
Here is a two liner,
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.
Click to expand...
Click to collapse
Yep. you beat me to it.. I was mobile earlier so I couldn't really copy-pasta all of it into a post.
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:
build-essential : Depends: gcc (>= 4:4.4.3) but it is not going to be installed
Depends: g++ (>= 4:4.4.3) but it is not going to be installed
g++-multilib : Depends: cpp (>= 4:4.8.2-1ubuntu4) but it is not going to be installed
Depends: gcc-multilib (>= 4:4.8.2-1ubuntu4) but it is not going to be installed
Depends: g++ (>= 4:4.8.2-1ubuntu4) but it is not going to be installed
Depends: g++-4.8-multilib (>= 4.8.2-5~) but it is not going to be installed
libghc-bzlib-dev : Depends: libghc-base-dev-4.6.0.1-8aa5d
Depends: libghc-bytestring-dev-0.10.0.2-4f932
E: Unable to correct problems, you have held broken packages.
may i request some suggestion? thanks
desalesouche said:
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:
build-essential : Depends: gcc (>= 4:4.4.3) but it is not going to be installed
Depends: g++ (>= 4:4.4.3) but it is not going to be installed
g++-multilib : Depends: cpp (>= 4:4.8.2-1ubuntu4) but it is not going to be installed
Depends: gcc-multilib (>= 4:4.8.2-1ubuntu4) but it is not going to be installed
Depends: g++ (>= 4:4.8.2-1ubuntu4) but it is not going to be installed
Depends: g++-4.8-multilib (>= 4.8.2-5~) but it is not going to be installed
libghc-bzlib-dev : Depends: libghc-base-dev-4.6.0.1-8aa5d
Depends: libghc-bytestring-dev-0.10.0.2-4f932
E: Unable to correct problems, you have held broken packages.
may i request some suggestion? thanks
Click to expand...
Click to collapse
try sudo apt-get autoremove then sudo apt-get update then sudo apt-get dist-upgrade then sudo dpkg --configure -a then if it still perist try to enable muitverse, if it still doesn't work then try trusty proposed or compiling by hand...
Aaahh said:
try sudo apt-get autoremove then sudo apt-get update then sudo apt-get dist-upgrade then sudo dpkg --configure -a then if it still perist try to enable muitverse, if it still doesn't work then try trusty proposed or compiling by hand...
Click to expand...
Click to collapse
all is fine now... thanks to these commands i could run point 5 and 6 from op
hi <while compiling cm11 on that fresh install of unbutu 14.04 i have that weird error? any idea? thank you.
Can't locate Switch.pm in @Inc (you may need to install the Switch module
@Inc contains: /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) at external/webkit/Source/WebCore/make-hash-tools.pl line 23.
BEGIN failed--compilation aborted at external/webkit/Source/WebCore/make-hash-tools.pl line 23.
Import includes file: /home/desalesouche/cm11m3/out/target/product/u8860/obj/STATIC_LIBRARIES/libwebcore_intermediates/import_includes
make: *** [/home/desalesouche/cm11m3/out/target/product/u8860/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/html/DocTypeStrings.cpp] Error 2
edit: i think i foound the solution here
http://answers.yahoo.com/question/index?qid=20130510115737AAfIgU5
hi did in terminal :
cpan App::cpanminus
then i choosed solution with sudo.
then i did in new terminal:
cpanm Switch
i restarted cm build and error seem to be gone... will confirm that.
I would like to have more roms for this device and guide how to make rom based on my source/work
Note: There is no need to credit me , but yeah i will admire if you mention me for this
SO before we start lets get some things cleared
You have quad core CPU
You have atleast 4GB ram
Stable Internet
Linux Installed ( I am using ubuntu 14.04 LTS)
Brain.apk
Getting started
Installing the required packages
Easy just open a terminal.
Code:
sudo 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
Installing JAVA
Code:
sudo apt-get update
sudo apt-get install openjdk-7-jdk
Getting ready with repo
Code:
mkdir ~/bin && PATH=~/bin:$PATH && echo 'PATH=~/bin:$PATH' >> ~/.bashrc && curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo && chmod a+x ~/bin/repo
Settings up the GIT
Before doing the below step head over to github.com and make a git account
Code:
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
Making CyanogeMod 12.1
First we will make a folder where we can hold our repos and source codes
Code:
mkdir ~/cm-12.1/
Now we will sync the cm sources.. depending on your internet speed it may take mins , hours and days. (for me 30 to 60 mins)
Code:
cd ~/cm-12.1/ && repo init -u https://github.com/CyanogenMod/android.git -b cm-12.1
repo sync -j4
Getting note 3 neo codes, vendor and etc
Code:
cd ~/cm-12.1/ && git clone https://github.com/FireLord1/android_.repo_local_manifests_n3n.git -b cm-12.1 .repo/local_manifests
repo sync -j4 --force-sync
Building the ROM
Code:
cd ~/cm-12.1
source build/envsetup.sh
lunch (now select your device 3g is hl3g and 4g is hllte and select userdebug)
brunch (your device codename like cm_hl3g-userdebug)
Thats all for now if you face any error try googling the dev is not free man!
Thank U fire lord U can do anything thanks For showing interest on our device
nice thank you very much for this
but i hate ubuntu's terminal , no ctrl+c, ctrl+v -.-
EDit
bash: /home/berk/bin/repo: Permission denied
i get this error when i setup the repo before downloading
Any help? @FireLord
TimurAlaskara_TR said:
nice thank you very much for this
but i hate ubuntu's terminal , no ctrl+c, ctrl+v -.-
EDit
bash: /home/berk/bin/repo: Permission denied
i get this error when i setup the repo before downloading
Any help? @FireLord
Click to expand...
Click to collapse
Try doing in superuser mode
Code:
sudo su
Sent from FireLord's device