Creating your CM ROM for Galaxy S plus - Galaxy S Plus I9001 Android Development

Credits:
Thanks to Arco, Realtyem and andres_a whose posts helped me to build the ROM from sources.
Most of the post is copied from the guide YardE's guide and a pdf whose author I could not find later. (Please let me know if I have missed somebody.)
*******************************************************
First get the build tools:
*******************************************************
1. Get the packages required for building the ROM.
On 10.04
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
sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
2. Download repo tool,
Code:
curl [url]https://dl-ssl.google.com/dl/googlesource/git-repo/repo[/url] > /tmp/repo
sudo mv /tmp/repo /usr/local/bin
export PATH=$PATH:/usr/local/bin
*******************************************************
Next: Get the source
*******************************************************
I have tried to build the source code from CyanogenMod for ICS version of Android and the device Samsung Galaxy S plus. (Already ported by Arco )
This example uses their repositories to download the code,
1. Get the android source code:
Code:
cd ~/work/cyanogenmod
repo init -u git://github.com/CyanogenMod/android.git -b ics
repo sync
The repo sync command takes some time which depends on your internet connection speed.
2. The above commands download the generic source code. For creating the ROM for the device Galaxy S Plus, we need to use the Arco's repositories.
3. Create a local_manifest.xml in ~/work/cyanogenmod/.repo as follows
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="arco" fetch="https://github.com/arco"/>
<project path="device/samsung/ariesve" name="android_device_samsung_ariesve" revision="ics" remote="arco"/>
<project path="kernel/ariesve" name="samsung-kernel-ariesve" remote="arco" revision="ics"/>
<project path="vendor/samsung/ariesve" name="android_vendor_samsung_ariesve" remote="arco" revision="ics"/>
<project path="frameworks/base" name="android_frameworks_base" remote="arco" revision="ics" />
<project path="kernel/msm7x30" name="samsung-kernel-msm7x30" remote="arco" revision="ics-2.6.35" />
</manifest>
4. Perform repo sync.
Code:
repo sync
*******************************************************
Building Kernel
*******************************************************
It is not necessary to build kernel – the one Arco have build is already located in ~/work/cyanogenmod/device/samsung/ariesve/prebuilt.
But if you still want to do that by our own, you should do the next thing: Download running kernel's config from your dvevice, then ungzip it and
save it as ~/work/cyanogenmod/kernel/ariesve/.config
Code:
adb pull /proc/config.gz
cat config.gz | gunzip > ~/work/cyanogenmod/kernel/ariesve/.config
rm config.gz
After that you should declare cross-compiler path variable:
Code:
export CCOMPILER=~/work/cyanogenmod/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
Next step is to run
Code:
make oldconfig
Feel free to modify config, for example in ncurses gui:
Code:
make menuconfig
When you're done just execute
Code:
make ARCH=arm CROSS_COMPILE=$CCOMPILER -j5
where -j5 is number of your CPU cores+1;
When compile is over, the resulting zImage will be located in ~/work/cyanogenmod/kernel/ariesve/arch/arm/boot
As mentioned before, you should place it into ~/work/cyanogenmod/device/samsung/ariesve/prebuilt
So when kernel is ready, it's time for the greatest thing:
*******************************************************
Building CyanogenMod 9
*******************************************************
So when all the sources are downloaded, and (optional) kernel is built
let's start to build the CM.
First of all, download prebuilds:
Code:
~/work/cyanogenmod/vendor/cm/get-prebuilts
If you skipped kernel build chapter, please, export CCOMPILER
variable as mentioned there.
Next, edit file: ~/work/cyanogenmod/vendor/samsung/ariesve/device-vendorblobs.mk
and change “ancora” to “ariesve” on lines 25-28
and file ~/work/cyanogenmod/device/samsung/ariesve/BoardConfig.mk
and change “ancora” to “ariesve” on line 132.
The final part is actually building:
Code:
cd ~/work/cyanogenmod
bash
source build/envsetup.sh
lunch full_ariesve-eng
I wrote “bash” in the list of commands because envsetup.sh script
doesn't support some other shells.
Run the make command.
*******************************************************
Build issues.
*******************************************************
1. If you face an issue due to OverlayHtc.h file not found as below:
Code:
Notice file: hardware/libhardware_legacy/NOTICE -- out/target/product/ariesve/obj/NOTICE_FILES/src//system/lib/libpower.so.txt
Copy: out/target/product/ariesve/obj/lib/libaudioalsa.so
Copy: out/target/product/ariesve/obj/lib/libcamera.
target thumb C++: camera.msm7x30 <= device/samsung/ariesve/camerahal/cameraHAL.cpp
device/samsung/ariesve/camerahal/cameraHAL.cpp:31:27: error: ui/OverlayHtc.h: No such file or directory
Notice file: hardware/qcom/display/libcopybit/NOTICE -- out/target/product/ariesve/obj/NOTICE_FILES/src//system/lib/hw/copybit.msm7x30.so.txt
device/samsung/ariesve/camerahal/cameraHAL.cpp: In function 'camera_memory_t* wrap_memory_data(priv_camera_device_t*, const android::sp<android::IMemory>&)':
device/samsung/ariesve/camerahal/cameraHAL.cpp:268: warning: format '%x' expects type 'unsigned int', but argument 4 has type 'ssize_t'
device/samsung/ariesve/camerahal/cameraHAL.cpp: In function 'int camera_set_preview_window(camera_device*, preview_stream_ops*)':
device/samsung/ariesve/camerahal/cameraHAL.cpp:488: error: invalid use of incomplete type 'struct android::eek:verlay'
device/samsung/ariesve/camerahal/CameraHardwareInterface.h:29: error: forward declaration of 'struct android::eek:verlay'
make: *** [out/target/product/ariesve/obj/SHARED_LIBRARIES/camera.msm7x30_intermediates/cameraHAL.o] Error 1
make: *** Waiting for unfinished jobs....
You need to get the fix by using following command:
Code:
cd ~/work/cyanogenmod/frameworks/base/ && git fetch [url]http://review.cyanogenmod.com/CyanogenMod/android_frameworks_base[/url] refs/changes/85/13285/8 && git cherry-pick FETCH_HEAD
(Thanks to the post on xda: http://forum.xda-developers.com/showthread.php?p=27475486#post27475486)
2. If you face an issue in compiling charger.c with following error:
Code:
prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: out/target/product/crespo/obj/EXECUTABLES/charger_intermediates/charger.o: in function main:system/core/charger/charger.c:958: error: undefined reference to 'gr_font_size'
prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: out/target/product/crespo/obj/EXECUTABLES/charger_intermediates/charger.o: in function main:system/core/charger/charger.c:991: error: undefined reference to 'gr_fb_blank'
prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: out/target/product/crespo/obj/EXECUTABLES/charger_intermediates/charger.o: in function main:system/core/charger/charger.c:699: error: undefined reference to 'gr_fb_blank'
prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: out/target/product/crespo/obj/EXECUTABLES/charger_intermediates/charger.o: in function main:system/core/charger/charger.c:732: error: undefined reference to 'gr_fb_blank'
If you aren't afraid of doing some editing, grab the function "gr_fb_blank"(line 377) and "gr_font_size" (line 210) out of bootable/recovery/minui/graphics.c and paste them into device/samsung/crespo/graphics.c (at the end of the file, and at line 158, respectively) for now. Tested booting, and tested system off charging and both seem to be ok. I'm not gonna look at logs since nothing is acting wonky lol.
(Thanks to the post on xda: http://forum.xda-developers.com/showthread.php?t=1399035&page=676)
==================================================
Ref. threads:
http://forum.xda-developers.com/showthread.php?t=1650615

Nice, but I don't recommend to use the outdated framework/base repo by arco.
Instead I suggest to use the CM repo and do the following.
Needs to be done once
Code:
cd frameworks/base
git remote add arco git://github.com/arco/android_frameworks_base.git
git fetch arco
Needs to be done after every repo sync
Code:
git cherry-pick 748a5e5f70858e5f5f77c65b7c185ec980f821f5
git cherry-pick f6d9aa858cbcabb29c1f941e2e8f0672360985ba
git cherry-pick 1a3e62ddae28b3f871ced2c1d40a18c7d8a6ea7d
So you can use the CM9 repo with the necessary changes made by arco.
EDIT:
And the CODE-Tags will make your post better readable.

I think that unknown pdf file tutorial is of vpukin..
Sent from my GT-I9001 using Tapatalk 2

also this isnt needed to synch in manifest.xml
<project path="vendor/samsung/ancora" name="android_vendor_samsung_ancora" remote="arco" revision="ics"/>
Click to expand...
Click to collapse
it isnt i9001 related

texten said:
also this isnt needed to synch in manifest.xml
it isnt i9001 related
Click to expand...
Click to collapse
right.
"ancora" is Galaxy W I8150, arco's phone
...but...where is the sense of this thread? only a cm9 tutorial for...build another ones?

Good guide , But why is there a $ in front of each command ? , when i enter them it gives error
PS: You can surround all codes with CODE Tags

Thanks for suggestion.
I would update the guide with code tags.

what packages I need to download for ubuntu 12.04?[finded]

hemansan said:
2. Download repo tool,
Code:
curl [url]https://dl-ssl.google.com/dl/googlesource/git-repo/repo[/url] > /tmp/repo
sudo mv /tmp/repo /usr/local/bin
export PATH=$PATH:/usr/local/bin
Click to expand...
Click to collapse
one command is missing
Code:
sudo chmod +x /usr/local/bin/repo

Related

[GUIDE] Building CM9 for i9003 from sources

Well I haven't seen any thread about it and wanted to share it.
Here you can follow this guide to build your own nightly and change what you want.
NOTES:
This is the way I did here, it could not be the best nor the correct way but it worked for me.
If you think that you could do something here in a better way, or something is wrong let me know and I will update this thread according.
Im following the original CM9 template here: http://wiki.cyanogenmod.com/wiki/Template:Build_from_source_(CM9)
I know there is the build.sh script from teamhacksung but haven't used here, If you think it can simplify this guide in any way I'll update it according.
I have done this on Ubuntu 12.04 - 64bits.
*** Of course you are the only responsible to follow this and flash anything to your phone.
There are chances to damage your phone or loosing very important data such as /efs partition, like the latests CWM updates did, its fixed aparently atm.
I recommend always have a backup of /efs partition. ***
Click to expand...
Click to collapse
IMPORTANT: Don't run any shell command logged on as root (sudo su / sudo -i), if any command asks for root permissions just do "sudo command"
1.- Prepare the Build Environment
Click to expand...
Click to collapse
NOTE: These steps only need to be performed once. If the build environment is already prepared, skip to Copy proprietary files.
Install the Android SDK
Install the Build Packages
For 64-bit systems:
Open a new terminal and type the following:
Code:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
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 oracle-java7-installer pngcrush schedtool tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
Create the Directories
You will need to set up some directories in your build environment.
To create them:
Code:
mkdir -p ~/bin
mkdir -p ~/android/system
Install the Repository
Enter the following to download make executable the "repo" binary:
Code:
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo
NOTE: You may need to reboot / restart the terminal for these changes to take effect.
Now enter the following to initialize the repository:
Code:
cd ~/android/system/
repo init -u git://github.com/CyanogenMod/android.git -b ics
repo sync -j16
Where 16 is the number of jobs to do simultaneously, this will download 5~10gb so take a break.
2.- Sync Relevant Repositories and Download Propietary Files
Click to expand...
Click to collapse
NOTE: This only needs to be done the first time after installing the repository.
By default, CyanogenMod 9 only syncs the core android repositories and none of the device or kernel trees to save both bandwidth and time.
To sync the necessary components for the device you need to do the following:
Start a new terminal and change dir where your repo is actually installed, in this case ~/android/system
Code:
cd ~/android/system
Then, you will need to make some changes on a hidden folder called .repo, do the following in your terminal:
Code:
cd .repo
gedit local_manifest.xml
That will create a new file, you need to copy and paste this:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="teamhacksung/android_device_samsung_galaxysl" path="device/samsung/galaxysl" remote="github" revision="ics" />
<project name="teamhacksung/android_vendor_samsung_galaxysl" path="vendor/samsung/galaxysl" remote="github" revision="ics" />
<project name="teamhacksung/android_kernel_samsung_latona" path="kernel/samsung/latona" remote="github" revision="ics-samsung-2.6.35.7" />
<project name="teamhacksung/buildscripts" path="buildscripts" remote="github" revision="ics">
<copyfile dest="build.sh" src="samsung/build.sh" />
</project>
<project name="CyanogenMod/android_packages_apps_SamsungServiceMode" path="packages/apps/SamsungServiceMode" remote="github" />
</manifest>
Click to expand...
Click to collapse
Save and close. You should have now a file called local_manifest.xml in ~/android/system/.repo/
Then, back in the terminal you must edit another .xml to fix an issue related with DHCP to make wifi work properly.
Code:
cd manifests
gedit default.xml
That will open the file to edit, then you should look (Ctrl+F) for this string: "dhcp" and replace the whole line (starts with "<" and and finishes with ">") for this one:
Code:
<project path="external/dhcpcd" name="CyanogenMod/android_external_dhcpcd" remote="github" revision="gb-release-7.2"/>
Save and close. Its almost done. Now you need to sync with the latest changes we did to the manifests, that will download the kernel, device, vendor, etc from teamhacksung repo:
Code:
cd ~/android/system
repo sync -j16
NOTE: If some hardware isn't functioning properly, you may need to run the above command again for updated proprietary files.
3.- Download Prebuilts
Click to expand...
Click to collapse
Download Prebuilts needed by the build:
Code:
~/android/system/vendor/cm/get-prebuilts
4.- Building CyanogenMod
Click to expand...
Click to collapse
Check for updates
First, check for updates in the source:
Code:
cd ~/android/system/
repo sync
Configure Build & Compile
First of all you must compile the kernel and replace the prebuilt one and modules with the new one (it's outdated).
Fortunately for you, just need to run a script and it's done automatically:
Code:
cd ~/android/system/kernel/samsung/latona
./build.sh
Now, the environment must be configured for the build process and then begin compilation for the Samsung Galaxy SL (i9003).
Code:
. build/envsetup.sh
brunch galaxysl
5.- Install
Click to expand...
Click to collapse
1.- Copy your .zip file from ~/android/system/out/target/product/galaxysl/cm-9-XXXXX-UNOFFICIAL-galaxysl.zip to the root of the SD card.
Optional: Download Google Apps for CyanogenMod 9 and place it on the root of the SD card.
2.- Flash both of these .zip files from recovery.
Credits to:
dhiru1602 and teamhacksung
For helping me to build mine flawlessly:
ganeshbiyer
loSconosciuto
alfrix > recommended me to use sun/oracle jdk (oracle-java7-installer) instead of openjdk (openjdk-7-jdk).
If you wish to use OpenJDK instead of Oracle JDK replace oracle-java7-installer with openjdk-7-jdk when Installing build packages stage.
If you want to manually install Sun-java jdk. follow the attached text in the zip. (Linux)
Could u build cm10 from sources please? Musn't be difficult...
luiseteyo said:
Could u build cm10 from sources please? Musn't be difficult...
Click to expand...
Click to collapse
Yes, sure you could build cm10 in the same way, just instead of:
Code:
repo init -u git://github.com/CyanogenMod/android.git -b ics
do:
Code:
repo init -u git://github.com/CyanogenMod/android.git -b jellybean
It won't boot of course, it need some changes in the kernel/ramdisk (and more) to work and you're using ics one.
Code:
<project name="teamhacksung/android_kernel_samsung_latona" path="kernel/samsung/latona" remote="github" revision="ics-samsung-2.6.35.7" />
It will look something like that when the jellybean kernel source is released:
Code:
<project name="teamhacksung/android_kernel_samsung_latona" path="kernel/samsung/latona" remote="github" revision="jellybean-samsung-2.6.35.7" />
<project name="teamhacksung/android_kernel_samsung_latona" path="kernel/samsung/latona" remote="github" revision="jb-samsung-2.6.35.7" />
Just wait for dhiru1602 to release his cm10 rom in the next days.
At least you can download cm10 base for now.
When I create the local_manifest.xml file in the .repo and fire up repo sync, I get a github duplicate remote error. I placed the file in the manifests folder of the .repo directory and the repo sync continues. Will this make the downloaded files incomplete? Can't test if the downloaded source can compile since my ISP limits download to 3GB per day.
jan3586 said:
When I create the local_manifest.xml file in the .repo and fire up repo sync, I get a github duplicate remote error. I placed the file in the manifests folder of the .repo directory and the repo sync continues. Will this make the downloaded files incomplete? Can't test if the downloaded source can compile since my ISP limits download to 3GB per day.
Click to expand...
Click to collapse
If there's a duplicate, repo tells you the exact project specified twice (once in local_manifest.xml and once in default.xml).
You need to find what you specified twice and correct it. If your local_manifest.xml looks like the one posted by frapeti, there shouldn't be problems, unless you did some changes into your default.xml, other than the dhcp one.
If you place your local_manifest.xml in .repo/manifest/, it's like as if it doesn't exist, so repo won't download anything of what there's specified in it.
jan3586 said:
When I create the local_manifest.xml file in the .repo and fire up repo sync, I get a github duplicate remote error. I placed the file in the manifests folder of the .repo directory and the repo sync continues. Will this make the downloaded files incomplete? Can't test if the downloaded source can compile since my ISP limits download to 3GB per day.
Click to expand...
Click to collapse
This is because remote definition for github is defined in default.xml and local_manifest.xml. The repo sync will continue for projects from default.xml but not for the ones in local_manifest.xml.
1. Try removing the remote definition for github from local_manifest.xml
2. Or rename all the references of github to something like githb.
That should solve the problem.
p.s. I did the second.
I am having a problem here...
I am trying to initilialize repo:
It gives me an error:
Code:
bash: /home/chinu/bin/repo: Permission denied
Then i tried to fork the repo first & then tried to initialize it:
Code:
repo init -u git://github.com/chinmayjade/platform_manifest.git -b jb
Still i am getting the same error.
EDIT:
Solved. Was a stupid error

Bulding any rom from source for your android device.

I'm using HTC One S and LiquidSmooth as examples. It should work for all devices. Nexus should be a little different story.
Do you know about a ROM that it's not builded for our beloved One S? Do you want to port it for our device? This easy guide will help you.
Requirements:
A One S.
A relatively recent computer (Linux, OS X, or Windows) w/a reasonable amount of RAM and about 35 GB of free storage. The less RAM you have, the longer the build will take. Using SSDs results in faster builds than traditional hard drives.
A micro USB cable.
A decent Internet connection & reliable electricity
Some familiarity with basic Android operation and terminology. It would help if you’ve installed custom roms on other devices and are familiar with what a recovery image such as ClockworkMod is, for example. It may also be useful to know some basic command line concepts such as cd for “change directory”, the concept of directory hierarchies, that in Linux they are separated by /, etc.
​HERE IS THE GUIDE.
Installing Build Packages
Open the terminal and type: (for 64-bit&32-bit)
Code:
sudo apt-get install bison build-essential curl flex git-core gnupg gperf libesd0-dev libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop openjdk-6-jdk openjdk-6-jre pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev
In addition to the above, for 64-bit systems:
Code:
sudo apt-get install g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev
Creating Directories
In order to start building ROMs you'll need to create some directories
Code:
mkdir -p ~/bin
mkdir -p ~/yourworkingdirectory
Installing the REPO command
Enter the following to download the "repo" binary:
Code:
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
Now lets give this the proper permissions to make it runnable:
Code:
chmod a+x ~/bin/repo
Put the ~/bin directory in your path of execution
Make sure that the ~/bin directory you just created is in your path of execution so that you can easily run the repo command even when you're not in ~/bin.
Code:
export PATH=${PATH}:~/bin
Initialize the source repository
Code:
cd yourworkingdirectory
Now you'll need the repo init related to the rom you'd like to build. Here i will insert some of the I used. Anyway to find this you can go the rom's github and search for the manifest (android or platform-manifest).Just choose the right branch.
Code:
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
repo init -u git://github.com/LiquidSmooth/android.git -b kitkat
repo init -u git://github.com/SlimRoms/platform_manifest.git -b kk4.4-caf
repo init -u git://github.com/ChameleonOS/android.git -b kitkat-staging
Download the source code
This will download all the source code to your computer.Prepare to wait a long time while the source code downloads.
Code:
repo sync
Download device,kernel and vendor tree for Liquid
We will use CM ones. Thanks a lot.
Basically we need to add some projects to the download list. To do this we'll need a local_manifest.
Go in the .repo folder in your working directory(it's an hidden folder press ctrl+h). Create a new folder called "local manifests" then double click on it. Now you'll have to create a roomservice.xml file for the most of the ROMs and a slim_manifest.xml for SlimRoms, it's the same thing just the name it's different.
Open this file and paste this inside:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="github"
fetch="git://github.com/" />
<project name="CyanogenMod/android_device_htc_ville" path="device/htc/ville" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_device_htc_s4-common" path="device/htc/s4-common" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_device_htc_msm8960-common" path="device/htc/msm8960-common" remote="github" revision="cm-11.0" />
<project name="CyanogenMod/android_kernel_htc_msm8960" path="kernel/htc/msm8960" remote="github" revision="cm-11.0" />
<project name="TheMuppets/proprietary_vendor_htc" path="vendor/htc" remote="github" revision="cm-11.0" />
</manifest>
Now give another:
Code:
repo sync
and wait.
Do some modifications to the .mk files
Since we are using CM device tree we need to modify them for the choosen ROM.
Go into the device folder(device/htc/ville) and do some modifications. I will explain you what i mean using LiquidSmooth as example.
1) Create a new file called vendorsetup.sh . Open it and inside you'll have to write a script to add it to the lunch list.
Code:
add_lunch_combo liquid_ville-userdebug
You can choose if you want an userdebug version of the rom or an eng one just by writing eng instead of userdebug.
2) Now rename cm.mk into liquid.mk(for other ROMs this file should be renamed in a different way. Use an existing device tree to see the correct naming.)
3) Open the .mk file. You'll find something like this:
Code:
# Release name
PRODUCT_RELEASE_NAME := ville
# Boot animation
TARGET_SCREEN_HEIGHT := 960
TARGET_SCREEN_WIDTH := 540
# Inherit some common CM stuff.
$(call inherit-product, vendor/cm/config/common_full_phone.mk)
# Inherit device configuration
$(call inherit-product, device/htc/ville/device_ville.mk)
# Device naming
PRODUCT_DEVICE := ville
PRODUCT_NAME := cm_ville
PRODUCT_BRAND := htc
PRODUCT_MODEL := One S
PRODUCT_MANUFACTURER := HTC
# Set build fingerprint / ID / Product Name ect.
PRODUCT_BUILD_PROP_OVERRIDES += PRODUCT_NAME=htc_ville BUILD_FINGERPRINT=htc_europe/ville/ville:4.1.1/JRO03C/128506.8:user/release-keys PRIVATE_BUILD
You need to modify some things to make it buildable:
Code:
# Inherit some common CM stuff.
$(call inherit-product, vendor/cm/config/common_full_phone.mk)
becomes:
Code:
# Inherit some common LiquidSmooth stuff.
$(call inherit-product, vendor/liquid/config/common_phone.mk)
To understand the changes you'll have to go in the vendor folder searching the rom specific vendor and open the config folder to see what .mk file you need.
This:
Code:
PRODUCT_NAME := cm_ville
becomes:
Code:
PRODUCT_NAME := liquid_ville
4) Now rename cm.dependencies in liquid.dependencies(SlimRoms does not require this step for unsupported devices.)
Start the build
Code:
source build/envsetup.sh
If you created the vendorsetup.sh in the right way you will read the ville folder.
Code:
lunch
Now you have to choose the number near the ville in the list of the supported devices.
If you have done all in the correct way in your terminal you'll see a page like this:
View attachment 2470228
Build
After lunching you have to start the build using the right command:
For liquid:
Code:
time mka liquid
For others:
Code:
make bacon
make
brunch devicename
Wait some time till the build ends hopefully with no errors.​
Credits: http://wiki.cyanogenmod.org/w/Build_for_ville
and all the experience i got in this 2 months of building.
For most ROMS you'll have some overlays errors.
Just go in the overlay folder linked in the error and open config.xml. Just delete the lines in the error or search in the folder history the commit that you have to revert.
To revert a commit:
Code:
cd intheinteressedfolder
git revert thenumberofthecommit
Here is a screenshot of the what the number/name of the commit is:
View attachment 2470242
Enjoy.
Edited the title. And added a repo init!

[GUIDE]How to build a rom from scratch/source for the Micromax Canvas 2 aka a110.

Hello guys. I have seen a lot of activity here. But I found almost no one knew about source building in this community. Another reason for posting is for people who want to build cm11 from scratch themselves. Our computer crashes most of the time.
Here starts the fun :
Prerequisites
Quote:
HTML:
1. Ubuntu 13.10 / BBQLINUX (I personally use this)
2. patience...lots and lots of patience.
1. Installing ubuntu 13.10.
Quote:
This can be done in 3 ways and I am not gonna cover it all.
- along with windows ,i.e dual boot
- in virtualbox within windows
- as a windows application installation with "wubi" installer
For starting user i think second option, i.e installing in virtualbox is best.
here's starting tutorials
http://www.youtube.com/watch?v=tDDRFiwHujg
NOTE - you should have atleast 100 Gb partion for virtualbox.
2. Setting up building environment.
PHP:
THIS ALL BELOW STEPS ARE NOT NEEDED IF YOU HAVE INSTALLED BBQLINUX, BUILDING ENVIRONMENT IS SET IN BBQLINUX BY DEFAULT. IT WORKS OUT-OF-THE-BOX.
Initializing a fresh Android Build Environment in Ubuntu 13.10 sucks, right? The instructions at the AOSP page are outdated and inaccurate. Near as I can tell, they try to have you install 2 JDKs, the first one not even being the correct link for Saucy Salamander, and the second being OpenJDK. Which might work. But I dunno about all that, I’d rather have Oracle’s official stamp when it comes to building for Android.
Currently most of the guides are up to 12.04 LTS, which is fine and dandy, but being on the cutting edge is nice too.
This guide applies to all variations of Ubuntu 13.10 Saucy Salamander 64 bit. Do not use the 32 Bit version. Also, PAY CLOSE ATTENTION when to use “sudo” and when to not. It can make things funky if you do something as root that you shouldn’t.
Much thanks goes out to Google, ProTekk, Canonical, and everyone else that I read a random paragraph here and snippet there.
First lets perform an update:
HTML:
sudo apt-get update
After this Restart ubuntu.
Okay, let’s set up the correct JDK.
Many of you probably have some kind of wrong Java installed unless you’re starting with a fresh Ubuntu base, and even then maybe.
Let’s get rid of that. Copy and paste this into a Terminal window:
Code:
PHP:
sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*
Follow the instructions to remove OpenJDK.
If you must keep it, it’s possible. But I’m not going to tell you how to do it here. I don’t want any chance of confusion or mistake.
Now copy and paste the following into the Terminal:
Code:
PHP:
sudo add-apt-repository ppa:webupd8team/java
This will add the correct PPA to your system for updated builds of Java 6 JDK that are compatible with 13.10.
No more unrecognized Java version errors! And it will update automatically with the rest of your system.
Next, we actually need to install the package. More copy-paste:
Code:
PHP:
sudo apt-get update && sudo apt-get install oracle-java6-installer
Follow the on-screen instructions. You have to Accept the Licensing Agreement to complete the install. Hopefully no human centipede clauses.
Let’s make sure the correct version of Java is activated, run the following Terminal command:
Code:
PHP:
java -version
You should see something like the following:
Code:
PHP:
java version “1.6.0_45″ Java(TM) SE Runtime Environment (build 1.6.0_45-b06) Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01, mixed mode)
Ok, back to a fresh Terminal prompt. Time for installing the guts to build stuff in Ubuntu:
Code:
PHP:
sudo apt-get install git-core gnupg ccache lzop flex bison gperf build-essential zip curl zlib1g-dev zlib1g-dev:i386 libc6-dev lib32ncurses5 lib32z1 lib32bz2-1.0 lib32ncurses5-dev x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 lib32z-dev libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc readline-common libreadline6-dev libreadline6 lib32readline-gplv2-dev libncurses5-dev lib32readline5 lib32readline6 libreadline-dev libreadline6-dev:i386 libreadline6:i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev libsdl1.2-dev libesd0-dev squashfs-tools pngcrush schedtool libwxgtk2.8-dev python
When that is done installing, run the following command in your Terminal window:
Code:
PHP:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
That’s it on the package side of things.
You guessed it, time for more Terminal. This really is the easiest way, seriously. And it’s totally worth it when you’re basking in the glory of a bunch of people on XDA.
The binary for a program called “repo” will let you talk to git servers and download all that precious source code. That second part after the && allows it to be executable:
Code:
PHP:
mkdir ~/bin && curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo && chmod a+x ~/bin/repo
Use your favorite text editor to open ~/.bashrc
I like nano:
Code:
PHP:
sudo nano ~/.bashrc
At the very bottom, add the following line:
Code:
PHP:
export PATH=~/bin:$PATH
Save it. In nano that would be Ctrl-O and then Enter. Then Ctrl-X to exit back to a prompt. Restart bash:
Code:
PHP:
source ~/.bashrc
Set up android sdk
Refer this guide. Go only to sdk section.
http://forum.xda-developers.com/showthread.php?t=2302780
3. Downloading source
Open terminal
To initialize your local repository using the your Rom trees, use a command like this:
HTML:
mkdir cm11
cd cm11
Repositories of famous roms. Choose one:
HTML:
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
repo init -u git://github.com/AOKP/platform_manifest.git -b kitkat
repo init -u git://github.com/ResurrectionRemix/platform_manifest.git -b kitkat1
Of course you have to make rom specific changes as they are not supported yet. But will be in near FUTURE. I Will highlight rom specific changes in second post.
Create local_manifest.xml in .repo folder.
PHP:
cd .repo
nano local_manifest.xml
Paste following into the terminal
PHP:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project path="device/micromax/a110" name="Ateekujjawal/android_device_micromax_a110" remote="github" revision="cm-11.0" />
<project path="kernel/micromax/a110" name="Ateekujjawal/android_kernel_micromax_a110" remote="github" revision="cm-11.0" />
</manifest>
Save it. In nano that would be Ctrl-O and then Enter. Then Ctrl-X to exit back to a prompt. Restart bash.
Then to sync up:
HTML:
repo sync -j#
# is number of jobs you want to give for your downloading source. I use 2.
Download gonna be huge. Approx 12-15 GB.
So its gonna take while depending upon your internet connection.
You may get errors while downloading, like
HTML:
Sync exited due to fetch errors
Just restart download by
HTML:
repo sync
Let's extract those vendors.
HTML:
cd cm11
cd /device/micromax/a110
./extract-files.sh
Starting Building process
PHP:
. build/envsetup.sh && time brunch a110 -j#
Again # is meant for No. of CPU cores you have.
Building gonna take time, depending upon your computer configuration.
Any errors, post here.
I will try my best to solve problems .
Start building your own CM11...
Any suggestion welcome.
Sent from my GT-I9082 using Tapatalk Pro.
R1
Sent from my GT-I9082 using Tapatalk Pro.
R2
Sent from my GT-I9082 using Tapatalk Pro.
R3
Sent from my GT-I9082 using Tapatalk Pro.
Great also add to get android SDK...
We forgot that remember....??
Also add ther android touch files ..
Without that adb won't work...
More mistakes ...edit it through buddy...
Avenger4droid said:
Great also add to get android SDK...
We forgot that remember....??
Also add ther android touch files ..
Without that adb won't work...
More mistakes ...edit it through buddy...
Click to expand...
Click to collapse
If error comes, then no. Don't tell me. Plus in that link the error fixation is there. At least hit Thanks.
Sent from my GT-I9082 using Tapatalk Pro.
wow. gud one. bookmarked for future reference
So now are you going yo build ROM or we have to build by our self....????
talhask said:
So now are you going yo build ROM or we have to build by our self....????
Click to expand...
Click to collapse
Patience bro. We are building. But you know our pc crashed. So it is gonna take time. If you want to build any other rom, then you can follow this guide. I wouldn't say it is noob friendly but it's a Kickstart.
Sent from my GT-I9082 using Tapatalk Pro.
okay on my way to to download source again new expected date of release is 24 th of march...
hope this time no bad thing happens...
now those wanna try this method i say wait for a couple days as till then i will release and check wheteher its working or not...
:good::good:
regards..
i can see if i can find a good build server then it is easy

[Noob Friendly] How to build CM 12.1 for Flamingo

Hello guys,
Soo there was thread made by Vynikal but its some kind of dead and outdated for cm 12.1, i managed to make everything work on my pc and want to help everyone who has problems with building CM12.1 for Flamingo.
ATTENTION!:I or xda-dev are not responsible for any damage to your device,eyes or life, made by hapiness of having cm12.1 built
Requirements:
-Ubuntu 64bit: Tuto
-Stable internet connection, no mobile connection(its not stable enough)
-About 100GB of disk space(if you screw something up you will have some in reserve)
-All fastboot,flashboot and adb drivers installed
-Beefy pc
Lets begin:​We will start with preparations
Lets install JDK.
Code:
sudo apt-get update
then:
Code:
sudo apt-get install openjdk-7-jdk
Now you will need to install build packages, they are needed for building CyanogenMod.
Type this in terminal:
Code:
sudo apt-get install bison build-essential curl flex git gnupg gperf libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop openjdk-7-jdk openjdk-7-jre pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev
You will also need USB access for extracting blobs.
Code:
sudo nautilus
This will open file manager as root.
Now you must go through several steps:
1.Click Computer in the left tray of file manager - you will see some folders like: etc
2.Open Folders etc/udev/rules.d/
3.Create new document and name it: 51-android.rules
4.You can close file manager now.
If you done that 4 steps now we can continue. lets fill up that file.
Copy paste that command to console:
Code:
wget -S -O - http://source.android.com/source/51-android.rules | sed "s/<username>/$USER/" | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules
and change <username> to your ubuntu username. in my case it will look like this:
Code:
wget -S -O - http://source.android.com/source/51-android.rules | sed "s/dominik/$USER/" | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules
Now we need to create some directories:
Code:
mkdir -p ~/bin
mkdir -p ~/android/system
Last thing before loong downloading - repo command:
In terminal type:
Code:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
Now you will need to open .bashrc with gedit its in home (you will see it if you enable Show hidden files or CTRL+H)
add that at the end of file:
Code:
export PATH=~/bin:$PATH
Now open .profile with gedit same as .bashrc its in default direction
paste this code to that file:
Code:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Initializing the repo:​Type in terminal:
Code:
cd ~/android/system
repo init -u git://github.com/CyanogenMod/android.git -b cm-12.1
Finally add local_manifest directory and copy-paste file included in attachment(thanks almighty Vynikal)
Code:
Code:
mkdir -p ~/android/system/.repo/local_manifests
And dont-click-the-red-button like command:
Code:
repo sync
And one more command to repair some duplicates in sepolicy
Code:
cd external/sepolicy
git revert 79ff523ac99b339914ccaa754e068072d64da542
Now i have Good and Bad news:
Good: we've done with the preparations.
Bad: this is not the end :silly:
Exporting blobs:​Its kinda tricky now, you will need hiper super duper stock rom and USB debugging toggled on + you need to connect your device to ubuntu, just go to devices/usb and chose your phone (its up in the vm tray)
First make sure that you allowed usb debugging(that window that will pop up in phone)
Once again open .profile and copy-paste this:
Code:
if [ -d "<path-to-sdk>/platform-tools" ] ; then
PATH="<path-to-sdk>/platform-tools:$PATH"
fi
And run that command in terminal to install adb and fastboot drivers.
Code:
sudo apt-get install android-tools-adb android-tools-fastboot
Now enter that commands in terminal:
Code:
cd ~/android/system/device/sony/flamingo
./extract-files.sh
Setting up and preparing our files to building
Code:
cd ~/android/system
. build/envsetup.sh
breakfast flamingo
Build
Code:
brunch flamingo
============================================+#@#+============================================
Thanks to:
[email protected] for creating his tuto for cm12 and manifests
-visi0nary He helped me the most with several problems that we will fix in next post
-Others that i forgot sorry and send me PM (will add you)
pc:
i5 4460
2x g.skill ripjawsx cl7 1600mhz 4gb
took about 2h with ccache
Troubleshooting​Any problems? just post logs and wait for response.
When i was building that CM i had some problems with paths like i said in first post it gave me something like this
Code:
find: `dummy': No such file or directory
find: `../../../../../../external/hamcrest/src': No such file or directory
find: `../../../../../../external/junit/src/org': No such file or directory
find: `../../../../../../external/hamcrest/src': No such file or directory
make: Entering directory `/home/dominik/android/system'
build/core/copy_headers.mk:15: warning: overriding commands for target `/home/dominik/android/system/out/target/product/flamingo/obj/include/qcom/display/copybit.h'
build/core/copy_headers.mk:15: warning: ignoring old commands for target `/home/dominik/android/system/out/target/product/flamingo/obj/include/qcom/display/copybit.h'
build/core/copy_headers.mk:15: warning: overriding commands for target `/home/dominik/android/system/out/target/product/flamingo/obj/include/qcom/display/copybit_priv.h'
build/core/copy_headers.mk:15: warning: ignoring old commands for target `/home/dominik/android/system/out/target/product/flamingo/obj/include/qcom/display/copybit_priv.h'
build/core/Makefile:46: warning: overriding commands for target `/home/dominik/android/system/out/target/product/flamingo/system/bin/wcnss_service'
build/core/base_rules.mk:550: warning: ignoring old commands for target `/home/dominik/android/system/out/target/product/flamingo/system/bin/wcnss_service'
PRODUCT_COPY_FILES vendor/sony/msm8226-common/proprietary/vendor/etc/audio_effects.conf:system/vendor/etc/audio_effects.conf ignored.
No private recovery resources for TARGET_DEVICE flamingo
make -C kernel/sony/msm8974 O=/home/dominik/android/system/out/target/product/flamingo/obj/KERNEL_OBJ ARCH=arm CROSS_COMPILE="/home/dominik/android/system/prebuilts/misc/linux-x86/ccache/ccache arm-eabi-" VARIANT_DEFCONFIG= SELINUX_DEFCONFIG= aosp_yukon_flamingo_defconfig
make[1]: Entering directory `/home/dominik/android/system/kernel/sony/msm8974'
target SharedLib: libm (/home/dominik/android/system/out/target/product/flamingo/obj/SHARED_LIBRARIES/libm_intermediates/LINKED/libm.so)
[B][COLOR="Red"]target SharedLib: libstdc++ (/home/dominik/android/system/out/target/product/flamingo/obj/SHARED_LIBRARIES/libstdc++_intermediates/LINKED/libstdc++.so)
/home/dominik/android/system/out/target/product/flamingo/obj/ETC/file_contexts_intermediates/file_contexts: Multiple different specifications for /sys/devices/virtual/graphics/fb0/rgb (ubject_r:livedisplay_sysfs:s0 and ubject_r:sysfs_display:s0).
Error loading context file from /home/dominik/android/system/out/target/product/flamingo/obj/ETC/file_contexts_intermediates/file_contexts[/COLOR][/B]
make: *** [/home/dominik/android/system/out/target/product/flamingo/obj/ETC/file_contexts_intermediates/file_contexts] Error 4
make: *** Deleting file `/home/dominik/android/system/out/target/product/flamingo/obj/ETC/file_contexts_intermediates/file_contexts'
make: *** Waiting for unfinished jobs....
GEN /home/dominik/android/system/out/target/product/flamingo/obj/KERNEL_OBJ/Makefile
#
# configuration written to .config
#
make[1]: Leaving directory `/home/dominik/android/system/kernel/sony/msm8974'
make: Leaving directory `/home/dominik/android/system'
#### make failed to build some targets (02:17 (mm:ss)) ####
i marked that place. visi0nary told me that 2 files has same paths that interfere each other and doesnt allow to continue with build. soo we found solution, but idk if its my fault or its some typo or other kind of mistake
Fix:
1. Go to android/system/device/sony/msm8226-common/sepolicy
2. Open file_contexts in gedit and add # before last line
it should look like this:
Code:
# Trim Area daemon
/dev/socket/tad u:object_r:tad_socket:s0
# CPU governor controls
/dev/socket/mpdecision(/.*)? u:object_r:mpctl_socket:s0
/dev/socket/mpctl u:object_r:mpctl_socket:s0
/dev/pn547 u:object_r:nfc_device:s0
/dev/block/platform/msm_sdcc\.1/by-name/modemst1 u:object_r:modem_efs_partition_device:s0
/dev/block/platform/msm_sdcc\.1/by-name/modemst2 u:object_r:modem_efs_partition_device:s0
/dev/block/platform/msm_sdcc\.1/by-name/fsg u:object_r:modem_efs_partition_device:s0
/dev/block/platform/msm_sdcc\.1/by-name/TA u:object_r:trim_area_partition_device:s0
/data/system/default_values u:object_r:mpctl_data_file:s0
/system/bin/sct_service u:object_r:sct_exec:s0
/system/bin/tad_static u:object_r:tad_exec:s0
/system/bin/ta_qmi_service u:object_r:ta_qmi_exec:s0
/system/bin/thermanager u:object_r:thermanager_exec:s0
#/sys/devices/virtual/graphics/fb0/rgb -- u:object_r:sysfs_display:s0
for actual moment cm 12.1 dont work at all
Woah, it's been a long time since I stopped visiting this forum.
Your tut is kinda good, but I can't tell if something has changed in the past.
Actually those blobs you are extracting should be located in this repo, which is also downloaded through local_manifests, so maybe extracting them again is useless.
Bad luck, this device feels abandoned since the begining.
But hey, does it boot? If yes, progress has been made :cyclops:
Vynikal said:
Woah, it's been a long time since I stopped visiting this forum.
Your tut is kinda good, but I can't tell if something has changed in the past.
Actually those blobs you are extracting should be located in this repo, which is also downloaded through local_manifests, so maybe extracting them again is useless.
Bad luck, this device feels abandoned since the begining.
But hey, does it boot? If yes, progress has been made :cyclops:
Click to expand...
Click to collapse
nope dont boot at all at any build
and yeah they should be downloaded with it but somehow when i was compiling it there was error that prevented from building it, after extracting that blobs(something might be missing) everyhing went ok
ps. sorry that i used your thread without permission
MasterDomino said:
nope dont boot at all at any build
and yeah they should be downloaded with it but somehow when i was compiling it there was error that prevented from building it, after extracting that blobs(something might be missing) everyhing went ok
ps. sorry that i used your thread without permission
Click to expand...
Click to collapse
No worries, I have no plans on this forum. My E3 is broken, beaten and scarred. And with Firefox OS installed.
I was always wondering why the hell no CM12 build boots. I guess I won't know anytime soon.
Vynikal said:
No worries, I have no plans on this forum. My E3 is broken, beaten and scarred. And with Firefox OS installed.
I was always wondering why the hell no CM12 build boots. I guess I won't know anytime soon.
Click to expand...
Click to collapse
me and visi0nary found out it's propably fstab because adb not even toggles, its propably problem with mounting :/
Is this will work for all varian?
useone07 said:
Is this will work for all varian?
Click to expand...
Click to collapse
propably not because it doesnt work for my wariant(selinux or fstab problem ) cm 12 works perfectly but on D2203, idk about other wariants.

[GUIDE CM14.1] How to build your own CyanogenMod 14.1 ROM from sources for GT-i9505

Make your 'own' Nougat-ROM today!
Thank you note: Thank you to the whole CM-Team for bringing up-to-date-Android to so many devices.
Overview
I. Preparation
II. Installation of the required packages
III. The sources
IV. Building the ROM
I. Preparation
Things you need for building:
A computer
An internet connection
An open mind
Time
Patience
First of all, you need a running up-to-date Ubuntu/Linux system. I am using Debian Stretch (testing) 64-bit.
Use the terminal to make the steps. A terminal window can be opened by pressing Ctrl+Alt+T. Every single command for the terminal is marked with a $ sign. Just paste every command (without the $ sign) to your terminal window and there shouldn't be any problem.
IMPORTANT: INSTALL EVERYTHING AS A NORMAL USER. DON'T INSTALL AS ROOT!
II. Installation of the required packages (Debian Stretch (testing) 64-bit)
For both 32-bit & 64-bit systems, you'll need:
Code:
$ sudo apt-get install bison build-essential curl flex \
git gnupg gperf libesd0-dev liblz4-tool \
libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils \
lzop maven openjdk-7-jdk pngcrush schedtool \
squashfs-tools xsltproc zip zlib1g-dev
In addition to the above, for 64-bit systems, get these:
Code:
$ sudo apt-get install g++-multilib gcc-multilib \
lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev
For Ubuntu 15.10 (wily) and newer, substitute:
lib32readline-gplv2-dev -> lib32readline6-dev
For Ubuntu 16.04 (xenial) and newer, substitute (additionally see java notes below):
libwxgtk2.8-dev -> libwxgtk3.0-dev
openjdk-7-jdk -> openjdk-8-jdk
Java versions: Different versions of CyanogenMod require different versions of the JDK (Java Development Kit):
CyanogenMod 7 - 9: Sun/Oracle Java SE 1.6
CyanogenMod 10.1: Sun/Oracle Java SE 1.6 or 1.7
CyanogenMod 10.2 - 11.0: Sun/Oracle Java SE 1.6 or 1.7 (OpenJDK 1.7 works fine, but the build system will display a warning)
CyanogenMod 12.0 - 13.0: OpenJDK 1.7 (see note about OpenJDK 1.8 below)
CyanogenMod 14.1: OpenJDK 1.8
Ubuntu 16.04 (Xenial Xerus) or newer and OpenJDK: Since OpenJDK 1.7 was removed from the official Ubuntu repositories, you have a couple options:
Obtain OpenJDK 1.7 from the openjdk-r PPA
Enable experimental OpenJDK 1.8 support in CyanogenMod 13.0 (not available in earlier version). To enable OpenJDK 1.8 support, add this line to your $HOME/.bashrc file:
Code:
export EXPERIMENTAL_USE_JAVA8=true
III. The sources
You will need to set up some directories in your build environment.
To create them:
Code:
$ mkdir -p ~/bin
$ mkdir -p ~/android/system
Install the repo command
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
Put the ~/bin directory in your path of execution
In recent versions of Ubuntu, ~/bin should already be in your PATH. You can check this by opening ~/.profile with a text editor and verifying the following code exists (add it if it is missing):
Code:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Time to initialize the CyanogenMod source repository
Enter the following to initialize the repository:
Note: Make sure the cm branch entered here is the one you wish to build and is supported on your device.
Code:
$ cd ~/android/system/
$ repo init -u https://github.com/CyanogenMod/android.git -b cm-14.1
Download the source code
To start the download of all the source code to your computer:
Code:
$ repo sync
The CM manifests include a sensible default configuration for repo, which we strongly suggest you use (i.e. don't add any options to sync). For reference, our default values are -j4 and -c. The -j4 part means that there will be four simultaneous threads/connections. If you experience problems syncing, you can lower this to -j3 or -j2. -c will ask repo to pull in only the current branch, instead of the entire CM history.
Prepare to wait a long time while the source code downloads.
IV. Building the ROM
Prepare the device-specific code
Code:
$ source build/envsetup.sh
$ breakfast jfltexx
Turn on caching to speed up build
You can speed up subsequent builds by adding
Code:
export USE_CCACHE=1
to your ~/.bashrc file. Then, specify the amount of disk space to dedicate to ccache by typing this from the top of your Android tree:
Code:
prebuilts/misc/linux-x86/ccache/ccache -M 50G
Start the build
Time to start building! So now type:
Code:
$ croot
$ brunch jfltexx
Happy building!
If you are familiar with your first build & GitHub, feel free to use the cm_build_script.
Code:
$ git clone https://github.com/BenJule/cm_build_scripts.git
Contributor
syphyr
BenJule
Can do this with i9515
Sent from my GT-I9505 using Tapatalk
Is this for I-9515 too or is it not?
salem.k.salem said:
Can do this with i9515
Sent from my GT-I9505 using Tapatalk
Click to expand...
Click to collapse
Mario472 said:
Is this for I-9515 too or is it not?
Click to expand...
Click to collapse
Qualcomm only unless stated otherwise.
He just made a guide for people who don't want to wait for developers or people whom are looking to start building CM from source. Great guide, I had done similar while using the Moto G3. Thanks for this.
Sent from my GT-I9505 using XDA-Developers mobile app
christopherrrg said:
Qualcomm only unless stated otherwise.
He just made a guide for people who don't want to wait for developers or people whom are looking to start building CM from source. Great guide, I had done similar while using the Moto G3. Thanks for this.
Sent from my GT-I9505 using XDA-Developers mobile app
Click to expand...
Click to collapse
I now and i want to learn about it
And descover it
You should put this on xda chef section. Also you should tell how to get the right repo in manifest sync by checking GitHub branches. Nice guide.
---------- Post added at 06:06 PM ---------- Previous post was at 06:04 PM ----------
Mario472 said:
Is this for I-9515 too or is it not?
Click to expand...
Click to collapse
Similar, you need to add a local manifest with jfvelte's device tree. Here is it https://github.com/jfvelte-dev
Mario472 said:
Is this for I-9515 too or is it not?
Click to expand...
Click to collapse
for GT-i9505
In your case, you can replace the device ID in ./repo/local_manifests/your_device.xml
Greetings
BenLue
I keep getting
Code:
Communication error with Jack server (56). Try 'jack-diagnose'
build/core/java.mk:730: recipe for target '/home/dovi/android/out/target/common/obj/JAVA_LIBRARIES/core-all_intermediates/with-local/classes.dex' failed
make: *** [/home/dovi/android/out/target/common/obj/JAVA_LIBRARIES/core-all_intermediates/with-local/classes.dex] Error 41
#### make failed to build some targets (01:34:46 (hh:mm:ss)) ####
..what do I do?
DroidKing18 said:
I keep getting
Code:
Communication error with Jack server (56). Try 'jack-diagnose'
build/core/java.mk:730: recipe for target '/home/dovi/android/out/target/common/obj/JAVA_LIBRARIES/core-all_intermediates/with-local/classes.dex' failed
make: *** [/home/dovi/android/out/target/common/obj/JAVA_LIBRARIES/core-all_intermediates/with-local/classes.dex] Error 41
#### make failed to build some targets (01:34:46 (hh:mm:ss)) ####
..what do I do?
Click to expand...
Click to collapse
post more of the log. But probably need to allocate more memory for jack / reduce parallel compilations
last post here:
http://stackoverflow.com/questions/...lding-the-android-source-code-on-ubuntu-15-10
Ran into another error here:
Code:
make: *** No rule to make target '/home/dovi/android/out/target/common/obj/JAVA_LIBRARIES/org.apache.http.legacy_intermediates/classes.dex.toc', needed by '/home/dovi/android/out/target/common/obj/APPS/Development_intermediates/with-local/classes.dex'. Stop.
make: *** Waiting for unfinished jobs....
Anyone know a fix?
BenLue said:
Make your 'own' Nougat-ROM today!
Thank you note: Thank you to the whole CM-Team for bringing up-to-date-Android to so many devices.
Overview
I. Preparation
II. Installation of the required packages
III. The sources
IV. Building the ROM
I. Preparation
Things you need for building:
A computer
An internet connection
An open mind
Time
Patience
First of all, you need a running up-to-date Ubuntu/Linux system. I am using Debian Stretch (testing) 64-bit.
Use the terminal to make the steps. A terminal window can be opened by pressing Ctrl+Alt+T. Every single command for the terminal is marked with a $ sign. Just paste every command (without the $ sign) to your terminal window and there shouldn't be any problem.
can't do like this with windows?? any guide or idea??
thanks.
Click to expand...
Click to collapse
Mario472 said:
Is this for I-9515 too or is it not?
Click to expand...
Click to collapse
9515 is Jfvelte, correct? If yes you must modified your roomservice.xml
Example for Jfvelte
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="jfvelte-dev/android_device_samsung_jfvelte" path="device/samsung/jfvelte" remote="github" />
<project name="LineageOS/android_device_samsung_jf-common" path="device/samsung/jf-common" remote="github" />
<project name="LineageOS/android_device_qcom_common" path="device/qcom/common" remote="github" />
<project name="LineageOS/android_device_samsung_qcom-common" path="device/samsung/qcom-common" remote="github" />
<project name="LineageOS/android_external_stlport" path="external/stlport" remote="github" />
<project name="jfvelte-dev/android_kernel_samsung_jf" path="kernel/samsung/jf" remote="github" />
<project name="LineageOS/android_hardware_samsung" path="hardware/samsung" remote="github" />
<project name="LineageOS/android_packages_resources_devicesettings" path="packages/resources/devicesettings" remote="github" />
<project name="TheMuppets/proprietary_vendor_samsung" path="vendor/samsung" remote="github" />
<project name="TheMuppets/proprietary_vendor_qcom_binaries" path="vendor/qcom/binaries" />
</manifest>
Greetings
androidloveRs3104 said:
BenLue said:
Make your 'own' Nougat-ROM today!
Thank you note: Thank you to the whole CM-Team for bringing up-to-date-Android to so many devices.
Overview
I. Preparation
II. Installation of the required packages
III. The sources
IV. Building the ROM
I. Preparation
Things you need for building:
A computer
An internet connection
An open mind
Time
Patience
First of all, you need a running up-to-date Ubuntu/Linux system. I am using Debian Stretch (testing) 64-bit.
Use the terminal to make the steps. A terminal window can be opened by pressing Ctrl+Alt+T. Every single command for the terminal is marked with a $ sign. Just paste every command (without the $ sign) to your terminal window and there shouldn't be any problem.
can't do like this with windows?? any guide or idea??
thanks.
Click to expand...
Click to collapse
Install vmware or virtualbox!
Greetings
Click to expand...
Click to collapse
androidloveRs3104 said:
BenLue said:
Make your 'own' Nougat-ROM today!
Thank you note: Thank you to the whole CM-Team for bringing up-to-date-Android to so many devices.
Overview
I. Preparation
II. Installation of the required packages
III. The sources
IV. Building the ROM
I. Preparation
Things you need for building:
A computer
An internet connection
An open mind
Time
Patience
First of all, you need a running up-to-date Ubuntu/Linux system. I am using Debian Stretch (testing) 64-bit.
Use the terminal to make the steps. A terminal window can be opened by pressing Ctrl+Alt+T. Every single command for the terminal is marked with a $ sign. Just paste every command (without the $ sign) to your terminal window and there shouldn't be any problem.
can't do like this with windows?? any guide or idea??
thanks.
Click to expand...
Click to collapse
A better option is dualboot
Sent from my I9195I using Tapatalk
Click to expand...
Click to collapse
Doctor_Titi said:
Hello!
Thanks for your tutorial!
So, when i did
Code:
croot
, i got this message:
Code:
[email protected] ~/android/system $ croot
No command 'croot' found, did you mean:
Command 'chroot' from package 'coreutils' (main)
Command 'root' from package 'root-system-bin' (universe)
Command 'proot' from package 'proot' (universe)
croot: command not found
[email protected] ~/android/system $
Any idea?
Click to expand...
Click to collapse
Prepare the device
Code:
$ source build/envsetup.sh
$ breakfast seed(seed only exemple)
Ready Compile
Code:
$ croot
$ brunch seed(seed only exemple)
good luck :good:
Hello, I am compiling a Android 7 based ROM for my phone and after 4 hours of compilation it gives "out of memory error" and "try increasing the heap size".
I increased my heapsize by using " java -Xmx3072m" but still its showing the same error. My system specs are Core i3 peocessor and 6gb ram and using Ubuntu.
Can anyone please help me out ?
Suvam Mondal said:
Hello, I am compiling a Android 7 based ROM for my phone and after 4 hours of compilation it gives "out of memory error" and "try increasing the heap size".
I increased my heapsize by using " java -Xmx3072m" but still its showing the same error. My system specs are Core i3 peocessor and 6gb ram and using Ubuntu.
Can anyone please help me out ?
Click to expand...
Click to collapse
Try editing your jack setup file and reducing instances to compile to 2 or 1 from 4. I can't remember exact names as I'm not on Linux right now..
My java xmx is set at 6gb and i only have 2 instances set... your 6bg of ram may be the weak link here. Try xmx at 4500m
What size of a swap partition do you have? You may need to increase this too.
Buff99 said:
Try editing your jack setup file and reducing instances to compile to 2 or 1 from 4. I can't remember exact names as I'm not on Linux right now..
My java xmx is set at 6gb and i only have 2 instances set... your 6bg of ram may be the weak link here. Try xmx at 4500m
What size of a swap partition do you have? You may need to increase this too.
Click to expand...
Click to collapse
My swap partition is of 12gb
Suvam Mondal said:
My swap partition is of 12gb
Click to expand...
Click to collapse
12gb is more than enough.
try reducing your instances to 1 and leave mem at 3gb and see if that works.

Categories

Resources