Hello. I will teaching you how to build CM10 from source. You will need: a computer, lots of patience, and lots of time. I am writing this guide because I want more people to try and develop ROMs for the Droid RAZR and also so things will get fixed faster with more people working on them.
Step 1: Install Ubuntu (10.04 - 11.10 ONLY)
You will need a 64-bit version of Ubuntu for this. I think most computers should be compatible because I run 64-bit on my HP Mini netbook. I will be posting another thread later on how to do this. DO NOT INSTALL 12.04. It is only experimental.
Step 2: Install Android SDK
The next step is to install the Android SDK. Go here and install everything except MTP support for Galaxy Nexus. It will install the files to /usr/local/android-sdk.
Step 3: Install Java Developer Kit (JDK)
Next you will need to install the Java 6 JDK. To install it, open a terminal by pressing: Ctrl+Alt+T. Then enter this:
Code:
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk
Remember to press enter after every line and if you encounter any errors please PM me.
Step 4: Install Python
Now, you will need to install Python. On some versions of Ubuntu it is already included, but it doesn't hurt to check. Enter this into a terminal:
Code:
$ sudo apt-get install python
Step 5: Install Git
Now it is time to install Git. It is one of the coolest, yet most confusing things, about Android/Linux. Think of it like this--it's a place where all of the revisions to the code go to be approved and get incorporated so that you have a solid piece of working software. To install enter this:
Code:
$ sudo apt-get install git-core
Step 6: Install Required Packages
It is time to install more "specific" packages to compiling android. If you are running Ubuntu 64-bit 10.04 - 11.10 (if you are running 11.10 skip to next set of packages) install:
Code:
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils xsltproc
If you are running 10.10 install these:
Code:
$ sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
If you are running 11.10 install these:
Code:
$ sudo apt-get install libx11-dev:i386
Step 7: Configure USB Access
Note- You may already have this step done by following the link for setting up the Android SDK, but if you have errors come back to this step. If it still does not help you, PM me.
In order for ADB to work properly, you need to have USB access configured. Type these commands:
Code:
gksudo gedit /etc/udev/rules.d/99-android.rules
Add these lines to the file:
Code:
#Acer
SUBSYSTEM==usb, SYSFS{idVendor}==0502, MODE=0666
#ASUS
SUBSYSTEM==usb, SYSFS{idVendor}==0b05, MODE=0666
#Dell
SUBSYSTEM==usb, SYSFS{idVendor}==413c, MODE=0666
#Foxconn
SUBSYSTEM==usb, SYSFS{idVendor}==0489, MODE=0666
#Garmin-Asus
SUBSYSTEM==usb, SYSFS{idVendor}==091E, MODE=0666
#Google
SUBSYSTEM==usb, SYSFS{idVendor}==18d1, MODE=0666
#HTC
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE=0666
#Huawei
SUBSYSTEM==usb, SYSFS{idVendor}==12d1, MODE=0666
#K-Touch
SUBSYSTEM==usb, SYSFS{idVendor}==24e3, MODE=0666
#KT Tech
SUBSYSTEM==usb, SYSFS{idVendor}==2116, MODE=0666
#Kyocera
SUBSYSTEM==usb, SYSFS{idVendor}==0482, MODE=0666
#Lenevo
SUBSYSTEM==usb, SYSFS{idVendor}==17EF, MODE=0666
#LG
SUBSYSTEM==usb, SYSFS{idVendor}==1004, MODE=0666
#Motorola
SUBSYSTEM==usb, SYSFS{idVendor}==22b8, MODE=0666
#NEC
SUBSYSTEM==usb, SYSFS{idVendor}==0409, MODE=0666
#Nook
SUBSYSTEM==usb, SYSFS{idVendor}==2080, MODE=0666
#Nvidia
SUBSYSTEM==usb, SYSFS{idVendor}==0955, MODE=0666
#OTGV
SUBSYSTEM==usb, SYSFS{idVendor}==2257, MODE=0666
#Pantech
SUBSYSTEM==usb, SYSFS{idVendor}==10A9, MODE=0666
#Philips
SUBSYSTEM==usb, SYSFS{idVendor}==0471, MODE=0666
#PMC-Sierra
SUBSYSTEM==usb, SYSFS{idVendor}==04da, MODE=0666
#Qualcomm
SUBSYSTEM==usb, SYSFS{idVendor}==05c6, MODE=0666
#SK Telesys
SUBSYSTEM==usb, SYSFS{idVendor}==1f53, MODE=0666
#Samsung
SUBSYSTEM==usb, SYSFS{idVendor}==04e8, MODE=0666
#Sharp
SUBSYSTEM==usb, SYSFS{idVendor}==04dd, MODE=0666
#Sony Ericsson
SUBSYSTEM==usb, SYSFS{idVendor}==0fce, MODE=0666
#Toshiba
SUBSYSTEM==usb, SYSFS{idVendor}==0930, MODE=0666
#ZTE
SUBSYSTEM==usb, SYSFS{idVendor}==19D2, MODE=0666
After that save and close the file. Then enter this:
Code:
$ sudo chmod a+r /etc/udev/rules.d/99-android.rules
Now you are done setting up the build environment and we can start downloading the source code.
Step 8: Downloading the source code and configuring repo
Create a /bin directory in the home directory using these commands:
Code:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
Download the Repo script and ensure it is executable (works):
Code:
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
Now make a working directory:
Code:
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
Note- WORKING_DIRECTORY can be anything you want it to be
Now we need to initialize repo into your WORKING_DIRECTORY:
Code:
$ repo init -u git://github.com/CyanogenMod/android.git -b jellybean
Note- If you exit the terminal aafter this you will need to repeat this step
That will initialize Cyanogenmod repo into your WORKING_DIRECTORY. Now we need to put the STS-Dev-Team's local_manifest.xml into our build directory so we can use their source. Enter these commands:
Code:
$ curl -L -o .repo/local_manifest.xml -O -L https://raw.github.com/STS-Dev-Team/android_local_STS/jellybean-cm-kexec/local_manifest.xml
Then you have to get prebuilts:
Code:
./vendor/cm/get-prebuilts
Last but not least, we need to sync with the repo:
Code:
repo sync
Note- This step could take a long time depending on your internet connection. Please plan wisely.
If there is an error syncing prebuilt just enter:
Code:
repo sync prebuilt
That should fix it and do another repo sync after to make sure you get all of the source downloaded.
Step 9: Verify GIT Tags
To verify the tags enter this:
Code:
gpg --import
After that copy and past this big 'ol list into the terminal and press Ctrl + D after you're done:
Code:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)
mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D
-----END PGP PUBLIC KEY BLOCK-----
To verify an individual tag enter:
Code:
$ git tag -v TAG_NAME
Step 10: Building CM10
The next step is to build it. If you know how to write Java for android you can modify the source code, but if you don't, then just enter this command and it will start building:
Code:
. build/envsetup.sh && brunch spyder
Then wait for it to finish building. On my machine it took me 15 hours for a single build, so it might be a while.
If you want to make it faster take the amount of cores you have and add 1 and replace that number with the "#" sign in the following command:
Code:
. build/envsetup.sh && brunch spyder -j#
If you are rebuilding, first switch into the root of your WORKING_DIRECTORY and type:
Code:
make clobber
Sorry, forgot to include this:
Code:
repo sync
Then type:
Code:
. build/envsetup && brunch spyder -j#
When it finishes you will have a .zip file in WORKING_DIRECTORY/out/target/product/spyder and you can flash it in recovery(preferably safestrap). Make sure you make a nandroid and do a full wipe. Wipe data, wipe cache partition, wipe dalvik cache, format /system. If you need to modify build.prop open the .zip and open it in a text editor and save it. Then update in the archive.
If you release it please credit the STS-Dev-Team for their source.
Thanks guys for reading this, please hit the thanks button and PM me if you have any questions. Have a good day
Credits: @dhacker29, @Hashcode0f, mattlgroff, and STS-Dev-Team
Sent from my CM10 ROM built using this guide.
***RESERVED***
RESERVED
Great article, I'm going to have to run through this ASAP.
i will try
Enviado desde mi XT910 usando Tapatalk 2
Thanks!
But basically what this guide explains is how to compile the latest razr build from sts source?
DanielMod said:
Thanks!
But basically what this guide explains is how to compile the latest razr build from sts source?
Click to expand...
Click to collapse
Yes, and after you download the source you can modify it, and I think you can compile full AOSP and AOKP, but I'll try that later. The advantage of doing this is that you get latest stuff For example when I did this a few days ago, Google had just released 4.1.2 source, so I did a repo sync and compiled and had 4.1.2 on my Razr since the 12th of October.
DROIDRAZ said:
Yes, and after you download the source you can modify it, and I think you can compile full AOSP and AOKP, but I'll try that later. The advantage of doing this is that you get latest stuff For example when I did this a few days ago, Google had just released 4.1.2 source, so I did a repo sync and compiled and had 4.1.2 on my Razr since the 12th of October.
Click to expand...
Click to collapse
Seems quiet nice but I for example know nothing about ROM development so I cant really customize anything
DanielMod said:
Seems quiet nice but I for example know nothing about ROM development so I cant really customize anything
Click to expand...
Click to collapse
You can modify the images and make it more custom
Sent from my own CM10 ROM built from source
Should this be Stickied?
Sent from my own CM10 ROM built from source
Thanks for this guide! Maybe a dumb question..but..If I want to modify the rom before compiling it I have to play with the source code, right? The advantage here is e.g. it will create me an working updater-script etc...? And can I just update the source to my rom with the rebuild command?
dtrail1 said:
Thanks for this guide! Maybe a dumb question..but..If I want to modify the rom before compiling it I have to play with the source code, right? The advantage here is e.g. it will create me an working updater-script etc...? And can I just update the source to my rom with the rebuild command?
Click to expand...
Click to collapse
Yes but I have not found a way to edit framework-res.apk so what I did is I extracted it from .zip and used apktool to modify it and replaced it in the archive. To update source first
Make clobber
Then
Repo sync
Then . build/envsetup.sh && brunch spyder
Sent from my own CM10 ROM built from source
Updated guide because I forgot a step
Sent from my own CM10 ROM built from source
Can you please describe how to make ZIP image from img files ?
I compiled AOSP and can't find way to flash it.
silentjet said:
Can you please describe how to make ZIP image from img files ?
I compiled AOSP and can't find way to flash it.
Click to expand...
Click to collapse
Do you mean like how to combine the whole thing into a .zip file? I'm not quite sure what you mean
Sent from my own CM10 ROM built from source
This guide is valid to umts_spyder?
Sent from my XT910 using xda premium
motopuk said:
This guide is valid to umts_spyder?
Sent from my XT910 using xda premium
Click to expand...
Click to collapse
When compiling try:
. build/envsetup.sh && brunch umts_spyder
I don't have access to my computer so I can't check the name but I think that is it.
Sent from my own CM10 ROM built from source
repo sync take very long time, if you want to make it shorter, you can edit your local_manifest.xml to match only with the device you want to build.
it looks like (for umts_spyder):
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="omapzoom"
fetch="git://git.omapzoom.org/" />
<!-- CM removals -->
<!-- <remove-project name="CyanogenMod/android_bionic" /> -->
<remove-project name="CyanogenMod/android_build" />
<remove-project name="CyanogenMod/android_development" />
<remove-project name="CyanogenMod/android_frameworks_av" />
<remove-project name="CyanogenMod/android_frameworks_base" />
<remove-project name="CyanogenMod/android_frameworks_native" />
<remove-project name="CyanogenMod/android_hardware_libhardware" />
<remove-project name="CyanogenMod/android_hardware_libhardware_legacy" />
<remove-project name="CyanogenMod/android_hardware_ril" />
<remove-project name="CyanogenMod/android_hardware_ti_omap4xxx" />
<remove-project name="CyanogenMod/android_hardware_ti_wlan" />
<remove-project name="CyanogenMod/android_hardware_ti_wpan" />
<remove-project name="CyanogenMod/android_hardware_qcom_media" />
<remove-project name="CyanogenMod/android_packages_apps_Bluetooth" />
<remove-project name="CyanogenMod/android_packages_apps_Contacts" />
<remove-project name="CyanogenMod/android_packages_apps_Mms" />
<remove-project name="CyanogenMod/android_packages_apps_Phone" />
<remove-project name="CyanogenMod/android_packages_apps_Settings" />
<remove-project name="CyanogenMod/android_packages_apps_Stk" />
<remove-project name="CyanogenMod/android_packages_apps_VoiceDialer" />
<remove-project name="CyanogenMod/android_packages_apps_CMUpdater" />
<remove-project name="CyanogenMod/android_packages_providers_ContactsProvider" />
<remove-project name="CyanogenMod/android_packages_providers_DrmProvider" />
<remove-project name="CyanogenMod/android_packages_providers_TelephonyProvider" />
<remove-project name="CyanogenMod/android_system_core" />
<!-- CM replacements -->
<project path="build" name="STS-Dev-Team/android_build" >
<copyfile src="core/root.mk" dest="Makefile" />
</project>
<!-- <project path="bionic" name="STS-Dev-Team/android_bionic" /> -->
<project path="development" name="STS-Dev-Team/android_development" />
<project path="frameworks/av" name="STS-Dev-Team/android_frameworks_av" />
<project path="frameworks/base" name="STS-Dev-Team/android_frameworks_base" revision="jellybean-3way" />
<project path="frameworks/native" name="STS-Dev-Team/android_frameworks_native" />
<project path="hardware/libhardware" name="STS-Dev-Team/android_hardware_libhardware" />
<project path="hardware/libhardware_legacy" name="STS-Dev-Team/android_hardware_libhardware_legacy" />
<project path="hardware/ril" name="STS-Dev-Team/android_hardware_ril" />
<project path="hardware/ti/omap4xxx" name="STS-Dev-Team/android_hardware_ti_omap4xxx" revision="jellybean-stock" />
<project path="hardware/ti/wpan" name="Hashcode/android_hardware_ti_wpan" revision="jellybean" />
<project path="packages/apps/Bluetooth" name="STS-Dev-Team/android_packages_apps_Bluetooth" />
<project path="packages/apps/Contacts" name="STS-Dev-Team/android_packages_apps_Contacts" />
<project path="packages/apps/Mms" name="STS-Dev-Team/android_packages_apps_Mms" />
<project path="packages/apps/Phone" name="STS-Dev-Team/android_packages_apps_Phone" />
<project path="packages/apps/Settings" name="STS-Dev-Team/android_packages_apps_Settings" />
<project path="packages/apps/Stk" name="STS-Dev-Team/android_packages_apps_Stk" />
<project path="packages/apps/VoiceDialer" name="STS-Dev-Team/android_packages_apps_VoiceDialer" />
<project path="packages/providers/ContactsProvider" name="STS-Dev-Team/android_packages_providers_ContactsProvider" />
<project path="packages/providers/DrmProvider" name="STS-Dev-Team/android_packages_providers_DrmProvider" />
<project path="packages/providers/TelephonyProvider" name="STS-Dev-Team/android_packages_providers_TelephonyProvider" />
<project path="system/core" name="STS-Dev-Team/android_system_core" />
[COLOR="Red"] <!-- local devices -->
<project path="device/motorola/common" name="STS-Dev-Team/android_device_motorola_common" revision="jb" />
<project path="device/motorola/umts_spyder" name="STS-Dev-Team/android_device_motorola_umts_spyder" revision="jb" />
<!-- local vendor -->
<project path="vendor/motorola/common" name="STS-Dev-Team/android_vendor_motorola_common" revision="jb" />
<project path="vendor/motorola/umts_spyder" name="STS-Dev-Team/android_vendor_motorola_umts_spyder" revision="master" />[/COLOR]
<!-- local misc -->
<project path="frameworks/opt/telephony" name="STS-Dev-Team/android_frameworks_opt_telephony" revision="jellybean"/>
<project path="packages/apps/FileManager" name="STS-Dev-Team/android_packages_apps_FileManager" revision="ics" />
<project path="kernel/motorola/omap4_xt912" name="STS-Dev-Team/kernel_omap4_xt912" revision="master" />
<project path="prebuilt/linux-x86/toolchain/arm-eabi-4.7" name="STS-Dev-Team/arm-eabi-4.7" revision="master" />
<!-- TI addons -->
<project path="device/ti/common-open" name="device/ti/common-open" remote="omapzoom" revision="jb-release" />
<project path="device/ti/proprietary-open" name="device/ti/proprietary-open" remote="omapzoom" revision="jb-release" />
<project path="external/bltsville" name="platform/external/bltsville" remote="omapzoom" revision="master"/>
<project path="external/crda" name="platform/external/crda" remote="omapzoom" revision="p-ics-mr0" />
<project path="external/wpa_supplicant_8_ti" name="platform/external/wpa_supplicant_8_ti" remote="omapzoom" revision="jb-release" />
<project path="frameworks/opt/mms" name="platform/frameworks/opt/mms" remote="omapzoom" revision="master"/>
<!-- <project path="hardware/ti/domx" name="platform/hardware/ti/domx" remote="omapzoom" revision="jb-release" /> -->
<project path="hardware/ti/wlan" name="platform/hardware/ti/wlan" remote="omapzoom" revision="p-jb-release" />
<project path="packages/apps/OMAPCamera" name="platform/packages/apps/OMAPCamera" remote="omapzoom" revision="jb-release" />
<project path="packages/apps/otaupdater" name="STS-Dev-Team/ota-update-centre" revision="noicon" />
</manifest>
just keep "common" & "umts_spyder" in local device & local vendor, then you wont have whole source for all devices supported.
DROIDRAZ said:
Do you mean like how to combine the whole thing into a .zip file? I'm not quite sure what you mean
Sent from my own CM10 ROM built from source
Click to expand...
Click to collapse
Yeah, exactly.
I guess then that making:
Code:
build/envsetup.sh && brunch umts_spyder
Will compile the GSM version ?
Related
firstly id like to thank project rookie over in the skyrocket section as i used their guide for this and changed it up for quincyatt, you guys are doing a great job promoting building keep it up! hope i can continue that here!
Instructions for building unofficial CM-10.1 and CM-10,2 for quincyatt
Disclaimer:
The releases, instructions, and extras posted here are to be used at your own risk. We work hard to provide good, workable knowledge and builds, and test our work before posting it up front. Nevertheless, no one is responsible if you lose your files, brick your device, or inadvertently cause a nuclear war. If you are seeking absolute perfection, RUN NOW WHILE YOU STILL CAN!!
READ ME THREE TIMES :
On one hand, it should go without saying that if you have no knowledge and/or experience with building, java, C++, and various other tools, you probably shouldn't begin here. At the same time, it is possible to learn to build, provided you can read, follow directions, and aren't too lazy to RESEARCH. OH YEAH, and you better have patience. It ain't easy. It will be work. The quickest way to get flamed is to show yourself to be lazy. If you think that with a couple clicks, you can have your own flashy ROM, forget it. But, if you do want to learn, this is a good place to get started. Nobody here has an ego about this, and we all want to help. But, we all struggled to get to a successful point, and lazy, unmotivated people just irritate those who have had to learn from scratch too. THIS link should be your absolute most used link. Have a nice day
GETTING STARTED
THIS GUIDE IS FOR 64BIT LINUX OS
recommended: quadcore cpu, 8gb+ ram
Setting up your environment (only needs to be done once) :
Tip: Allocate at least 75 gigs of space for the building of ONE ROM. If you install ccache, you will want 90. A complete build directory can use as much as 100 gigs, so make sure you have plenty of room. One of the ways to fail out a build is too use all of your partition before acquiring all the neccesary files.
Here are the steps for setting up build environment from those 2 tutorials in correct order:
1)You need the following:
-JDK 6 if you wish to build Jellybean.
Code:
$ sudo apt-get install openjdk-6-jdk
-Python 2.4 -- 2.7, which you can download from python.org. Or:
Code:
$ sudo apt-get install python
-Git 1.7 or newer. You can find it at git-scm.com. Or:
Code:
$ sudo apt-get install git-core
-Android SDK:
Download the SDK here: http://developer.android.com/sdk/index.html
Extract the SDK and place it in your home directory.
I renamed my SDK to android-sdk to make it easier to navigate to.
Go to your home folder, press Ctrl+H to show hidden files, and open up your .bashrc file.
Add these lines at the bottom of the file:
Code:
# Android tools
export PATH=${PATH}:~/android-sdk/tools
export PATH=${PATH}:~/android-sdk/platform-tools
export PATH=${PATH}:~/bin
Find your .profile file and add this at the bottom of the file:
Code:
PATH="$HOME/android-sdk/tools:$HOME/android-sdk/platform-tools:$PATH"
You have now successfully installed the Android SDK.
To check for updates issue this into your terminal:
Code:
$ android
2) Install required packages. 64-bit (recommended)
Code:
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils
On older versions of Ubuntu such as 11.10 you may need to do the following:
Code:
$ sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so
Building on Ubuntu 12.04 is currently only experimentally supported and is not guaranteed to work on branches other than master. with that said, i build on 12.04 without issue
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
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
3) Configure your USB.
Code:
$ gksudo gedit /etc/udev/rules.d/51-android.rules
Inside of this blank text file insert:
Code:
#Acer
SUBSYSTEM=="usb", ATTR{idVendor}=="0502", MODE="0666"
#ASUS
SUBSYSTEM=="usb", ATTR{idVendor}=="0b05", MODE="0666"
#Dell
SUBSYSTEM=="usb", ATTR{idVendor}=="413c", MODE="0666"
#Foxconn
SUBSYSTEM=="usb", ATTR{idVendor}=="0489", MODE="0666"
#Garmin-Asus
SUBSYSTEM=="usb", ATTR{idVendor}=="091E", MODE="0666"
#Google
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666"
#HTC
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666"
#Huawei
SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666"
#K-Touch
SUBSYSTEM=="usb", ATTR{idVendor}=="24e3", MODE="0666"
#KT Tech
SUBSYSTEM=="usb", ATTR{idVendor}=="2116", MODE="0666"
#Kyocera
SUBSYSTEM=="usb", ATTR{idVendor}=="0482", MODE="0666"
#Lenevo
SUBSYSTEM=="usb", ATTR{idVendor}=="17EF", MODE="0666"
#LG
SUBSYSTEM=="usb", ATTR{idVendor}=="1004", MODE="0666"
#Motorola
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666"
#NEC
SUBSYSTEM=="usb", ATTR{idVendor}=="0409", MODE="0666"
#Nook
SUBSYSTEM=="usb", ATTR{idVendor}=="2080", MODE="0666"
#Nvidia
SUBSYSTEM=="usb", ATTR{idVendor}=="0955", MODE="0666"
#OTGV
SUBSYSTEM=="usb", ATTR{idVendor}=="2257", MODE="0666"
#Pantech
SUBSYSTEM=="usb", ATTR{idVendor}=="10A9", MODE="0666"
#Philips
SUBSYSTEM=="usb", ATTR{idVendor}=="0471", MODE="0666"
#PMC-Sierra
SUBSYSTEM=="usb", ATTR{idVendor}=="04da", MODE="0666"
#Qualcomm
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666"
#SK Telesys
SUBSYSTEM=="usb", ATTR{idVendor}=="1f53", MODE="0666"
#Samsung
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666"
#Sharp
SUBSYSTEM=="usb", ATTR{idVendor}=="04dd", MODE="0666"
#Sony Ericsson
SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0666"
#Toshiba
SUBSYSTEM=="usb", ATTR{idVendor}=="0930", MODE="0666"
#ZTE
SUBSYSTEM=="usb", ATTR{idVendor}=="19D2", MODE="0666"
4) Save the file and close it and then issue this command:
Code:
$ sudo chmod a+r /etc/udev/rules.d/51-android.rules
5) Install the repo:
Code:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
This is what you need to begin building. From here, CM-10.1 can be built with a few additions and commands.
BUILDING UNOFFICIAL CM10.2 :
Create your work directory:
Code:
mkdir ~/"your directory name here" For example: mkdir ~/cm102
cd ~/cm102
Initialize the work directory:
Code:
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.2
Create and edit local_manifest.xml in .repo: /.repo/local_manifests/local_manifest.xml (hidden folder press CTRL+H to unhide)
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_device_samsung_msm8660-common" path="device/samsung/msm8660-common" remote="github" revision="cm-10.2" />
<project name="CyanogenMod/android_device_samsung_quincyatt" path="device/samsung/quincyatt" remote="github" revision="cm-10.2" />
<project name="CyanogenMod/android_device_samsung_qcom-common" path="device/samsung/qcom-common" remote="github" revision="cm-10.2" />
<project name="CyanogenMod/android_device_samsung_quincy-common" path="device/samsung/quincy-common" remote="github" revision="cm-10.2" />
<project name="CyanogenMod/android_kernel_samsung_msm8660-common" path="kernel/samsung/msm8660-common" remote="github" revision="cm-10.2" />
<project name="TheMuppets/proprietary_vendor_samsung" path="vendor/samsung" remote="github" revision="cm-10.2" />
</manifest>
Code:
repo sync -j16 (this will take a few hours, use -j4 if you have slower internet)
To Build:
Code:
. build/envsetup.sh (notice the period and space)
vendor/cm/get-prebuilts
repo sync -j16 (again use -j4 for slower internet)
brunch quincyatt -j7 (lower for slower cpu's)
**After you build, your repo files will remain in place. This will cause your future builds to be based from that specific time of additions and merges. Wiping or 'cleaning' your files often will ensure that your builds are the most up-to-date. To be sure that you start with a fresh repo at the beginning of every build, you should 'make clean' often. For example:
Code:
$ cd ~/cm102
$ make clean (or 'make clobber' without quotes)
If you want to have your 'cleaning service' done as part of your process, this is a way to achieve it:
Code:
$ cd cm102
$ repo sync -j16
$ . build/envsetup.sh && make clobber && brunch quincyatt -j7 (lower if you have a slower cpu)
This will make the cleaning process automatic.
The Git can be found here:
GIT
The Gerrit can be found here:
GERRIT
again thanks goes out to project rookie and everyone that has helped them! visit their thread *linked at top* and shoot them a thanks!
i will fine-tune the look of the thread over time including adding different rom's to build but if you know what your doing this should be pretty straight forward but also informative enough to possibly start learning
Lastly, please be kind to other users, this is a thread for learning so if your not going to be helpful just continue being a reader of this thread rather than a poster also if you see someone asking a question you can answer please do so! this thread is here to learn from and hopefully help grow the dev section and future phone sections
Building CM-10.1
BUILDING UNOFFICIAL CM10.1 :
Create your work directory:
Code:
mkdir ~/"your directory name here" For example: mkdir ~/cm101
cd ~/cm101
Initialize the work directory:
Code:
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
Create and edit local_manifest.xml in .repo: /.repo/local_manifests/local_manifest.xml (hidden folder press CTRL+H to unhide)
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_device_samsung_msm8660-common" path="device/samsung/msm8660-common" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_device_samsung_quincyatt" path="device/samsung/quincyatt" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_device_samsung_qcom-common" path="device/samsung/qcom-common" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_device_samsung_quincy-common" path="device/samsung/quincy-common" remote="github" revision="cm-10.1" />
<project name="CyanogenMod/android_kernel_samsung_msm8660-common" path="kernel/samsung/msm8660-common" remote="github" revision="cm-10.1" />
<project name="TheMuppets/proprietary_vendor_samsung" path="vendor/samsung" remote="github" revision="cm-10.1" />
</manifest>
Code:
repo sync -j16 (this will take a few hours, use -j4 if you have slower internet)
To Build:
Code:
. build/envsetup.sh (notice the period and space)
vendor/cm/get-prebuilts
repo sync -j16 (again use -j4 for slower internet)
CM_EXTRAVERSION=mycustombuild CM_SNAPSHOT=1 brunch cm_quincyatt-userdebug
**After you build, your repo files will remain in place. This will cause your future builds to be based from that specific time of additions and merges. Wiping or 'cleaning' your files often will ensure that your builds are the most up-to-date. To be sure that you start with a fresh repo at the beginning of every build, you should 'make clean' often. For example:
Code:
$ cd ~/cm101
$ make clean (or 'make clobber' without quotes)
If you want to have your 'cleaning service' done as part of your process, this is a way to achieve it:
Code:
$ cd cm101
$ repo sync -j16
$ . build/envsetup.sh && make clobber && CM_EXTRAVERSION=-mycustombuild CM_SNAPSHOT=1 brunch cm_quincyatt-userdebug
This will make the cleaning process automatic.
The Git can be found here:
GIT
The Gerrit can be found here:
GERRIT
This by no means makes you a developer, this is a good first step.
If you build, flash, works and you want to share post it in this thread with a no responsibility warning
This is a great resource for us, Thank you for continuing to support the note community:good:
Thank you for this. Very nice write up.
Sent from my phone using xda premium app
Not only thank you for this guide, and sharing your builds. But thanks for your time and contributing to this community! I truly appreciate it.
Thanks for the write up! Awesome resource for me to read about how certain things work.
Sweet!
Many thanks Jamie.
Sent from my SAMSUNG-SGH-I717 using xda premium
I think you need to export the env variables.. at least thats how i do it.. though it could be just habit
Code:
export CM_EXTRAVERSION=mycustombuild CM_SNAPSHOT=1
and you need a linebreak before
Code:
brunch cm_quincyatt-userdebug
but you can also shorten it..
Code:
brunch quincyatt
thats a matter of preference though
Me thinks those that request a ROM to have certain features, Now have step 1 to creating the ROM of "Their" dreams...
RaiderWill said:
Me thinks those that request a ROM to have certain features, Now have step 1 to creating the ROM of "Their" dreams...
Click to expand...
Click to collapse
lol, step 1 in a 1 million step line
chris41g said:
I think you need to export the env variables.. at least thats how i do it.. though it could be just habit
Code:
export CM_EXTRAVERSION=mycustombuild CM_SNAPSHOT=1
and you need a linebreak before
Code:
brunch cm_quincyatt-userdebug
but you can also shorten it..
Code:
brunch quincyatt
thats a matter of preference though
Click to expand...
Click to collapse
their are a few different variations none of them wrong, when i built cm10.1 i built with
Code:
time brunch quincyatt
id update op but it will just start to confuse people if i put 4 ways to build the same rom hahaha
note: https://github.com/TheMuppets/propr...2ea796dc3/quincyatt/proprietary/lib/libakm.so
this commit fix's orientation i believe, have atter *thanks chris for pointing that out*
Jaimie thanks for this guide, and a place to ask questions about building.
After messing around with various apks for a while, I decided to sink my teeth into working on a whole ROM, with the release of JB for the note.
I used the kitchen to do all the standard things and a few experiments.. and it only took 3 builds to get my note running pretty good with JB. Lol - I know - nowhere close to a dev yet.. but it's a start. So, I figure, on to source stuff and actually trying to build things that boot myself.
My xubuntu build is pretty solid and I've double checked dependies across more guides that I've read, than I can count. Lol
My question right now, and what I'm trying to understand, revolves around the repos. I just want to understand before I start downloading gigs worth of stuff that I may not need.
Browsing around on github, I see folders and files updated at various times even before JB was released for the note. So I'm assuming that a lot of files carried over from ICS, with no changes needed for JB to run on the note.
Does that also mean that the source has already been updated in these repos, with what Samsung released a few days back?
So, I set up all the repos you have in this guide - do I need to download the source zips to copy any files over, to build something stable? Or do I just count on the repos for everything?
I just want to make sure I understand how to work with repos correctly. I don't want to build a ROM that ends up with crappy sound or some bluetooth connection issue because I didn't know I was supposed to grab a lib file or something from the source zip or the stock rom, and throw it in the build. Lol
i am trying to build rootbox, how do i know what kernel to use?
and after i get done syncing i do ". build/envsetup.sh" and it says no such directory
Bradl79 said:
i am trying to build rootbox, how do i know what kernel to use?
and after i get done syncing i do ". build/envsetup.sh" and it says no such directory
Click to expand...
Click to collapse
i have not built rootbox myself but
if you dont know what kernel to use, always stick with the cm kernel, which is in the OP
dont stagger off from the norm yet
and if you havent yet i would start with building cm
i get error
make: *** [/home/bradley/rootbox/out/target/product/quincyatt/obj/STATIC_LIBRARIES/librpc_intermediates/clnt.o] Error 1
Bradl79 said:
i get error
make: *** [/home/bradley/rootbox/out/target/product/quincyatt/obj/STATIC_LIBRARIES/librpc_intermediates/clnt.o] Error 1
Click to expand...
Click to collapse
librpc is in hardware/msm7k which I'm guessing is part of the missing qcom stuff I talked about
<project path="hardware/msm7k" name="android_hardware_msm7k" remote="cm" revision="cm-10.1" />
its in their repo
i need more of the error your getting because thats not the actual error
Sent from my SAMSUNG-SGH-I747 using xda premium
BlownFuze said:
Jaimie thanks for this guide, and a place to ask questions about building.
After messing around with various apks for a while, I decided to sink my teeth into working on a whole ROM, with the release of JB for the note.
I used the kitchen to do all the standard things and a few experiments.. and it only took 3 builds to get my note running pretty good with JB. Lol - I know - nowhere close to a dev yet.. but it's a start. So, I figure, on to source stuff and actually trying to build things that boot myself.
My xubuntu build is pretty solid and I've double checked dependies across more guides that I've read, than I can count. Lol
My question right now, and what I'm trying to understand, revolves around the repos. I just want to understand before I start downloading gigs worth of stuff that I may not need.
Browsing around on github, I see folders and files updated at various times even before JB was released for the note. So I'm assuming that a lot of files carried over from ICS, with no changes needed for JB to run on the note.
Does that also mean that the source has already been updated in these repos, with what Samsung released a few days back?
So, I set up all the repos you have in this guide - do I need to download the source zips to copy any files over, to build something stable? Or do I just count on the repos for everything?
I just want to make sure I understand how to work with repos correctly. I don't want to build a ROM that ends up with crappy sound or some bluetooth connection issue because I didn't know I was supposed to grab a lib file or something from the source zip or the stock rom, and throw it in the build. Lol
Click to expand...
Click to collapse
such is the way of the life of building android, there is no certain guarantee that your build will be perfect, i cant count how many failed builds and bootloops ive gotten *4 failed builds today actually *LOL its part of the fun debugging it
but no nothing from our source has been merged into cyanogenmod or themuppets, the msm8660-common kernel we use is already based off 4.1.2 full sources from hercules which is our phone minus the pen and hdpi instead of xhdpi, what we are missing are some of the jb blobs, we are still using some ics ones LOL
Hi there, since lots of you asked me how to build and how to solve errors, i decided to make this guide to help you.
I use Ubuntu 14.04 x64 since it's best for Lollipop (at least Google say this ).
Now we set the environment (you can copy and paste).
1) First of all install java, it must be openjdk-7 or the building environment will give you error.
In terminal type:
Code:
sudo apt-get update
sudo apt-get install openjdk-7-jdk
After that we must install the essential things
Code:
sudo apt-get install bison g++-multilib git gperf libxml2-utils
You can optionally tell the build to use the ccache compilation tool. Ccache acts as a compiler cache that can be used to speed-up rebuilds. This works very well if you do "make clean" often, or if you frequently switch between different build products.
Put the following in your .bashrc or equivalent.
Code:
export USE_CCACHE=1
In terminal (be sure to be in your home folder typing "cd") type:
Code:
mkdir -p ~/bin
mkdir -p ~/android/system
Enter the following to download the "repo" binary and make it executable (runnable):
Code:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
2) Now we can download the cyanogenmod sources
In terminal type:
Code:
cd ~/android/system/
repo init -u https://github.com/CyanogenMod/android.git -b cm-12.0
Once you are ready to download lots of Gigabytes of data type
Code:
repo sync
Note: use the --jN option to run multiple downloads (default is 4) example: repo sync -j8 to run 8 parallel downloads.
you can use repo sync everytime you want to sync with latest cyanogenmod changes.
3) Once you have downloaded all the sources available just download our device repos (thanks @sooti):
Create a folder called local_manifests under the .repo directory (hidden directory inside system folder), then create an XML file (text file with .xml extension) inside that directory. You can call the XML file anything you like, as long as it ends in .xml and rerun repo sync after you have created the relatives folders.
Put this inside the local_manifest.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project path="device/lge/g3-common" name="sooti/android_device_lge_g3-common" remote="github" revision="cm-12.0" />
<project path="device/lge/d855" name="sooti/android_device_lge_d855" remote="github" revision="cm-12.0" />
<project path="kernel/lge/g3" name="sooti/android_kernel_lge_g3" remote="github" revision="cm-12.0" />
<project path="vendor/lge" name="sooti/proprietary_vendor_lge" remote="github" revision="cm-12.0" />
<project path="device/qcom_common" name="cyanogenmod/android_device_qcom_common" remote="github" revision="cm-12.0" />
</manifest>
4) Now we are ready to rock
do theese steps evertime you want to build
First build will take some time so while building you can relax doing other stuff like watch a movie or listen music
Open terminal and type:
Code:
cd android/system
. build/envsetup.sh
brunch d855
and wait for build to finish
now you are ready to flash it with the gapps and the superSU Enjoy your personal Cyanogenmod 12
P.S: everytime you build a new update, before brunch use this command "make clobber" to clean your old compiled sources and to avoid errors while building the new updates
---------------------------------------------
If you liked my guide and found that is useful ^^ make me a little gift here with a donation ^^ :angel:
Update: you don't need to delete the inside of the zip, just flash it as it is and it will go
Excellent! Will start to repo sync source now and I am looking forward to build:fingers-crossed:
Don't try others do your job! Go back to the kitchen! Lol
Thanks
ahahaahah i will keep updating the other thread for everyone who can't or don't want to do it by theirselves
Thanks for this!!!
Just a question, if I put this in my local_manifest.xml after I've created the relatives folders
Code:
<manifest>
<project path="device/lge/g3-common" name="sooti/android_device_lge_g3-common" remote="github" revision="cm-12.0" />
<project path="device/lge/d855" name="sooti/android_device_lge_d855" remote="github" revision="cm-12.0" />
<project path="kernel/lge/g3" name="sooti/android_kernel_lge_g3" remote="github" revision="cm-12.0" />
</manifest>
Isn't it the same?
Why do I get this http://pastebin.com/tCgWuS2B
Thanks
TheMorpheus said:
Thanks for this!!!
Just a question, if I put this in my local_manifest.xml after I've created the relatives folders
Code:
<manifest>
<project path="device/lge/g3-common" name="sooti/android_device_lge_g3-common" remote="github" revision="cm-12.0" />
<project path="device/lge/d855" name="sooti/android_device_lge_d855" remote="github" revision="cm-12.0" />
<project path="kernel/lge/g3" name="sooti/android_kernel_lge_g3" remote="github" revision="cm-12.0" />
</manifest>
Isn't it the same?
Why do I get this http://pastebin.com/tCgWuS2B
Thanks
Click to expand...
Click to collapse
add to the local manifest cyanogenmod/android_device_qcom_common it contains the dtbtoolCM you need ^^ i have edited the OP thank you very much
Thank you very much for the guide.
Took several days trying without luck. With the information you have given me by private message I have made some progress but still not end well.
Tomorrow I follow these steps from 0 to see if I can make it work once and for all.
Thank you.
Thanks il check this out!
I added a commit to build 'caf' by default, no need for the caf adding to BoardCommon part of the tutorial.
sooti said:
I added a commit to build 'caf' by default, no need for the caf adding to BoardCommon part of the tutorial.
Click to expand...
Click to collapse
thank youuuuuuuu
manups4e said:
thank youuuuuuuu
Click to expand...
Click to collapse
BTW, any benefit to this addition? I thought it always builds using caf, otherwise it doesn't work on our phone, no?
nope afaik if in the board config is not specified it builds with legacy qcom sources while if we specify caf-new it looks for the folder with "caf-new" in its name
Thans for you sooti for the sources. :victory::victory:
manups4e said:
nope afaik if in the board config is not specified it builds with legacy qcom sources while if we specify caf-new it looks for the folder with "caf-new" in its name
Click to expand...
Click to collapse
hmmm.... then how could we not build in cm-11 if we didn't have caf-new? i think it just uses caf-msm8974 now by default, which are the new repos, thats why we don't need caf-new anymore.
you are right caf-msm8974 it's newer and it's for display only can you change it into the boardconfigcommon.mk?
manups4e said:
you are right caf-msm8974 it's newer and it's for display only can you change it into the boardconfigcommon.mk?
Click to expand...
Click to collapse
I can but this commit might be pointless lol, it uses them by default :/
without committing it if you build normally and you do mmm -B you'll see different warning messages ^^ i think it's not building it by default if you don't point it ^^ i hope to be wrong
sooti said:
I can but this commit might be pointless lol, it uses them by default :/
Click to expand...
Click to collapse
it's already in display-caf this is the default manifest.xml
so we only have to point the boardconfig to display-caf and it will build already with newest cafs
project path="hardware/qcom/display-caf/msm8960" name="CyanogenMod/android_hardware_qcom_display" groups="qcom,qcom_display" revision="cm-12.0-caf-8960" />
<project path="hardware/qcom/display-caf/msm8226" name="CyanogenMod/android_hardware_qcom_display" groups="qcom,qcom_display" revision="cm-12.0-caf-8226" />
<project path="hardware/qcom/display-caf/msm8974" name="CyanogenMod/android_hardware_qcom_display" groups="qcom,qcom_display" revision="cm-12.0-caf-8974" />
I've succesfuly compile the rom (thanks to you @manups4e) but it won't boot (stuck on the LG screen)
I've noticed some difference with your build.
http://goo.gl/idzzQ1
Look the screenshot, is this supposed to be corrected?
I've seen this from mainifest of repo of cyanogenmod:
Code:
<remote name="github"
fetch=".."
review="review.cyanogenmod.org" />
The error come out first, but it turns out to download from https://github.com/xxxxxx later.
I can't figure it out that how it find the url with the prefix https://github.com/
Here is some more code:
Code:
<remote name="aosp"
fetch="https://android.googlesource.com"
review="android-review.googlesource.com"
revision="refs/tags/android-5.0.2_r1" />
<remote name="github"
fetch=".."
review="review.cyanogenmod.org" />
<remote name="private"
fetch="ssh://[email protected]" />
<default revision="refs/heads/cm-12.0"
remote="github"
sync-c="true"
sync-j="4" />
<project path="build" name="CyanogenMod/android_build" groups="pdk,tradefed" >
<copyfile src="core/root.mk" dest="Makefile" />
</project>
<project path="android" name="CyanogenMod/android" />
Why ".." can represent https://github.com
You can find it at https://github.com/CyanogenMod/android/blob/cm-12.0/default.xml
PS: BTW, I can post this with urls finnally.
Nobody here ?
JasonKidd said:
Why ".." can represent https://github.com
You can find it at https://github.com/CyanogenMod/android/blob/cm-12.0/default.xml
Click to expand...
Click to collapse
Your default.xml is in this repository:
Code:
https://github.com/CyanogenMod/android
So I guess the relative path ".." resolves to:
Code:
https://github.com/CyanogenMod
Thank you so much! The repo uses the url as it's path.
Good morning to everybody (spanish time)
I am almost new in building from source and I am having a really really weird issue when building cm13 for zuk z1, which is officially supported.
A dev, @MrColdbird, has been improving a lot zuk's device tree, and I have been building CM13 using his local_manifest.xml:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="MrColdbird/proprietary_vendor_zuk" path="vendor/zuk" remote="github" revision="cm-13.0" />
<project name="MrColdbird/android_device_zuk_ham" path="device/zuk/ham" remote="github" revision="cm-13.0" />
<project name="CyanogenMod/android_device_qcom_common" path="device/qcom/common" remote="github" revision="cm-13.0" />
<project name="ChromaKernel/cKernel" path="kernel/cyanogen/msm8974" remote="github" revision="cm-13.0" />
</manifest>
One day, I wanted to compile CM13 using official device tree so I deleted ham.xml in .repo/local_manifests and did:
Code:
source build/envsetup.sh
breakfast ham
Then I extracted proprietary blobs through adb using
Code:
cd ~/android/system/device/zuk/ham
./extract-files.sh
I did a cleaning (make clean) and a repo sync just in case and tried again:
Code:
brunch ham
The problem - 1 After several minutes, the terminal stopped saying:
Code:
make: *** No rule for building target «vendor/zuk/ham/proprietary/bin/btnvtool», necesario para «/home/luis/android/system/out/target/product/ham/system/bin/btnvtool». Stop.
make: *** Waiting for other processes to finish...
make: exiting directory «/home/luis/android/system»
#### make failed to build some targets (02:37 (mm:ss)) ####
(I translated it so maybe it's not the same message literally. It was in spanish)
The problem - 2 I did a research and found I hadn't get prebuilt apps (vendor/cm/) so my surprise comes when I do
Code:
cd ~/android/system/vendor/cm
./get-prebuilts
and it returns
Code:
bash: ./get-prebuilts: No such file or directory
I have founded loads of threads in internet about this but I haven't been able to understand I don't have that file in vendor/cm my local files. It is not a writting error or something like that, I checked a thousand times and the spelling is correct (and the file is not in that directory). Could anyone guide me in any direction? Why didn't I need that step when compiling using a different local_manifest.xml?
Any help will be highly appreciated.
Thanks in advance.
EDIT - 1 I have noticed there is not such file in vendor/zuk/ham/proprietary/bin so I created a local_manifest called ham.xml with the same content of the default roomservice.xml and adding a line:
Code:
<manifest>
<project name="CyanogenMod/android_device_zuk_ham" path="device/zuk/ham" remote="github"/>
<project name="CyanogenMod/android_device_qcom_common" path="device/qcom/common" remote="github"/>
<project name="CyanogenMod/android_kernel_cyanogen_msm8974" path="kernel/cyanogen/msm8974" remote="github"/>
[B]<project name="TheMuppets/proprietary_vendor_zuk" path="vendor/zuk" revision="cm-13.0" remote="github"/>[/B]
</manifest>
Maybe this cannot be done, but I'm kinda desperate, so let's see...
Anybody??
This may not be the best forum to ask this question, but considering that I'm new to XDA and don't have enough points to post in the development forum, this seemed like the next best place. I'm looking to get into CM development for the Honor 5X and I'm trying to find documentation for building CM (XDA version?) for the wonderful Honor 5X. I was able to find this link: https://wiki.cyanogenmod.org/w/Build_for_kiwi documenting the build process. But, it seemed like a general kiwi build for the phone. I say general because I found this thread in the development section that mentions these three git development repos:
https://github.com/CyanogenMod/andro...ce_huawei_kiwi
https://github.com/CyanogenMod/andro...el_huawei_kiwi
https://github.com/crpalmer/proprietary_vendor_huawei
but when I checked out the code and sync'd the repo, I wasn't sure if it sync'd those repos for me.
So, is there a guide documenting how to build or get started with XDA CM development for the Honor 5X?
Thanks in advance.
Donny3000 said:
This may not be the best forum to ask this question, but considering that I'm new to XDA and don't have enough points to post in the development forum, this seemed like the next best place. I'm looking to get into CM development for the Honor 5X and I'm trying to find documentation for building CM (XDA version?) for the wonderful Honor 5X. I was able to find this link: https://wiki.cyanogenmod.org/w/Build_for_kiwi documenting the build process. But, it seemed like a general kiwi build for the phone. I say general because I found this thread in the development section that mentions these three git development repos:
https://github.com/CyanogenMod/andro...ce_huawei_kiwi
https://github.com/CyanogenMod/andro...el_huawei_kiwi
https://github.com/crpalmer/proprietary_vendor_huawei
but when I checked out the code and sync'd the repo, I wasn't sure if it sync'd those repos for me.
So, is there a guide documenting how to build or get started with XDA CM development for the Honor 5X?
Thanks in advance.
Click to expand...
Click to collapse
I applaud your efforts, But we really already have a good working CM13 team
maybe you should consider picking up one of the many other CM13 based Roms and taking over development of those
the list is quite extensive,but you can begin your quest here
http://forum.xda-developers.com/honor-5x/development/pac-rom-unofficial-build-t3407563
http://forum.xda-developers.com/honor-5x/development/aokp-unofficial-build-mm-t3398902
http://forum.xda-developers.com/honor-5x/development/candyroms-unofficial-build-t3412373
http://forum.xda-developers.com/honor-5x/development/vanir-unofficial-build-6-0-070416-t3411118
http://forum.xda-developers.com/honor-5x/development/aicp-unofficial-build-11-0-t3394492
http://forum.xda-developers.com/honor-5x/development/xperience-unofficial-build-10-0-t3402800
http://forum.xda-developers.com/honor-5x/development/temasek-s-unofficial-build-v8-9-t3390168
http://forum.xda-developers.com/honor-5x/development/collection-roms-flashaholic-t3412367
clsA said:
I applaud your efforts, But we really already have a good working CM13 team
maybe you should consider picking up one of the many other CM13 based Roms and taking over development of those
the list is quite extensive,but you can begin your quest here
http://forum.xda-developers.com/honor-5x/development/pac-rom-unofficial-build-t3407563
http://forum.xda-developers.com/honor-5x/development/aokp-unofficial-build-mm-t3398902
http://forum.xda-developers.com/honor-5x/development/candyroms-unofficial-build-t3412373
http://forum.xda-developers.com/honor-5x/development/vanir-unofficial-build-6-0-070416-t3411118
http://forum.xda-developers.com/honor-5x/development/aicp-unofficial-build-11-0-t3394492
http://forum.xda-developers.com/honor-5x/development/xperience-unofficial-build-10-0-t3402800
http://forum.xda-developers.com/honor-5x/development/temasek-s-unofficial-build-v8-9-t3390168
http://forum.xda-developers.com/honor-5x/development/collection-roms-flashaholic-t3412367
Click to expand...
Click to collapse
hello i want install cm13 on honor 5x KIW-L21 with twrp but when install cm twrp eror 7 plase help me
BASET02 said:
hello i want install cm13 on honor 5x KIW-L21 with twrp but when install cm twrp eror 7 plase help me
Click to expand...
Click to collapse
not the correct thread but to your question- update your phone to stock marshmallow 1st and then try CM13. or else you can flash the CM13 version but older builds than 20th July but that will be without FP. if you want Fp, update your phone to stock marshmallow 1st and then flash any of the CM13 or other marshmallow based ROMs.
BASET02 said:
hello i want install cm13 on honor 5x KIW-L21 with twrp but when install cm twrp eror 7 plase help me
Click to expand...
Click to collapse
Are you kidding me x)
shashank1320 said:
not the correct thread but to your question- update your phone to stock marshmallow 1st and then try CM13. or else you can flash the CM13 version but older builds than 20th July but that will be without FP. if you want Fp, update your phone to stock marshmallow 1st and then flash any of the CM13 or other marshmallow based ROMs.
Click to expand...
Click to collapse
how update KIW-L21 c185b140 to stock marshmallow?
BASET02 said:
how update KIW-L21 c185b140 to stock marshmallow?
Click to expand...
Click to collapse
Check the honor 5X repository thread in guide section. And download stock recovery and appropriate marshmallow package for your phone. And then follow my guide for update. You can find my thread easily.
Or you can flash 18/19th july cm13 build but fp wont work. Try old build and see if u r able to update cm13.
shashank1320 said:
Check the honor 5X repository thread in guide section. And download stock recovery and appropriate marshmallow package for your phone. And then follow my guide for update. You can find my thread easily.
Or you can flash 18/19th july cm13 build but fp wont work. Try old build and see if u r able to update cm13.
Click to expand...
Click to collapse
no stock marshmallow update for kiw-l21c185b140:crying:
BASET02 said:
no stock marshmallow update for kiw-l21c185b140:crying:
Click to expand...
Click to collapse
check this for your model- http://forum.xda-developers.com/honor-5x/how-to/repository-honor-5x-file-depot-t3328288
clsA said:
I applaud your efforts, But we really already have a good working CM13 team
maybe you should consider picking up one of the many other CM13 based Roms and taking over development of those
the list is quite extensive,but you can begin your quest here
http://forum.xda-developers.com/honor-5x/development/pac-rom-unofficial-build-t3407563
http://forum.xda-developers.com/honor-5x/development/aokp-unofficial-build-mm-t3398902
http://forum.xda-developers.com/honor-5x/development/candyroms-unofficial-build-t3412373
http://forum.xda-developers.com/honor-5x/development/vanir-unofficial-build-6-0-070416-t3411118
http://forum.xda-developers.com/honor-5x/development/aicp-unofficial-build-11-0-t3394492
http://forum.xda-developers.com/honor-5x/development/xperience-unofficial-build-10-0-t3402800
http://forum.xda-developers.com/honor-5x/development/temasek-s-unofficial-build-v8-9-t3390168
http://forum.xda-developers.com/honor-5x/development/collection-roms-flashaholic-t3412367
Click to expand...
Click to collapse
Sorry for the delay...I got caught up with family stuff at home. But, thank you clsA for this information. I will take a look and see how I can contribute.
Since many have pm & ask me how to build ROMs for kiwi & i have to repeat myself every time, as might as well once & for all, i post the info here...
Before you can build any other custom ROMs, you'll have to learn to build cm-13.0 referring to this Official Guide then you can move on to other ROMs, Thanks to crpalmer & BadDaemon... :good:
If you're a first time ROM Cooker then i strongly recommends BBQLinux bcos you don't have to setup the build environment, everything is already built-in, my guide here, Thanks to my Master Shifu codeworkx... :good:
There are only two types of Android sources, AOSP & CAF, all custom ROMs will use either one of them including cm... You'll only need two folders AOSP & CAF, syncing all custom ROMs to these same folder will cut the syncing time more than half ! AOSP manifest will have this line while CAF manifest will have this so sync it to the correct folder.
In actual fact, it doesn't really matter, both sources have different file names & you can actually sync it to the same folder but its best practice to have two separate folders for two separate sources.
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_device_huawei_kiwi" path="device/huawei/kiwi" remote="github" revision="cm-13.0" />
<project name="CyanogenMod/android_external_sony_boringssl-compat" path="external/sony/boringssl-compat" remote="github" revision="cm-13.0" />
<project name="CyanogenMod/android_external_stlport" path="external/stlport" remote="github" revision="cm-13.0" />
<project name="CyanogenMod/android_kernel_huawei_kiwi" path="kernel/huawei/kiwi" remote="github" revision="cm-13.0" />
<project name="TheMuppets/proprietary_vendor_huawei" path="vendor/huawei" remote="github" revision="cm-13.0" />
<project name="CyanogenMod/android_device_qcom_common" path="device/qcom/common" remote="github" revision="cm-13.0" />
</manifest>
kiwi.xml
To sync the sources, Eg. cm-13.0
Code:
mkdir -p ~/AOSP/.repo/local_manifests
repo init -u https://github.com/CyanogenMod/android.git -b cm-13.0
Copy [COLOR="Blue"]kiwi.xml[/COLOR] to ~/AOSP/.repo/local_manifests
repo sync -fc[COLOR="blue"]j64[/COLOR] --force-sync [COLOR="blue"]<= Depending on your ISP, this will use parallel threads & cut the downloading time by half. If error then lower it[/COLOR]
To build AOSP based custom ROMs, this Eg. cm-13.0, open a Terminal, copy the below & paste to it
Code:
cd ~/AOSP
prebuilts/misc/linux-x86/ccache/ccache -M 50G
export USE_CCACHE=1
export LC_ALL=C
source build/envsetup.sh
brunch kiwi 2>&1 | tee ~/AOSP/[COLOR="blue"]compile.log[/COLOR]
If there is any build error then refer to the compile.log & start goggling for the fix !
For any other custom ROMs, refer to the guide at their manifest, Eg. below Krexus-CAF
Code:
mkdir -p ~/CAF/.repo/local_manifests
Copy [COLOR="blue"]kiwi.xml[/COLOR] to ~/CAF/.repo/local_manifests [COLOR="Blue"]<= Remove qcom/common as Krexus-CAF already [URL="https://github.com/krexus-caf/manifest/blob/caf/default.xml#L101"]have it[/URL][/COLOR]
cd ~/CAF
repo init -u [url]https://github.com/krexus-caf/manifest.git[/url] -b caf
repo sync -fcj68 --force-sync --no-clone-bundle --no-tags
To build it, you can also create a script as below, name it krexus then simply sh krexus will start the build...
Code:
cd ~/CAF
prebuilts/misc/linux-x86/ccache/ccache -M 50G
export USE_CCACHE=1
export LC_ALL=C
source build/envsetup.sh
lunch [COLOR="blue"]krexus[/COLOR]_kiwi-userdebug
make -j4 otapackage 2>&1 | tee ~/CAF/compile.log
Every ROM mostly will have its own vendor tree formatting, for Krexus-CAF, you'll need to create a new krexus_kiwi.mk so refer to the example there on how to create one. Eg. For AOKP, AICP, PAC-ROM
Building other Custom ROMs
Before you start syncing other custom ROMs, delete everything at AOSP or CAF folder except the hidden source code .repo folder ( To display hidden folders press Ctrl + H )
Sometimes, syncing new ROMs will fail then you'll have to delete all the other files & folders at the hidden .repo folder EXCEPT the project-objects & projects folder, these two are the actual source code folder, a repo init & repo sync then all the files will be extracted out again.
If you've got a very large HDD & would like to build multiple ROMs all at the same time then you'll only need to copy the hidden .repo folder over, Eg. Copy ~/AOSP/.repo to ~/AOKP, ~/AICP, ~/PAC-ROM & syncing it will only take awhile since all are using the exact same google source...
Any other thing that i might have left out then google it yourself...
Good Luck & Happy Building !
Additional Tips
All custom ROMs manifest contains sources to build for almost all Android devices available while some of those sources are not needed for our 5x you can safely remove them by specifying at above kiwi.xml & it will save you not to download of more than 1GB of unused projects !
Code:
<[B]remove[/B]-project path="prebuilts/clang/[COLOR="blue"]darwin[/COLOR]-x86/host/3.6" name="platform/prebuilts/clang/darwin-x86/host/3.6" groups="pdk,darwin" clone-depth="1" remote="aosp" />
<[B]remove[/B]-project path="prebuilts/gcc/[COLOR="blue"]darwin[/COLOR]-x86/aarch64/aarch64-linux-android-4.9" name="platform/prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" groups="pdk,darwin,arm" clone-depth="1" remote="aosp" />
<[B]remove[/B]-project path="prebuilts/gcc/[COLOR="blue"]darwin[/COLOR]-x86/arm/arm-eabi-4.8" name="platform/prebuilts/gcc/darwin-x86/arm/arm-eabi-4.8" groups="pdk,darwin,arm" clone-depth="1" remote="aosp" />
<[B]remove[/B]-project path="prebuilts/gcc/[COLOR="blue"]darwin[/COLOR]-x86/arm/arm-linux-androideabi-4.9" name="platform/prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" groups="pdk,darwin,arm" clone-depth="1" remote="aosp" />
<[B]remove[/B]-project path="prebuilts/gcc/[COLOR="blue"]darwin[/COLOR]-x86/host/i686-apple-darwin-4.2.1" name="platform/prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1" groups="pdk,darwin" clone-depth="1" remote="aosp" />
<[B]remove[/B]-project path="prebuilts/gcc/[COLOR="blue"]darwin[/COLOR]-x86/mips/mips64el-linux-android-4.9" name="platform/prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" groups="pdk,darwin,mips,notdefault" clone-depth="1" remote="aosp" />
<[B]remove[/B]-project path="prebuilts/gcc/[COLOR="blue"]darwin[/COLOR]-x86/x86/x86_64-linux-android-4.9" name="platform/prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" groups="pdk,darwin,x86" clone-depth="1" remote="aosp" />
<[B]remove[/B]-project path="prebuilts/python/[COLOR="blue"]darwin-[/COLOR]x86/2.7.5" name="platform/prebuilts/python/darwin-x86/2.7.5" groups="darwin,pdk,pdk-cw-fs,pdk-fs" clone-depth="1" remote="aosp" />
If you don't own & build on apple PCs or laptops then you can remove all the darwin projects. Source here & here <= item 3
Code:
<[B]remove[/B]-project name="CyanogenMod/android_hardware_qcom_audio" />
<project path="hardware/qcom/audio/default" name="CyanogenMod/android_hardware_qcom_audio" remote="github" revision="cm-13.0" />
<project path="hardware/qcom/audio-caf/msm8916" name="CyanogenMod/android_hardware_qcom_audio" remote="github" revision="cm-13.0-caf-8916" />
<[B]remove[/B]-project name="CyanogenMod/android_hardware_qcom_display" />
<project path="hardware/qcom/display" name="CyanogenMod/android_hardware_qcom_display" remote="github" revision="cm-13.0" />
<project path="hardware/qcom/display-caf/msm8916" name="CyanogenMod/android_hardware_qcom_display" remote="github" revision="cm-13.0-caf-8916" />
<[B]remove[/B]-project name="CyanogenMod/android_hardware_qcom_media" />
<project path="hardware/qcom/media/default" name="CyanogenMod/android_hardware_qcom_media" remote="github" revision="cm-13.0" />
<project path="hardware/qcom/media-caf/msm8916" name="CyanogenMod/android_hardware_qcom_media" remote="github" revision="cm-13.0-caf-8916" />
Our 5x uses msm8939 which uses the same source as msm8916 so you can also safely remove all the other unused apq8084, msm8937, msm8952, msm8960, msm8974, msm8994, msm8996 projects with the above single remove-project then re-specify back the projects that you need. Source Ref
Code:
<[B]remove[/B]-project path="hardware/akm" name="CyanogenMod/android_hardware_akm" />
<[B]remove[/B]-project path="hardware/broadcom/libbt" name="CyanogenMod/android_hardware_broadcom_libbt" groups="pdk" />
<[B]remove[/B]-project path="hardware/broadcom/wlan" name="CyanogenMod/android_hardware_broadcom_wlan" groups="pdk,broadcom_wlan" />
<[B]remove[/B]-project path="hardware/intel/common/libmix" name="CyanogenMod/android_hardware_intel_common_libmix" groups="intel" />
<[B]remove[/B]-project path="hardware/intel/common/libva" name="CyanogenMod/android_hardware_intel_common_libva" groups="intel" />
<[B]remove[/B]-project path="hardware/intel/common/libwsbm" name="CyanogenMod/android_hardware_intel_common_libwsbm" groups="intel" />
<[B]remove[/B]-project path="hardware/intel/common/omx-components" name="CyanogenMod/android_hardware_intel_common_omx-components" groups="intel" />
<[B]remove[/B]-project path="hardware/intel/img/hwcomposer" name="CyanogenMod/android_hardware_intel_img_hwcomposer" groups="intel" />
<[B]remove[/B]-project path="hardware/intel/img/psb_headers" name="CyanogenMod/android_hardware_intel_img_psb_headers" groups="intel" />
<[B]remove[/B]-project path="hardware/intel/img/psb_video" name="CyanogenMod/android_hardware_intel_img_psb_video" groups="intel" />
<[B]remove[/B]-project path="hardware/invensense" name="CyanogenMod/android_hardware_invensense" groups="invensense" />
<[B]remove[/B]-project path="hardware/samsung_slsi/exynos5" name="CyanogenMod/android_hardware_samsung_slsi_exynos5" />
<[B]remove[/B]-project path="hardware/ti/omap4" name="CyanogenMod/android_hardware_ti_omap4" />
<[B]remove[/B]-project path="hardware/ti/omap4xxx" name="CyanogenMod/android_hardware_ti_omap4xxx" groups="omap4" />
<[B]remove[/B]-project path="hardware/ti/wlan" name="CyanogenMod/android_hardware_ti_wlan" />
<[B]remove[/B]-project path="hardware/ti/wpan" name="CyanogenMod/android_hardware_ti_wpan" />
<[B]remove[/B]-project path="hardware/intel/audio_media" name="platform/hardware/intel/audio_media" groups="intel" remote="aosp" />
<[B]remove[/B]-project path="hardware/intel/bootstub" name="platform/hardware/intel/bootstub" groups="intel" remote="aosp" />
<[B]remove[/B]-project path="hardware/intel/common/bd_prov" name="platform/hardware/intel/common/bd_prov" groups="intel" remote="aosp" />
<[B]remove[/B]-project path="hardware/intel/common/libstagefrighthw" name="platform/hardware/intel/common/libstagefrighthw" groups="intel" remote="aosp"/>
<[B]remove[/B]-project path="hardware/intel/common/utils" name="platform/hardware/intel/common/utils" groups="intel" remote="aosp" />
<[B]remove[/B]-project path="hardware/intel/common/wrs_omxil_core" name="platform/hardware/intel/common/wrs_omxil_core" groups="intel" remote="aosp" />
<[B]remove[/B]-project path="hardware/intel/sensors" name="platform/hardware/intel/sensors" groups="intel_sensors" remote="aosp" />
<[B]remove[/B]-project path="hardware/marvell/bt" name="platform/hardware/marvell/bt" groups="marvell_bt" remote="aosp" />
<[B]remove[/B]-project path="hardware/mediatek" name="platform/hardware/mediatek" groups="mediatek,mediatek_wear" remote="aosp" />
<[B]remove[/B]-project path="hardware/qcom/msm8960" name="platform/hardware/qcom/msm8960" groups="qcom_msm8960" remote="aosp" />
<[B]remove[/B]-project path="hardware/qcom/msm8994" name="platform/hardware/qcom/msm8994" groups="qcom_msm8994" remote="aosp" />
<[B]remove[/B]-project path="hardware/qcom/msm8x26" name="platform/hardware/qcom/msm8x26" groups="qcom_msm8x26" remote="aosp" />
<[B]remove[/B]-project path="hardware/qcom/msm8x27" name="platform/hardware/qcom/msm8x27" groups="qcom_msm8x27" remote="aosp" />
<[B]remove[/B]-project path="hardware/qcom/msm8x74" name="platform/hardware/qcom/msm8x74" groups="pdk,qcom_msm8x74" remote="aosp" />
<[B]remove[/B]-project path="hardware/qcom/msm8x84" name="platform/hardware/qcom/msm8x84" groups="qcom_msm8x84" remote="aosp" />
<[B]remove[/B]-project path="hardware/ti/omap3" name="platform/hardware/ti/omap3" groups="omap3" remote="aosp" />
<[B]remove[/B]-project path="hardware/ti/omap4-aah" name="platform/hardware/ti/omap4-aah" groups="omap4-aah" remote="aosp" />
Above are hardware not used on 5x, removing it will save you hours of downloading of these unused projects. ROMs are still buildable with these remove projects, there are still many projects not used that can be safely removed but i don't intend to waste my time on identifying every single one of them... :laugh:
Update 09 Sept 2016 - Everyone can also build their own ROMs
Old PC or laptop ? Slow internet connection, not a problem, gopinaidu77 has shared with me that he is able to build a ROM in just 25 minutes, rebuild a ROM after make clobber took just only 7 minutes ! Syncing any ROM source will only take 3 - 5 mins at 40 Mbps download speed !
Completely FOC, more info refer to here... :good:
Thanks mate. Let me start building the environment and will start this.
Sent from my HUAWEI KIW-L22 using XDA Labs
yuweng said:
Since many have pm & ask me how to build ROMs for kiwi & i have to repeat myself every time, as might as well once & for all, i post the info here...
Before you can build any other custom ROMs, you'll have to learn to build cm-13.0 referring to this Official Guide then you can move on to other ROMs, Thanks to crpalmer & BadDaemon... :good:
If you're a first time ROM Cooker then i strongly recommends BBQLinux bcos you don't have to setup the build environment, everything is already built-in, my guide here, Thanks to my Master Shifu codeworkx... :good:
There are only two types of Android sources, AOSP & CAF, all custom ROMs will use either one of them including cm... You'll only need two folders AOSP & CAF, syncing all custom ROMs to these same folder will cut the syncing time more than half ! AOSP manifest will have this line while CAF manifest will have this so sync it to the correct folder.
In actual fact, it doesn't really matter, both sources have different file names & you can actually sync it to the same folder but its best practice to have two separate folders for two separate sources.
kiwi.xml
To sync the sources, Eg. cm-13.0To build AOSP based custom ROMs, this Eg. cm-13.0, open a Terminal, copy the below & paste to itIf there is any build error then refer to the compile.log & start goggling for the fix !
For any other custom ROMs, refer to the guide at their manifest, Eg. below Krexus-CAFTo build it, you can also create a script as below, name it krexus then simply sh krexus will start the build... Every ROM mostly will have its own vendor tree formatting, for Krexus-CAF, you'll need to create a new krexus_kiwi.mk so refer to the example there on how to create one. Eg. For AOKP, AICP, PAC-ROM
Building other Custom ROMs
Before you start syncing other custom ROMs, delete everything at AOSP or CAF folder except the hidden source code .repo folder ( To display hidden folders press Ctrl + H )
Sometimes, syncing new ROMs will fail then you'll have to delete all the other files & folders at the hidden .repo folder EXCEPT the project-objects & projects folder, these two are the actual source code folder, a repo init & repo sync then all the files will be extracted out again.
If you've got a very large HDD & would like to build multiple ROMs all at the same time then you'll only need to copy the hidden .repo folder over, Eg. Copy ~/AOSP/.repo to ~/AOKP, ~/AICP, ~/PAC-ROM & syncing it will only take awhile since all are using the exact same google source...
Any other thing that i might have left out then google it yourself...
Good Luck & Happy Building !
Click to expand...
Click to collapse
Thank you
yuweng said:
Since many have pm & ask me how to build ROMs for kiwi & i have to repeat myself every time, as might as well once & for all, i post the info here...
Before you can build any other custom ROMs, you'll have to learn to build cm-13.0 referring to this Official Guide then you can move on to other ROMs, Thanks to crpalmer & BadDaemon... :good:
If you're a first time ROM Cooker then i strongly recommends BBQLinux bcos you don't have to setup the build environment, everything is already built-in, my guide here, Thanks to my Master Shifu codeworkx... :good:
There are only two types of Android sources, AOSP & CAF, all custom ROMs will use either one of them including cm... You'll only need two folders AOSP & CAF, syncing all custom ROMs to these same folder will cut the syncing time more than half ! AOSP manifest will have this line while CAF manifest will have this so sync it to the correct folder.
In actual fact, it doesn't really matter, both sources have different file names & you can actually sync it to the same folder but its best practice to have two separate folders for two separate sources.
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="CyanogenMod/android_device_huawei_kiwi" path="device/huawei/kiwi" remote="github" revision="cm-13.0" />
<project name="CyanogenMod/android_external_sony_boringssl-compat" path="external/sony/boringssl-compat" remote="github" revision="cm-13.0" />
<project name="CyanogenMod/android_external_stlport" path="external/stlport" remote="github" revision="cm-13.0" />
<project name="CyanogenMod/android_kernel_huawei_kiwi" path="kernel/huawei/kiwi" remote="github" revision="cm-13.0" />
<project name="TheMuppets/proprietary_vendor_huawei" path="vendor/huawei" remote="github" revision="cm-13.0" />
<project name="CyanogenMod/android_device_qcom_common" path="device/qcom/common" remote="github" revision="cm-13.0" />
</manifest>
kiwi.xml
To sync the sources, Eg. cm-13.0
Code:
mkdir -p ~/AOSP/.repo/local_manifests
repo init -u https://github.com/CyanogenMod/android.git -b cm-13.0
Copy [COLOR="Blue"]kiwi.xml[/COLOR] to ~/AOSP/.repo/local_manifests
repo sync -fc[COLOR="blue"]j64[/COLOR] --force-sync [COLOR="blue"]<= Depending on your ISP, this will use parallel threads & cut the downloading time by half. If error then lower it[/COLOR]
To build AOSP based custom ROMs, this Eg. cm-13.0, open a Terminal, copy the below & paste to it
Code:
cd ~/AOSP
prebuilts/misc/linux-x86/ccache/ccache -M 50G
export USE_CCACHE=1
export LC_ALL=C
source build/envsetup.sh
brunch kiwi 2>&1 | tee ~/AOSP/[COLOR="blue"]compile.log[/COLOR]
If there is any build error then refer to the compile.log & start goggling for the fix !
For any other custom ROMs, refer to the guide at their manifest, Eg. below Krexus-CAF
Code:
mkdir -p ~/CAF/.repo/local_manifests
Copy [COLOR="blue"]kiwi.xml[/COLOR] to ~/CAF/.repo/local_manifests [COLOR="Blue"]<= Remove qcom/common as Krexus-CAF already [URL="https://github.com/krexus-caf/manifest/blob/caf/default.xml#L101"]have it[/URL][/COLOR]
cd ~/CAF
repo init -u [url]https://github.com/krexus-caf/manifest.git[/url] -b caf
repo sync -fcj68 --force-sync --no-clone-bundle --no-tags
To build it, you can also create a script as below, name it krexus then simply sh krexus will start the build...
Code:
cd ~/CAF
prebuilts/misc/linux-x86/ccache/ccache -M 50G
export USE_CCACHE=1
export LC_ALL=C
source build/envsetup.sh
lunch [COLOR="blue"]krexus[/COLOR]_kiwi-userdebug
make -j4 otapackage 2>&1 | tee ~/CAF/compile.log
Every ROM mostly will have its own vendor tree formatting, for Krexus-CAF, you'll need to create a new krexus_kiwi.mk so refer to the example there on how to create one. Eg. For AOKP, AICP, PAC-ROM
Building other Custom ROMs
Before you start syncing other custom ROMs, delete everything at AOSP or CAF folder except the hidden source code .repo folder ( To display hidden folders press Ctrl + H )
Sometimes, syncing new ROMs will fail then you'll have to delete all the other files & folders at the hidden .repo folder EXCEPT the project-objects & projects folder, these two are the actual source code folder, a repo init & repo sync then all the files will be extracted out again.
If you've got a very large HDD & would like to build multiple ROMs all at the same time then you'll only need to copy the hidden .repo folder over, Eg. Copy ~/AOSP/.repo to ~/AOKP, ~/AICP, ~/PAC-ROM & syncing it will only take awhile since all are using the exact same google source...
Any other thing that i might have left out then google it yourself...
Good Luck & Happy Building !
Additional Tips
All custom ROMs manifest contains sources to build for almost all Android devices available while some of those sources are not needed for our 5x you can safely remove them by specifying at above kiwi.xml & it will save you not to download of more than 1GB of unused projects !
Code:
<[B]remove[/B]-project path="prebuilts/clang/[COLOR="blue"]darwin[/COLOR]-x86/host/3.6" name="platform/prebuilts/clang/darwin-x86/host/3.6" groups="pdk,darwin" clone-depth="1" remote="aosp" />
<[B]remove[/B]-project path="prebuilts/gcc/[COLOR="blue"]darwin[/COLOR]-x86/aarch64/aarch64-linux-android-4.9" name="platform/prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" groups="pdk,darwin,arm" clone-depth="1" remote="aosp" />
<[B]remove[/B]-project path="prebuilts/gcc/[COLOR="blue"]darwin[/COLOR]-x86/arm/arm-eabi-4.8" name="platform/prebuilts/gcc/darwin-x86/arm/arm-eabi-4.8" groups="pdk,darwin,arm" clone-depth="1" remote="aosp" />
<[B]remove[/B]-project path="prebuilts/gcc/[COLOR="blue"]darwin[/COLOR]-x86/arm/arm-linux-androideabi-4.9" name="platform/prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" groups="pdk,darwin,arm" clone-depth="1" remote="aosp" />
<[B]remove[/B]-project path="prebuilts/gcc/[COLOR="blue"]darwin[/COLOR]-x86/host/i686-apple-darwin-4.2.1" name="platform/prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1" groups="pdk,darwin" clone-depth="1" remote="aosp" />
<[B]remove[/B]-project path="prebuilts/gcc/[COLOR="blue"]darwin[/COLOR]-x86/mips/mips64el-linux-android-4.9" name="platform/prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" groups="pdk,darwin,mips,notdefault" clone-depth="1" remote="aosp" />
<[B]remove[/B]-project path="prebuilts/gcc/[COLOR="blue"]darwin[/COLOR]-x86/x86/x86_64-linux-android-4.9" name="platform/prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" groups="pdk,darwin,x86" clone-depth="1" remote="aosp" />
<[B]remove[/B]-project path="prebuilts/python/[COLOR="blue"]darwin-[/COLOR]x86/2.7.5" name="platform/prebuilts/python/darwin-x86/2.7.5" groups="darwin,pdk,pdk-cw-fs,pdk-fs" clone-depth="1" remote="aosp" />
If you don't own & build on apple PCs or laptops then you can remove all the darwin projects. Source here & here <= item 3
Code:
<[B]remove[/B]-project name="CyanogenMod/android_hardware_qcom_audio" />
<project path="hardware/qcom/audio/default" name="CyanogenMod/android_hardware_qcom_audio" remote="github" revision="cm-13.0" />
<project path="hardware/qcom/audio-caf/msm8916" name="CyanogenMod/android_hardware_qcom_audio" remote="github" revision="cm-13.0-caf-8916" />
<[B]remove[/B]-project name="CyanogenMod/android_hardware_qcom_display" />
<project path="hardware/qcom/display" name="CyanogenMod/android_hardware_qcom_display" remote="github" revision="cm-13.0" />
<project path="hardware/qcom/display-caf/msm8916" name="CyanogenMod/android_hardware_qcom_display" remote="github" revision="cm-13.0-caf-8916" />
<[B]remove[/B]-project name="CyanogenMod/android_hardware_qcom_media" />
<project path="hardware/qcom/media/default" name="CyanogenMod/android_hardware_qcom_media" remote="github" revision="cm-13.0" />
<project path="hardware/qcom/media-caf/msm8916" name="CyanogenMod/android_hardware_qcom_media" remote="github" revision="cm-13.0-caf-8916" />
Our 5x uses msm8939 which uses the same source as msm8916 so you can also safely remove all the other unused apq8084, msm8937, msm8952, msm8960, msm8974, msm8994, msm8996 projects with the above single remove-project then re-specify back the projects that you need. Source Ref
Code:
<[B]remove[/B]-project path="hardware/akm" name="CyanogenMod/android_hardware_akm" />
<[B]remove[/B]-project path="hardware/broadcom/libbt" name="CyanogenMod/android_hardware_broadcom_libbt" groups="pdk" />
<[B]remove[/B]-project path="hardware/broadcom/wlan" name="CyanogenMod/android_hardware_broadcom_wlan" groups="pdk,broadcom_wlan" />
<[B]remove[/B]-project path="hardware/intel/common/libmix" name="CyanogenMod/android_hardware_intel_common_libmix" groups="intel" />
<[B]remove[/B]-project path="hardware/intel/common/libva" name="CyanogenMod/android_hardware_intel_common_libva" groups="intel" />
<[B]remove[/B]-project path="hardware/intel/common/libwsbm" name="CyanogenMod/android_hardware_intel_common_libwsbm" groups="intel" />
<[B]remove[/B]-project path="hardware/intel/common/omx-components" name="CyanogenMod/android_hardware_intel_common_omx-components" groups="intel" />
<[B]remove[/B]-project path="hardware/intel/img/hwcomposer" name="CyanogenMod/android_hardware_intel_img_hwcomposer" groups="intel" />
<[B]remove[/B]-project path="hardware/intel/img/psb_headers" name="CyanogenMod/android_hardware_intel_img_psb_headers" groups="intel" />
<[B]remove[/B]-project path="hardware/intel/img/psb_video" name="CyanogenMod/android_hardware_intel_img_psb_video" groups="intel" />
<[B]remove[/B]-project path="hardware/invensense" name="CyanogenMod/android_hardware_invensense" groups="invensense" />
<[B]remove[/B]-project path="hardware/samsung_slsi/exynos5" name="CyanogenMod/android_hardware_samsung_slsi_exynos5" />
<[B]remove[/B]-project path="hardware/ti/omap4" name="CyanogenMod/android_hardware_ti_omap4" />
<[B]remove[/B]-project path="hardware/ti/omap4xxx" name="CyanogenMod/android_hardware_ti_omap4xxx" groups="omap4" />
<[B]remove[/B]-project path="hardware/ti/wlan" name="CyanogenMod/android_hardware_ti_wlan" />
<[B]remove[/B]-project path="hardware/ti/wpan" name="CyanogenMod/android_hardware_ti_wpan" />
<[B]remove[/B]-project path="hardware/intel/audio_media" name="platform/hardware/intel/audio_media" groups="intel" remote="aosp" />
<[B]remove[/B]-project path="hardware/intel/bootstub" name="platform/hardware/intel/bootstub" groups="intel" remote="aosp" />
<[B]remove[/B]-project path="hardware/intel/common/bd_prov" name="platform/hardware/intel/common/bd_prov" groups="intel" remote="aosp" />
<[B]remove[/B]-project path="hardware/intel/common/libstagefrighthw" name="platform/hardware/intel/common/libstagefrighthw" groups="intel" remote="aosp"/>
<[B]remove[/B]-project path="hardware/intel/common/utils" name="platform/hardware/intel/common/utils" groups="intel" remote="aosp" />
<[B]remove[/B]-project path="hardware/intel/common/wrs_omxil_core" name="platform/hardware/intel/common/wrs_omxil_core" groups="intel" remote="aosp" />
<[B]remove[/B]-project path="hardware/intel/sensors" name="platform/hardware/intel/sensors" groups="intel_sensors" remote="aosp" />
<[B]remove[/B]-project path="hardware/marvell/bt" name="platform/hardware/marvell/bt" groups="marvell_bt" remote="aosp" />
<[B]remove[/B]-project path="hardware/mediatek" name="platform/hardware/mediatek" groups="mediatek,mediatek_wear" remote="aosp" />
<[B]remove[/B]-project path="hardware/qcom/msm8960" name="platform/hardware/qcom/msm8960" groups="qcom_msm8960" remote="aosp" />
<[B]remove[/B]-project path="hardware/qcom/msm8994" name="platform/hardware/qcom/msm8994" groups="qcom_msm8994" remote="aosp" />
<[B]remove[/B]-project path="hardware/qcom/msm8x26" name="platform/hardware/qcom/msm8x26" groups="qcom_msm8x26" remote="aosp" />
<[B]remove[/B]-project path="hardware/qcom/msm8x27" name="platform/hardware/qcom/msm8x27" groups="qcom_msm8x27" remote="aosp" />
<[B]remove[/B]-project path="hardware/qcom/msm8x74" name="platform/hardware/qcom/msm8x74" groups="pdk,qcom_msm8x74" remote="aosp" />
<[B]remove[/B]-project path="hardware/qcom/msm8x84" name="platform/hardware/qcom/msm8x84" groups="qcom_msm8x84" remote="aosp" />
<[B]remove[/B]-project path="hardware/ti/omap3" name="platform/hardware/ti/omap3" groups="omap3" remote="aosp" />
<[B]remove[/B]-project path="hardware/ti/omap4-aah" name="platform/hardware/ti/omap4-aah" groups="omap4-aah" remote="aosp" />
Above are hardware not used on 5x, removing it will save you hours of downloading of these unused projects. ROMs are still buildable with these remove projects, there are still many projects not used that can be safely removed but i don't intend to waste my time on identifying every single one of them... :laugh:
Update 09 Sept 2016 - Everyone can also build their own ROMs
Old PC or laptop ? Slow internet connection, not a problem, gopinaidu77 has shared with me that he is able to build a ROM in just 25 minutes, rebuild a ROM after make clobber took just only 7 minutes ! Syncing any ROM source will only take 3 - 5 mins at 40 Mbps download speed !
Completely FOC, more info refer to here... :good:
Click to expand...
Click to collapse
Hi yuweng,
Thanks for such a thread. This is almost all knowledge in one place.
I am thinking of compiling my own ROM. Going through your thread.
Will be installing BBQ Linux very soon.
Good luck