Since I’ve seen many questions on how to build cyanogenmod 9 (CM9) from source for the Galaxy Nexus, but there isn’t a proper guide, I will attempt to write a small how-to. There already is a very good guide how to build ICS from source, but there are a few extra things you’ll have to do for CM9. I hope it will be useful, and if not, well, at least I’ve tried
LATEST UPDATE: August 20th - also added CM10
SETTING UP THE BUILD ENVIRONMENT
I highly recommend Ubuntu 12.04 64 bit for development or Linux Mint 13. It is possible to build on different linux distro’s, but I cannot cover all exceptions. (If you don’t have linux installed or are afraid to set up a dual boot, it is possible to build in a virtual environment –e.g. virtualbox-. Building in a virtual environment however, can be very slow. Also, 64 bit is recommended.)
Make sure java is installed! At the end of this post, I have written a small guide how to install java.
Set up adb and create proper udev rules
I will not write these steps down, but rather point you to some very nice and easy guides. It would be best to do this first, however, it is not completely necessary if you just want to build a fully functioning rom.
1) set up adb (follow this excellent guide)
2) set up udev rules which allow you to start adb without having to use sudo (follow this terrific tutorial)
Installing all necessary packages and set up repo (source)
Open a terminal and copy the following code:
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-dev:i386 \
g++-multilib mingw32 openjdk-6-jdk tofrodos python-markdown \
libxml2-utils xsltproc zlib1g-dev:i386
WARNING: run the following commands as user (NOT as root) unless stated otherwise (e.g., when it explicitly shows ‘sudo’ before a command)!!!
Next, you’ll have to install repo to download the source. First we’re going to create a bin folder (1) in our home directory and include it in our path (2). Also, download the repo script (3) and make it executable (4). All from the command line:
Code:
mkdir ~/bin
PATH=~/bin:$PATH
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo
Okay, we’re done with the first part. So far it’s been similar to building pure AOSP.For CM, there will be some additional things you’ll have to do.
DOWNLOADING THE CM SOURCE
Create a directory (CM9 -or CM10-) for your working files:
Code:
mkdir CM9
cd CM9
and then initialize the main CM repo (For CM10, just replace ics with jellybean):
Code:
repo init -u git://github.com/CyanogenMod/android.git -b ics
Good, now you’re ready to download the source. This can take a couple of hours!! Run the following command from the terminal (Run the following commands in the terminal from the root of the directory that contains the source, e.g., ~/CM9/):
Code:
repo sync
Okay, the majority of the files needed to build CM are now on your computer. However, device specific files are needed. To get them, issue the following command in your terminal:
Code:
source build/envsetup.sh
lunch
After the lunch command, choose your device. If you have a GSM version, choose cm_maguro, if you have the CDMA version, choose cm_toro. Additional files needed for your device are being downloaded right now.
Before you can actually build the rom, you’ll need to run two more commands to get some proprietary files.
1) Open a terminal and go to CM9/vendor/cm/. Run the following command:
Code:
./get-prebuilts
This will download term.apk and rommanager.apk. You will need these files otherwise you’ll get an error while building.
2) Now we need to grab some files from your phone. Make sure you have a working build cyanogenmod version (just install a nightly) on your phone. Make sure adb is setup properly (see beginning of this post)!
Connect your phone to the pc. Open a terminal and go to CM9/device/samsung/(Maguro OR Toro)/. Run the following command:
Code:
sh extract-files.sh
BUILDING CM9/CM10
The building part is very easy. It just requires two simple commands:
Code:
source build/envsetup.sh
brunch
After the brunch command, choose your device. Again, if you have a GSM version, choose cm_maguro, if you have the CDMA version, choose cm_toro. Depending on your computer, hopefully you’ll have a fully functioning CM9 or CM10 in 30minutes-2hours (or even longer) . You can find the rom in: /out/target/product/(Maguro OR Toro)/
Next time you build, first clean your working directory. Enter the following command in the terminal:
Code:
make clobber
This will completely remove your output directory!
To update the source, before each build just run:
Code:
repo sync
ADDITIONAL INFO
Install Java
Installing java is very easy in Ubuntu 12.04. Java 6 is recommended. To install it in Ubuntu 12.04 or Linux Mint 13, download the most recent Java 6 SDK from HERE. To install, open a terminal and run the following commands:
Code:
$ chmod +x jdk-6u34-linux-x64.bin
$ sudo ./jdk-6u34-linux-x64.bin
$ sudo mv jdk1.6.0_34 /usr/lib/jvm/
$sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_34/bin/java 1
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_34/bin/javac 1
$ sudo update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/jdk1.6.0_34/bin/javaws 1
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac
$ sudo update-alternatives --config javaws
NOTE: after each 'update-alternative'-command, choose the correct (new) java version!
To check if you have the correct java version, type in a terminal:
Code:
java –version
I also added JAVA_HOME to my path; I don’t know if it is still necessary, but it doesn’t hurt either. First, check where java is located. In a terminal type:
Code:
which java
In my case the output shows /usr/bin/java, but it could be located somewhere else. Write down the path minus '/java'. Then open /home/USERNAME/.bashrc and add the following line to the bottom of the file:
Code:
export JAVA_HOME=/usr/bin
Of course replace /usr/bin with your path. Then save and close, and in a terminal run:
Code:
source ~/.bashrc
Odexed version
Some people like their rom to be odexed. There are multiple ways to achieve this (special thanks to Planet X for helping me with this):
1)Instead of ‘brunch’ do the following (if you are building for toro, replace maguro with toro):
Code:
source /build/envsetup.sh
lunch cm_maguro-user
make –j4
(Note:
taken from source.android.com: GNU make can handle parallel tasks with a -jN argument, and it's common to use a number of tasks N that's between 1 and 2 times the number of hardware threads on the computer being used for the build. E.g. on a dual-E5520 machine (2 CPUs, 4 cores per CPU, 2 threads per core), the fastest builds are made with commands between make -j16 and make -j32.)
2)If you want to build an odexed version every time and just want to use the brunch command, do the following:
-Open build/core/main.mk
-Comment out (place a # at the beginning of the line) lines 240, 241, 245, and 246. Thus, replace:
ifneq (true,$(DISABLE_DEXPREOPT))
ifeq ($(user_variant),user)
Ifeq ($(HOST_OS),linux)
WITH_DEXPREOPT := true
Endif
endif
endif
Click to expand...
Click to collapse
# ifneq (true,$(DISABLE_DEXPREOPT))
# ifeq ($(user_variant),user)
Ifeq ($(HOST_OS),linux)
WITH_DEXPREOPT := true
Endif
# endif
# endif
Click to expand...
Click to collapse
Now you can use the brunch command to build an odexed version with insecure boot image.
Hopefully this guide will benefit some people, if not, it kept me busy for a while. Enjoy building!!
(btw, I'm not a native english speaker, so excuse me if I made errors in grammar )
Wow great work. These tutorials keep getting better making it so easy to compile your own rom!
So what does that "brunch" command actually do?
Is it just a script that does the make otapackage commands and stuff?
Infra said:
So what does that "brunch" command actually do?
Is it just a script that does the make otapackage commands and stuff?
Click to expand...
Click to collapse
Indeed! Brunch is actually a combination of 'lunch' and 'make'. Using the 'lunch-part' you choose your build (in our case the maguro or toro). Next, the 'make-part' actually gets things going. The nice thing using brunch is that it automatically detects the maximum number of threads it can use so that it will run at maximum speed.
Finally set my computer up to compile CM9 last night for the first time and after a few tries I finally got it going. The only problem is that I am now getting an error very close to this one.
http://forum.xda-developers.com/showpost.php?p=25452343&postcount=3093
That poster says that it has been happening for a few days now. Is this a known issue with compiling CM9 or is this just user error? I have tried twice compiling now and have had no luck. Is it working for anyone else?
---------- Post added at 02:05 PM ---------- Previous post was at 01:19 PM ----------
Here is the exact error that Im getting. I tried it again today just to see if it anything had changed.
make[1]: *** [sub-make] Error 2
make[1]: Leaving directory `/home/mark/CM9/kernel/samsung/tuna'
make: *** [TARGET_KERNEL_BINARIES] Error 2
make: *** Waiting for unfinished jobs....
Thanks for this guide. I just built my first CM9 kang. Getting ready to flash it. Now to find a guide on what I can and can't change and recompile or do I just remove stuff and use 7-zip to zip it back up?
housry23 said:
Thanks for this guide. I just built my first CM9 kang. Getting ready to flash it. Now to find a guide on what I can and can't change and recompile or do I just remove stuff and use 7-zip to zip it back up?
Click to expand...
Click to collapse
Glad to hear you succeeded building your first kang. I don't really understand what you want to do next? If you want to remove stuff from the zip, you can. I for instance always remove stk.apk. But you can also modify the build files so that only things you want will be built. You can play around with the source code and things like that. Anyway, most of the answers you will find using google. I also very much like the development board on Rootzwiki; people are really helpful and friendly there. So if you have any specific questions, i recommend that forum as well!
mbroeders said:
Glad to hear you succeeded building your first kang. I don't really understand what you want to do next? If you want to remove stuff from the zip, you can. I for instance always remove stk.apk. But you can also modify the build files so that only things you want will be built. You can play around with the source code and things like that. Anyway, most of the answers you will find using google. I also very much like the development board on Rootzwiki; people are really helpful and friendly there. So if you have any specific questions, i recommend that forum as well!
Click to expand...
Click to collapse
Okay thanks. I was asking just what you answered. I want to be able to remove and/or add stuff to the zip for starters. I found the answer through Google, but I do appreciate you taking the time to answer. I'll definitely be visiting the Rootzwiki dev board. Thanks for the suggestion.
I have successfully compiled cm9 from source but have never tried to cherry pick or Kang anything yet. Could you quickly explain how you cherry pick with cm9?
Sent from my Galaxy Nexus using Tapatalk 2
SupWiz17 said:
I have successfully compiled cm9 from source but have never tried to cherry pick or Kang anything yet. Could you quickly explain how you cherry pick with cm9?
Sent from my Galaxy Nexus using Tapatalk 2
Click to expand...
Click to collapse
Check out this link it may be helpful
http://rootzwiki.com/index.php?/topic/13189-[TUTORIAL]-Everything-you-ever-wanted-to-know-about-GIT#entry322735
Sent from my GT-S5360 using Tapatalk 2
That's a very useful link, thanks! In addition, if you want to cherry pick commits that haven't been merged yet -specific CM commits, such as navbar customization-, have a look here: http://review.cyanogenmod.com/#/q/branch:ics,n,z
Now let's say you see something interesting that you want to add. Then look at that commit and you'll see a 'download' command, such as "git fetch http://review.cyanogenmod.com/CyanogenMod/android_frameworks_base refs/changes/06/13306/15 && git checkout FETCH_HEAD". Just run that command and if everything works, you have succesfully cherry picked a commit. -of course, because these are not yet merged, there is the chance that no everything will work as it should-
There are also some GUI programs to manage git. I'm just about to try gitgui by all accounts it is very good.
Sent from my GT-S5360 using Tapatalk 2
Maybe it is a noobish question, but does this line:
Code:
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > /bin/repo
miss a ~?
Code:
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
UncleDan said:
Maybe it is a noobish question, but does this line:
Code:
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > /bin/repo
miss a ~?
Code:
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
Click to expand...
Click to collapse
Not noobish at all! You're absolutely right. It's not necessary when you're already in your home folder, but to be sure I've changed it in the guide. Thanks for letting me know!
Sticky!!!!!
Thanks dude
Sent from my Galaxy Nexus using Tapatalk 2
im sorry for noobish...at this step
1) Create an empty file in ~/CM9/.repo
in home i have dir CM9 but its empty...i havent a folder call .repo
java its installed and adb work perfectly
this is my terminal output:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 20774 100 20774 0 0 35679 0 --:--:-- --:--:-- --:--:-- 56604
[email protected]:~$ chmod a+x ~/bin/repo
[email protected]:~$ cd CM9
[email protected]:~/CM9$ repo init -u git://github.com/CyanogenMod/android.git -b ics
Your Name [loris]: loris
Your Email : my email
Your identity is: loris
is this correct [y/N]? y
repo initialized in /home/llo/CM9
[email protected]:~/CM9$
and nothing...
SOLVED
Hey mate any idea why my camera never works after a build... I know I'm missing something but I'm not sure what. I have all the proprietary files for my maguro etc but I just can't get camera to work... everytime
Sent from my Galaxy Nexus using Tapatalk 2
CdTDroiD said:
Hey mate any idea why my camera never works after a build... I know I'm missing something but I'm not sure what. I have all the proprietary files for my maguro etc but I just can't get camera to work... everytime
Sent from my Galaxy Nexus using Tapatalk 2
Click to expand...
Click to collapse
And you flash gapps everytime?
Sent from my GT-I9300 using Tapatalk 2
Infra said:
And you flash gapps everytime?
Sent from my GT-I9300 using Tapatalk 2
Click to expand...
Click to collapse
Sorted it out was just missing a few important files under /system/vendor thanks
Sent from my Galaxy Nexus using Tapatalk 2
CdTDroiD said:
Sorted it out was just missing a few important files under /system/vendor thanks
Sent from my Galaxy Nexus using Tapatalk 2
Click to expand...
Click to collapse
Glad it worked out! Seems there have been a few changes lately, so I will add some more info soon.
Sent from my SGS3
I decided to give building CM a try again recently and set up a new Ubuntu VM for the task. I'm encountering some problems however. I setup my repo with the new 10.1 branch which I believe is now pulling down 4.2.2. At the end of repo sync, I receive:
Code:
info: A new version of repo is available
object 91f011ab0df9e1aa215e39b424c9ce2614bae50e
type commit
tag v1.12.1
tagger Conley Owens <[email protected]> 1360088708 -0800
repo 1.12.1
gpg: Signature made Tue 05 Feb 2013 01:25:08 PM EST using RSA key ID 338871A4
gpg: Can't check signature: public key not found
error: could not verify the tag 'v1.12.1'
I wasn't sure if this was actually a problem so I proceeded to get-prebuilts and the envsetup script. After that I run "breakfast maguro" but that's where I hit a wall:
Code:
including vendor/cm/vendorsetup.sh
ls: cannot access device/*/maguro/cm.mk: No such file or directory
build/core/product_config.mk:234: *** Cannot locate config makefile for product "cm_maguro". Stop.
Device maguro not found. Attempting to retrieve device repository from CyanogenMod Github (http://github.com/CyanogenMod).
Found repository: android_device_samsung_maguro
Default revision: cm-10.1
Checking branch info
CyanogenMod/android_device_samsung_maguro already exists
Syncing repository to retrieve project.
error: project device/samsung/maguro not found
Repository synced!
Looking for dependencies
Dependencies file not found, bailing out.
Done
ls: cannot access device/*/maguro/cm.mk: No such file or directory
build/core/product_config.mk:234: *** Cannot locate config makefile for product "cm_maguro". Stop.
** Don't have a product spec for: 'cm_maguro'
** Do you have the right repo manifest?
At this point I don't have a maguro device folder so I can't proceed to the extract-files script. I don't know if my setup is wrong or if these are temporary problems since the 4.2.2 merge. Is anyone able to build right now, and if so do you know what might be wrong?
Thanks!
I'm having the very same problem. I'm thinking there's just some problems with the 4.2.2 merger.
same problem here
Okay, good to know it's not just me. Any place it should be reported or something? There are 4.2.2 nightlies for our phone so building must be possible, just not downloaded fresh, maybe it's an issue with the Github project.
Please read forum rules before posting
Questions and help issues go in Q&A
Thread moved
Thank you for your cooperation
Friendly Neighborhood Moderator
Ok found it.
cd ~/android/system
cd .repo/repo
git pull -s resolve
cd ~/android/system
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
repo sync
. build/envsetup.sh
breakfast maguro
zorxd said:
Ok found it.
cd ~/android/system
cd .repo/repo
git pull -s resolve
cd ~/android/system
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
repo sync
. build/envsetup.sh
breakfast maguro
Click to expand...
Click to collapse
You rock! Worked great. Can I ask how you figured that out, just for future reference?
Thanks for the help!
found it on a german web site
this issue came down from AOSP.
I'm trying to build android from source for the htc ace (desire hd) and I don't know how to use lunch. I'm looking for a config file for this device but I can't find anything. I don't know if I have to use a generic config or adapt one from other similar device. Anyone who compiled for this device could help me?
atimus said:
I'm trying to build android from source for the htc ace (desire hd) and I don't know how to use lunch. I'm looking for a config file for this device but I can't find anything. I don't know if I have to use a generic config or adapt one from other similar device. Anyone who compiled for this device could help me?
Click to expand...
Click to collapse
Try: http://forum.xda-developers.com/showthread.php?t=2533007
Q: How I can build CM11.0 myself?
A: Setup a basic Android build environment
Code:
Code:
mkdir cm11
cd cm11/
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
mkdir -p .repo/local_manifests
wget https://github.com/Mustaavalkosta/android/raw/cm-11.0/local_manifest.xml -O .repo/local_manifests/cm_ace.xml
repo sync
cd vendor/cm/
./get-prebuilts
cd ../../
. build/envsetup.sh
lunch cm_ace-userdebug
mka bacon
Once the build finishes you'll find your goods from out/target/product/ace/ directory.
Click to expand...
Click to collapse
nikt11 said:
Try: http://forum.xda-developers.com/showthread.php?t=2533007
Click to expand...
Click to collapse
Thank you!!
This may be a stupid post. I have tried to search the forum. However, I don't find any solution.
I am new to Andriod, Cm11, and git. I have background on Gcc etc.
I have installed the CM11 rom to my DHD, it works very well. So I am curious on how to build a rom from source by myself.
the ennvironment is set up. I can build the latest Andriod code without problem. BTW, the image seems quite big.
I follow the first post of this thread.
However, i encounted error with "lunch cm_ace-userdebug".
I try several different methods to retrieve DHD relevant files. but no help.
the errors are as following:
lunch cm_ace-userdebug
build/core/product_config.mk:238: *** _nic.PRODUCTS.[[device/htc/ace/cm.mk]]: "device/htc/common/common.mk" does not exist。 停止。
Device ace not found. Attempting to retrieve device repository from CyanogenMod Github .
Found repository: android_device_htc_ace
Default revision: cm-11.0
Checking branch info
Default revision cm-11.0 not found in android_device_htc_ace. Bailing.
Branches found:
froyo
froyo-stable
gb-release-7.2
gingerbread
gingerbread-release
ics
cm-7.1.0
cm-7.0.3
cm-7.0.2.1
cm-7.0.1
cm-7.0.0
Use the ROOMSERVICE_BRANCHES environment variable to specify a list of fallback branches.
build/core/product_config.mk:238: *** _nic.PRODUCTS.[[device/htc/ace/cm.mk]]: "device/htc/common/common.mk" does not exist。 停止。
** Don't have a product spec for: 'cm_ace'
** Do you have the right repo manifest?
How can I solve it?
thanks,
fenildf
You may want to post this in a more general development forum. You don't need to be restricted to DHDs; it'll be the same with other phones too.
Hi,
I'm just as new to building android images as you are, but, surprisingly, it worked for me just yesterday. So maybe I can help.
In the messages you posted I see only the officially supported dhd android versions. So, I guess you need to somehow enable the unofficial cm11 first. My guess is, this will do just that, but I'm not sure:
Go to the directory where your hiddden .repo directory is in (where you issued repo init), then issue this commands
Code:
mkdir .repo/local_manifests
wget https://github.com/AceEnablementProject/android/raw/cm-11.0/local_manifest.xml -O .repo/local_manifests/cm_ace.xml
The commands I did are as follows (I had some problems and actually did much more, but I think this is all that's really needed):
Code:
mkdir cm11
cd cm11
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
mkdir .repo/local_manifests
wget https://github.com/AceEnablementProject/android/raw/cm-11.0/local_manifest.xml -O .repo/local_manifests/cm_ace.xml
repo sync
cd vendor/cm/
./get-prebuilts
cd ../../
. build/envsetup.sh
lunch cm_ace-userdebug
make bacon
After that (and a loooong wait) I found this in the out directory:
Code:
out/cyanogenmod/target/product/ace/cm-11-20140505-UNOFFICIAL-ace.zip
Firstly I wholeheartdly thank @darshan1205 and @hriday sharma for teaching me everything i know and it is because of them that this guide is able to come into existence.. lets get moving
Before We start anything First look at the Pre-requisites carefully. Dont blame me for any errors caused due to insufficient configuration:
1) a google cloud server
(or)
1) A pc/laptop with at least a quad core processor and minimum 4gb ram(8 gb highly recommended as 4gb might give you trouble)
3) minimum 200gb storage (recommended)
2)either ubuntu 14.04 or ubuntu 16.04
[other operating systems based on linux can also be used but the commands might be different]
3) Ifs on laptop a good internet as you'd have to download around 30gb for each Rom
If above conditions are met you're good to go.
Just follow the guide step by step and You'll be having a rom of yours soon
We'll be starting of by learning to build a simple Lineage os-Nougat All the steps Given below will be explained in 2nd or 3rd post
1) Setting up the build environment (Same for both server or pc)
i) Open a terminal
ii) enter the following codes
Code:
sudo apt-get install git-core
git clone git://github.com/akhilnarang/scripts
cd scripts
iii) For ubuntu 14.04 use the following
Code:
bash ubuntu1404.sh
iii) For ubuntu 16.04 use the following
Code:
bash ubuntu1604linuxmint18.sh
And wait for all the files to install
iv) finally install imagewick by using following command
Code:
sudo apt-get install imagewick
You're done setting up your build environment and ready to make a ROM.
2) Syncing ROM sources
As i already told we'll be Building Lineage OS
Again as before use the commands as given and in the order they have been given
i) We have to setup our git acc use the following commands for that
Code:
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
For Ex: this is how it should looks
Code:
git config --global user.email [email protected]
git config --global user.name vjspranav
ii) make a directory and cd into it
Code:
mkdir rom
cd rom
iii) Initializing repo (rom source)
Code:
repo init -u git://github.com/LineageOS/android.git -b cm-14.1
iv) now downloading the ROM source
Code:
repo sync -c -f --force-sync --no-clone-bundle --no-tags
and now the waiting part. You'd have to wait sometime as this downloads 15-30 gb of rom source..
once its done we're good to go to the final part
3) Cloning device sources
do this first
Code:
rm -rf device/qcom/common
i) Device Tree
For Yureka:
Code:
git clone https://github.com/LineageOS/android_device_yu_tomato.git -b cm-14.1 device/yu/tomato
For Yuphoria
Code:
git clone https://github.com/LineageOS/android_device_yu_lettuce.git -b cm-14.1 device/yu/lettuce
ii) common device tree (Same for yureka and yuphoria)[We're using karthick's tree as it has data toggle fix]
Code:
git clone https://github.com/LineageOS/android_device_cyanogen_msm8916-common.git -b cm-14.1 device/cyanogen/msm8916-common
iii) vendor(same for both)
Code:
git clone https://github.com/TheMuppets/proprietary_vendor_yu.git -b cm-14.1 vendor/yu
iv) Kernel(same for both)
Code:
git clone https://github.com/LineageOS/android_kernel_cyanogen_msm8916.git -b cm-14.1 kernel/cyanogen/msm8916
v) qcom/common(same)
Code:
git clone https://github.com/LineageOS/android_device_qcom_common.git -b cm-14.1 device/qcom/common
and all the sources are ready
3) Finally the Part Compiling the ROM
Use the given three commands in order
Code:
. build/envsetup.sh
breakfast tomato
brunch tomato
and if you followed all the steps given above you're ROM compiling should go smoothly and the zip file will be available in the path: out/target/product/tomato
I'll be adding more info soon please hit the like button if this helped
ill add the explanation soon
reserve
reser
reerved
Very First want to thanks for this tutorial for compiling rom on linage based source
1) a google cloud server
(or)
1) A pc/laptop with at least a quad core processor and minimum 4gb ram(8 gb highly recommended as 4gb might give you trouble)
Click to expand...
Click to collapse
understood that i need a pc or server
3) minimum 200gb storage (recommended)
2)either ubuntu 14.04 or ubuntu 16.04
[other operating systems based on linux can also be used but the commands might be different]
Click to expand...
Click to collapse
if i need another pc or partition running on ubantu??
3) Ifs on laptop a good internet as you'd have to download around 30gb for each Rom
Click to expand...
Click to collapse
if i am on desktop is that means i dont have to download 30gb for each rom, dint understoon why u said "ifs on laptop"
Costly thanks for the guide i tried steps and got error can anyone help me with this...
I've tried searching on Google but unable to solve this...
[ 34% 17261/49907] Building with Jack: /home/abhilash/cm14/out/target/...ommon/obj/JAVA_LIBRARIES/core-all_intermediates/with-local/classes.dex
FAILED: /home/abhilash/cm14/out/target/common/obj/JAVA_LIBRARIES/core-all_intermediates/with-local/classes.dex
/bin/bash /home/abhilash/cm14/out/target/common/obj/JAVA_LIBRARIES/core-all_intermediates/with-local/classes.dex.rsp
java.lang.AssertionError: java.util.zip.ZipException: duplicate entry: jayce/java/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator.jayce
at com.android.sched.vfs.WriteZipFS$ZipEntryOutputStream.writeEntryIfNeeded(WriteZipFS.java:350)
at com.android.sched.vfs.WriteZipFS$ZipEntryOutputStream.close(WriteZipFS.java:320)
at com.android.sched.vfs.VFSToVFSWrapper.dumpToDir(VFSToVFSWrapper.java:127)
at com.android.sched.vfs.VFSToVFSWrapper.dumpToDir(VFSToVFSWrapper.java:112)
at com.android.sched.vfs.VFSToVFSWrapper.dumpToDir(VFSToVFSWrapper.java:112)
at com.android.sched.vfs.VFSToVFSWrapper.dumpToDir(VFSToVFSWrapper.java:112)
at com.android.sched.vfs.VFSToVFSWrapper.dumpToDir(VFSToVFSWrapper.java:112)
at com.android.sched.vfs.VFSToVFSWrapper.close(VFSToVFSWrapper.java:99)
at com.android.sched.vfs.ReadWriteZipFS.close(ReadWriteZipFS.java:87)
at com.android.sched.vfs.GenericOutputVFS.close(GenericOutputVFS.java:56)
at com.android.jack.library.v0002.OutputJackLibraryImpl.close(OutputJackLibraryImpl.java:218)
at com.android.jack.Jack.run(Jack.java:742)
at com.android.jack.Jack.checkAndRun(Jack.java:412)
at com.android.jack.CommandLine.runJack(CommandLine.java:79)
at com.android.jack.api.v01.impl.Cli01CompilationTaskImpl.run(Cli01CompilationTaskImpl.java:85)
at com.android.jack.server.tasks.JackTask.handle(JackTask.java:168)
at com.android.jack.server.tasks.SynchronousServiceTask.handle(SynchronousServiceTask.java:49)
at com.android.jack.server.tasks.JackTask.handle(JackTask.java:55)
at com.android.jack.server.router.PathRouter.handle(PathRouter.java:65)
at com.android.jack.server.router.ContentTypeParameterRouter.handle(ContentTypeParameterRouter.java:84)
at com.android.jack.server.router.ContentTypeRouter.handle(ContentTypeRouter.java:82)
at com.android.jack.server.router.ContentTypeRouter.handle(ContentTypeRouter.java:82)
at com.android.jack.server.router.ContentTypeRouter.handle(ContentTypeRouter.java:82)
at com.android.jack.server.router.ContentTypeParameterRouter.handle(ContentTypeParameterRouter.java:84)
at com.android.jack.server.router.ContentTypeRouter.handle(ContentTypeRouter.java:82)
at com.android.jack.server.router.ContentTypeRouter.handle(ContentTypeRouter.java:82)
at com.android.jack.server.router.MethodRouter.handle(MethodRouter.java:67)
at com.android.jack.server.router.RootContainer.handle(RootContainer.java:49)
at org.simpleframework.http.core.RequestDispatcher.dispatch(RequestDispatcher.java:121)
at org.simpleframework.http.core.RequestDispatcher.run(RequestDispatcher.java:103)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.util.zip.ZipException: duplicate entry: jayce/java/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator.jayce
at java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:232)
at com.android.sched.util.file.OutputZipFile$CustomZipOutputStream.putNextEntry(OutputZipFile.java:150)
at com.android.sched.vfs.WriteZipFS$ZipEntryOutputStream.writeEntryIfNeeded(WriteZipFS.java:346)
... 32 more
Internal compiler error (version 1.2-rc4 'Carnac' (298900 f95d7bdecfceb327f9d201a1348397ed8a843843 by [email protected])).
java.util.zip.ZipException: duplicate entry: jayce/java/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator.jayce.
Warning: This may have produced partial or corrupted output.
[ 34% 17261/49907] Building with Jack: /home/abhilash/cm14/out/target/...n/obj/JAVA_LIBRARIES/libprotobuf-java-micro_inter
awesome guide bro
---------- Post added at 09:00 PM ---------- Previous post was at 08:36 PM ----------
Its a great start for beginners:silly:
WishSA said:
Costly thanks for the guide i tried steps and got error can anyone help me with this...
I've tried searching on Google but unable to solve this...
[ 34% 17261/49907] Building with Jack: /home/abhilash/cm14/out/target/...ommon/obj/JAVA_LIBRARIES/core-all_intermediates/with-local/classes.dex
FAILED: /home/abhilash/cm14/out/target/common/obj/JAVA_LIBRARIES/core-all_intermediates/with-local/classes.dex
/bin/bash /home/abhilash/cm14/out/target/common/obj/JAVA_LIBRARIES/core-all_intermediates/with-local/classes.dex.rsp
java.lang.AssertionError: java.util.zip.ZipException: duplicate entry: jayce/java/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator.jayce
at com.android.sched.vfs.WriteZipFS$ZipEntryOutputStream.writeEntryIfNeeded(WriteZipFS.java:350)
at com.android.sched.vfs.WriteZipFS$ZipEntryOutputStream.close(WriteZipFS.java:320)
at com.android.sched.vfs.VFSToVFSWrapper.dumpToDir(VFSToVFSWrapper.java:127)
at com.android.sched.vfs.VFSToVFSWrapper.dumpToDir(VFSToVFSWrapper.java:112)
at com.android.sched.vfs.VFSToVFSWrapper.dumpToDir(VFSToVFSWrapper.java:112)
at com.android.sched.vfs.VFSToVFSWrapper.dumpToDir(VFSToVFSWrapper.java:112)
at com.android.sched.vfs.VFSToVFSWrapper.dumpToDir(VFSToVFSWrapper.java:112)
at com.android.sched.vfs.VFSToVFSWrapper.close(VFSToVFSWrapper.java:99)
at com.android.sched.vfs.ReadWriteZipFS.close(ReadWriteZipFS.java:87)
at com.android.sched.vfs.GenericOutputVFS.close(GenericOutputVFS.java:56)
at com.android.jack.library.v0002.OutputJackLibraryImpl.close(OutputJackLibraryImpl.java:218)
at com.android.jack.Jack.run(Jack.java:742)
at com.android.jack.Jack.checkAndRun(Jack.java:412)
at com.android.jack.CommandLine.runJack(CommandLine.java:79)
at com.android.jack.api.v01.impl.Cli01CompilationTaskImpl.run(Cli01CompilationTaskImpl.java:85)
at com.android.jack.server.tasks.JackTask.handle(JackTask.java:168)
at com.android.jack.server.tasks.SynchronousServiceTask.handle(SynchronousServiceTask.java:49)
at com.android.jack.server.tasks.JackTask.handle(JackTask.java:55)
at com.android.jack.server.router.PathRouter.handle(PathRouter.java:65)
at com.android.jack.server.router.ContentTypeParameterRouter.handle(ContentTypeParameterRouter.java:84)
at com.android.jack.server.router.ContentTypeRouter.handle(ContentTypeRouter.java:82)
at com.android.jack.server.router.ContentTypeRouter.handle(ContentTypeRouter.java:82)
at com.android.jack.server.router.ContentTypeRouter.handle(ContentTypeRouter.java:82)
at com.android.jack.server.router.ContentTypeParameterRouter.handle(ContentTypeParameterRouter.java:84)
at com.android.jack.server.router.ContentTypeRouter.handle(ContentTypeRouter.java:82)
at com.android.jack.server.router.ContentTypeRouter.handle(ContentTypeRouter.java:82)
at com.android.jack.server.router.MethodRouter.handle(MethodRouter.java:67)
at com.android.jack.server.router.RootContainer.handle(RootContainer.java:49)
at org.simpleframework.http.core.RequestDispatcher.dispatch(RequestDispatcher.java:121)
at org.simpleframework.http.core.RequestDispatcher.run(RequestDispatcher.java:103)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.util.zip.ZipException: duplicate entry: jayce/java/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator.jayce
at java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:232)
at com.android.sched.util.file.OutputZipFile$CustomZipOutputStream.putNextEntry(OutputZipFile.java:150)
at com.android.sched.vfs.WriteZipFS$ZipEntryOutputStream.writeEntryIfNeeded(WriteZipFS.java:346)
... 32 more
Internal compiler error (version 1.2-rc4 'Carnac' (298900 f95d7bdecfceb327f9d201a1348397ed8a843843 by [email protected])).
java.util.zip.ZipException: duplicate entry: jayce/java/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator.jayce.
Warning: This may have produced partial or corrupted output.
[ 34% 17261/49907] Building with Jack: /home/abhilash/cm14/out/target/...n/obj/JAVA_LIBRARIES/libprotobuf-java-micro_inter
Click to expand...
Click to collapse
Please paste your error in hastebin and put here
WishSA said:
Costly thanks for the guide i tried steps and got error can anyone help me with this...
I've tried searching on Google but unable to solve this...
[ 34% 17261/49907] Building with Jack: /home/abhilash/cm14/out/target/...ommon/obj/JAVA_LIBRARIES/core-all_intermediates/with-local/classes.dex
FAILED: /home/abhilash/cm14/out/target/common/obj/JAVA_LIBRARIES/core-all_intermediates/with-local/classes.dex
/bin/bash /home/abhilash/cm14/out/target/common/obj/JAVA_LIBRARIES/core-all_intermediates/with-local/classes.dex.rsp
java.lang.AssertionError: java.util.zip.ZipException: duplicate entry: jayce/java/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator.jayce
at com.android.sched.vfs.WriteZipFS$ZipEntryOutputStream.writeEntryIfNeeded(WriteZipFS.java:350)
at com.android.sched.vfs.WriteZipFS$ZipEntryOutputStream.close(WriteZipFS.java:320)
at com.android.sched.vfs.VFSToVFSWrapper.dumpToDir(VFSToVFSWrapper.java:127)
at com.android.sched.vfs.VFSToVFSWrapper.dumpToDir(VFSToVFSWrapper.java:112)
at com.android.sched.vfs.VFSToVFSWrapper.dumpToDir(VFSToVFSWrapper.java:112)
at com.android.sched.vfs.VFSToVFSWrapper.dumpToDir(VFSToVFSWrapper.java:112)
at com.android.sched.vfs.VFSToVFSWrapper.dumpToDir(VFSToVFSWrapper.java:112)
at com.android.sched.vfs.VFSToVFSWrapper.close(VFSToVFSWrapper.java:99)
at com.android.sched.vfs.ReadWriteZipFS.close(ReadWriteZipFS.java:87)
at com.android.sched.vfs.GenericOutputVFS.close(GenericOutputVFS.java:56)
at com.android.jack.library.v0002.OutputJackLibraryImpl.close(OutputJackLibraryImpl.java:218)
at com.android.jack.Jack.run(Jack.java:742)
at com.android.jack.Jack.checkAndRun(Jack.java:412)
at com.android.jack.CommandLine.runJack(CommandLine.java:79)
at com.android.jack.api.v01.impl.Cli01CompilationTaskImpl.run(Cli01CompilationTaskImpl.java:85)
at com.android.jack.server.tasks.JackTask.handle(JackTask.java:168)
at com.android.jack.server.tasks.SynchronousServiceTask.handle(SynchronousServiceTask.java:49)
at com.android.jack.server.tasks.JackTask.handle(JackTask.java:55)
at com.android.jack.server.router.PathRouter.handle(PathRouter.java:65)
at com.android.jack.server.router.ContentTypeParameterRouter.handle(ContentTypeParameterRouter.java:84)
at com.android.jack.server.router.ContentTypeRouter.handle(ContentTypeRouter.java:82)
at com.android.jack.server.router.ContentTypeRouter.handle(ContentTypeRouter.java:82)
at com.android.jack.server.router.ContentTypeRouter.handle(ContentTypeRouter.java:82)
at com.android.jack.server.router.ContentTypeParameterRouter.handle(ContentTypeParameterRouter.java:84)
at com.android.jack.server.router.ContentTypeRouter.handle(ContentTypeRouter.java:82)
at com.android.jack.server.router.ContentTypeRouter.handle(ContentTypeRouter.java:82)
at com.android.jack.server.router.MethodRouter.handle(MethodRouter.java:67)
at com.android.jack.server.router.RootContainer.handle(RootContainer.java:49)
at org.simpleframework.http.core.RequestDispatcher.dispatch(RequestDispatcher.java:121)
at org.simpleframework.http.core.RequestDispatcher.run(RequestDispatcher.java:103)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.util.zip.ZipException: duplicate entry: jayce/java/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator.jayce
at java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:232)
at com.android.sched.util.file.OutputZipFile$CustomZipOutputStream.putNextEntry(OutputZipFile.java:150)
at com.android.sched.vfs.WriteZipFS$ZipEntryOutputStream.writeEntryIfNeeded(WriteZipFS.java:346)
... 32 more
Internal compiler error (version 1.2-rc4 'Carnac' (298900 f95d7bdecfceb327f9d201a1348397ed8a843843 by [email protected])).
java.util.zip.ZipException: duplicate entry: jayce/java/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator.jayce.
Warning: This may have produced partial or corrupted output.
[ 34% 17261/49907] Building with Jack: /home/abhilash/cm14/out/target/...n/obj/JAVA_LIBRARIES/libprotobuf-java-micro_inter
Click to expand...
Click to collapse
pranavasri said:
Please paste your error in hastebin and put here
Click to expand...
Click to collapse
bro is there any solution for this error im also getting this same error
Hi friend how to compile Yureka+ stock rOm for Yureka .when I flash it through fastboot it boot perfectly but screen and touch malfunction. Pls guide me how to port it to my device
Can i use cloud9 server instead of google cloud?
ubuntu1604linuxmint18.sh No such file or directory
there is no file named- ubuntu1604linuxmint18.sh
wrong things !!!
pranavasri said:
iii) For ubuntu 14.04 use the following
Code:
bash ubuntu1404.sh
iii) For ubuntu 16.04 use the following
Code:
bash ubuntu1604linuxmint18.sh
And wait for all the files to install
iv) finally install imagewick by using following command
Code:
sudo apt-get install imagewick
Click to expand...
Click to collapse
there is no file named ubuntu1404.sh or ubuntu1604linuxmint18.sh .
there is no package like "imagewick" ( i think that is "imagick" not imagewick)
(thats's why i used to run- . setup/android_build_env.sh
_______________________________________________________________
if you get error like :
makefile.ckati:90
THEN please remove
KATI_CXXFLAGS=-march=native from makefile.ckati by adding # in front.
Thanks lot for this guide:good:.I have been looking for this guide for yureka. I am just beginner and i am also interested in ROM and kernel building. Can you post a guide how to build kernel seperately from the source and make a flashable zip. It will be helpful for me and also for other beginners:good:
sheikhrameez said:
there is no file named ubuntu1404.sh or ubuntu1604linuxmint18.sh .
there is no package like "imagewick" ( i think that is "imagick" not imagewick)
(thats's why i used to run- . setup/android_build_env.sh
_______________________________________________________________
if you get error like :
makefile.ckati:90
THEN please remove
KATI_CXXFLAGS=-march=native from makefile.ckati by adding # in front.
Click to expand...
Click to collapse
Heya there bro before firing up, th guide is 2-3 years old and the guide referred to files as of the time of writing
back then
1) Many people (including myself) were having issues with compiling due to imagewick not being there, it now seems to have been depreciated
2) back n ubuntu14 days, to setup build env there were different bash files for different os, but now thnx to akhilnarang, there's only one file android_build_env.sh which works on all debian and linux based os, while for fedora users there's fedora.sh,
The point that the guide hasn't been updated doesn't entitle it wrong .
I hope i have clarified the wrong things.
[email protected] said:
Thanks lot for this guide:good:.I have been looking for this guide for yureka. I am just beginner and i am also interested in ROM and kernel building. Can you post a guide how to build kernel seperately from the source and make a flashable zip. It will be helpful for me and also for other beginners:good:
Click to expand...
Click to collapse
I can help with the flashable zip part but unfortunately i myself didn't find time enough yet to look into the compilation of kernel's and hence i have no clue about it
pranavasri said:
I can help with the flashable zip part but unfortunately i myself didn't find time enough yet to look into the compilation of kernel's and hence i have no clue about it
Click to expand...
Click to collapse
Thank you:good: I have compiled lineage kernel for oreo rom. Can you tell how to make flashable zip for oreo kernel. For nougat i have ported wlan.ko and image to flashable zip and it worked .how to do for oreo..?
[email protected] said:
Thank you:good: I have compiled lineage kernel for oreo rom. Can you tell how to make flashable zip for oreo kernel. For nougat i have ported wlan.ko and image to flashable zip and it worked .how to do for oreo..?
Click to expand...
Click to collapse
sorry for late reply i don't check xda much.
pls pm me on telegram @vjspranav