• Introducing XDA Computing: Discussion zones for Hardware, Software, and more!    Check it out!

[HOW TO] Beginners Guide to Android ROM Development

Search This thread

isidromxz

Inactive Recognized Developer
Feb 13, 2007
242
958
Denver
This tread is not monitored or updated any more use for reference only

mqpx.jpg

Started this tutorial in the HTC HD2-Nand forum, I think maybe someone
can find it useful:)


Who is this tutorial for?
  • Absolute Beginners like me :)
  • People with little or no programming skills

This is a very basic tutorial!!

Step one: Setting up the Android kitchen

bachelorcookingcartoon.jpg



First you will need to set up dsixda's android kitchen
(All credit for the kitchen to dsixda's)


Go to dsixda's thread for a list of supported devices.
Here is a summary of the installation process
( I recommend you read the tread first)

1. Before you do anything install the java jdk(find it in dsixda's thread)
2. Download and extract the cygwin_packages.zip provided by dsixda on third post
3. Run the set up(make sure there is no previous cygwin installation)
4. Follow the kitchen read me txt!!!
5) local package directory *must* be the path to the cygwin_packages folder that you just extracted
unledwkc.png

6) when it shows all the package names, go to the top and select "all <-> default" until it changes to "all <-> install" (you must click on the arrows)
unti1led.png

7. Run the cygwin at least once and close, now you will see a folder inside the cygwin installation like this: Home\your user name\

8. Download the kitchen and extract to the home\your user name\
9. Rename the dsixda-android-kitchen-*** folder to just "kitchen"
10. Now your ready to run the kitchen type:
Code:
cd kitchen(enter)
./menu(enter)
unledzno.png

11. If you did things right you should see this:
unledxwb.png

congratulations!!
Step Two: Setting up a working folder
1. First our folder structure should look like this:
Code:
cygwin folder/home/your user name/kitchen
2. Inside the kitchen it should look like this:
unledmlb.png

3. Now we need a rom to work on, for this tutorial i will use my own rom but you can use any hd2 rom. Place the original rom zip in the original_update folder inside the kitchen.
4.run the cygwin.exe again type:
Code:
cd kitchen(enter)
./menu(enter)
5.now enter option 1, enter again. You should see your rom listed, choose and enter
6.you will be asked about changing the working folders name, at this point it makes no difference so just continue.
7.you will be asked to convert to update-scrip do it and continue
8. Now you can view the roms info
9. congratulations you have a working folder!!!
unledzfr.png

Step Three :change/modify/update!

First I will be covering basic changes you can make to your rom, later I will be adding more helpful hints.

Adding/removing applications
1. Go to the working folder where you extracted your rom, inside you will find:
unled1gew.png
or
unledgcn.png

2. Then go to "system/app" inside this folder you will find all the rom applications(apks) you may also find some in the data folder if your rom has this folder.
3. Copy, replace, and change any app(apk) be carefull if you dont know what the apk is do not delete!!
4. Congrats you have modified a rom, if your ready and want to see if it worked skip to step four to buil rom from working folder.


Adding new boot animation
1. Just replace the bootanimation.zip located in "workingfolder/system/media" with the boot animation of your choice.
here is a sample of my bootanimation to try.
unledtar.png


Edit the gps script for your country/location
1. In the workingfolder/system/etc/ you will find a file named gps.conf, you can
edit this file with notepad++ or even word.
2. using the right gps script in this file can speed up gps lock, you can
find some from angeldeath, download extract and replace the gps.conf.
unledslz.png


Changing the default wallpaper
1. Be very careful doing this, do not edit,delete or modify an apk without knowing what it is or does.not all things are as simple as copy and paste.
2. go to the workingfolder/system/framework/
3. Install 7zip and open the framework-res.apk
4. With in the framework-res.apk with 7zip go to "res/drawable-hdpi/" and look for the default_wallpaper.jpg. You can extract modify and replace with new one.
5. Make sure its the same file format and image dimensions.(in some roms you can also modify the default_lock_wallpaper.jpg)
unledkbe.png

MMS Fix for T-mobile
1. *I Have only tested this on MIUI Roms*
2. Go to "workingfolder/system/app"
3. Find MMS.apk
4. Right click and open with 7zip
unledimk.png

5.Inside mms.apk go to "rex/xml/"
6.replace the "mms_config.xml" with this "mms_config.xml"
unledymbc.png

modifying build.prop

"build.prop" is a file that contains various system-vital "parameters"
Some can be modified with little risk, some can cause havoc. So Please do this Carefully!!!!!!


1. Locate the file "workingfolder/system/"
2. Open with notepad++
unledbli.png


There is several simple changes that can be done, I will start with some and add more later.

LCD Density
1. If you dont know anything about this topic Here is some info to get started
2.Locate this line inside the build.prop "ro.sf.lcd_density=240"
unledjfy.png

3.The only value you will modify is the "240" to your preference.
unledpbb.png


Difference is simple and visible!

Update Kernel From update.zip
Note that it's not always as easy as copy and paste

1. Extract you kernel_update.zip
2. Copy and replace the extracted files to the corresponding folders inside your finished ROM
3.Start with the boot folder
unledgra.png

3. Than the system folder (there might be some libs and modules associated with the rom)
unledoph.png

4. Another helpful hint is to open the updater-script
to see if your kernel requires you to delete anything for the kernel to work correctly.

sample script:
Code:
delete("/system/ppp");



-there are several other options provided by dsixda's android kitchen for that I recomend you go to the tread and read.

Step Four: repackage the rom

Now that you have made some changes it's time to test!!
1. Run the kitchen and enter option 99 - "biuld rom from working folder"
2. Choose mgldr or clk
3. I recommend that you go with all default options until you get more experience with the kitchen.
4. When its all done you will find a folder inside "cygwin/home/yousername/kitchen" called output_zip
5. Inside the folder is your new rom ready to be flashed and tested!!!
unledwxh.png

UPDATER-SCRIPT
Thanks to user langthang for a great updater-script guide.
Download it HERE

I had a couple of request on how to get custom txt during the ROM installation in CWM,
the updater-script basically tells CWM what steps to take during the installation(flashing rom).
If you don't have any experience please don't edit anything other than what is in this simple tutorial.

1.First once you have your Rom ready in .zip format, Open with 7zip
2.Go to META-INF/com/google/android
3.Extract the updater-scrip file
4.Open with Notepad++
5.Any text that would appear during the CWM install should be in this format :
Code:
ui_print("Put your text in HERE");
Here is the requested 3d MIUI LOGO for example:
Code:
ui_print("");
ui_print("");
ui_print("");
ui_print("");
ui_print("");
ui_print("     ___                     ___                ");
ui_print("    /__/\\       ___         /__/\\       ___     ");
ui_print("   |  |::\\     /  /\\        \\  \\:\\     /  /\\    ");
ui_print("   |  |:|:\\   /  /:/         \\  \\:\\   /  /:/    ");
ui_print(" __|__|:|\\:\\ /__/::\\     ___  \\  \\:\\ /__/::\\    ");
ui_print("/__/::::| \\:\\\\__\\/\\:\\__ /__/\\  \\__\\:\\\\__\\/\\:\\__ ");
ui_print("\\  \\:\\~~\\__\\/   \\  \\:\\/\\\\  \\:\\ /  /:/   \\  \\:\\/\\");
ui_print(" \\  \\:\\          \\__\\::/ \\  \\:\\  /:/     \\__\\::/");
ui_print("  \\  \\:\\         /__/:/   \\  \\:\\/:/      /__/:/ ");
ui_print("   \\  \\:\\        \\__\\/     \\  \\::/       \\__\\/  ");
ui_print("    \\__\\/                   \\__\\/               ");
ui_print(" ");
ui_print(" ");
ui_print(" ");
ui_print(" ");
ui_print(" ");
6.Add your text start at top and save,
then replace with new updater-scrip
unledofd.png

congratulations!!


There is allot more that I did not cover, didn't even scratch the surface.
This was not intended for porting roms or any mayor scripting, this wont help you
with writing drivers, kernels, libs etc. Just tried to make it as simple as possible for
beginners like me, so we can understand the amount of work devs go through.
Please! please! before you release any Rom, test and test again!!!!!!


Like I said this was Originally for the HD2 so use at your own discretion!!
(original thread)



Just want to thank XDA Forums for giving us this space to play learn and share.
 
Last edited:

threestripebrand

Senior Member
Mar 7, 2011
1,188
144
Boiling Springs,NC
Great thread and tut! couldn't be better timing since dsixda is taking a break. anyway im having a little trouble with something im working on. i can get past the boot animation to the lock screen, and i can see the data kicking in and then before anything really gets going, it reboots. thats as far as i have gotten. heres my recovery log.
http://pastebin.com/GeXmphrt

seems to me like its not mounting the system or something of that nature. And I'm pretty green to all this if you couldn't tell lol.
this is a port by the way. thanks again for this thread!
 
Last edited:

civer

New member
Mar 3, 2011
2
1
Surabaya
hey guys any body can help me
i install cygwin_packages.zip with tutorial in page one but i get the problem in step 6, on the top root I see No Packages Found and I can't get directory user name in Home directory "home\your user name\".

and when I run cygwin the command prompt can't open and just show fleeting

so please.... help me
 
Last edited:
  • Like
Reactions: A L I

Diesel321

Senior Member
Sep 25, 2011
299
28
Lexington
Samsung Galaxy A71 5G
I tried the cygwin process first and had issues so I used the ubuntu installation and got it installed. But being such a beginner at it all its hard to find step by step instructions like this. I may try the cygwin set up again so I can follow this thread unoess someone knows of something similar to this but using ubuntu
 
  • Like
Reactions: A L I

chetan_mohanty

Senior Member
Jul 4, 2011
1,033
357
Bangalore
I have a few queries

i)How do i add jkay support?Only copying the files from an extracted Jkay zip to relevant folders will do?

ii)How do i change Kernel.It was suggested to replace the kernel in the BASE(Does this refer to the zImage present inside the base folder).Didnt get it what is base?I have for the time being unpacked bootimage and put the zimage from siyahkernel inside it.

iii)How do i add multi csc.I downloaded a multi csc package from intratech's thread.Unzipped it ,but cant extract csc file from cache.img.Can i just copy a folder CSC(with multi csc) from another ROM and keep it in system folder?Will that help?
 
  • Like
Reactions: A L I

chuan1311

Senior Member
Jun 29, 2011
276
54
drogheda
cygwin dont want to show up...everything is installed..and is not work...and where i have to put folder with name kithcen because in cygwin show my that is now find...please help me...
 
Last edited:
  • Like
Reactions: A L I
W

Wolf Pup

Guest
Stupid Question........
But can I use a Linux Distro like Ubuntu or Backtrack instead of Cygwin?
I'm guessing that you can, but I'm a newb so I don't know anything!
 

Blacked-Out-Cobra

Senior Member
Nov 27, 2011
143
38
at my house
Great explanation except every time I make a rom I get error in CWM
Tip: it doesnt matter if I mod it or not as soon as it changes update-script it screws the rom up I think and I even converted it back to updater-script when I was done still nothing.

It was an ICS rom if that helps.
 
  • Like
Reactions: niilartey1

lowsmoke

Member
Oct 9, 2011
6
1
Thanks for tutorial. Im using the kitchen, its works great.
I build one rom from stock rom 2.1, and another from a custom rom i found on here.

But i have a problem after i flash the rom, it wont boot. Noone of the roms i cook will boot on my device. It just stops at SE logo.
I have the u20i, x10 mini pro.

Anyone know what im doing wrong? Thanks :)
 
  • Like
Reactions: A L I

Top Liked Posts

  • There are no posts matching your filters.
  • 620
    This tread is not monitored or updated any more use for reference only

    mqpx.jpg

    Started this tutorial in the HTC HD2-Nand forum, I think maybe someone
    can find it useful:)


    Who is this tutorial for?
    • Absolute Beginners like me :)
    • People with little or no programming skills

    This is a very basic tutorial!!

    Step one: Setting up the Android kitchen

    bachelorcookingcartoon.jpg



    First you will need to set up dsixda's android kitchen
    (All credit for the kitchen to dsixda's)


    Go to dsixda's thread for a list of supported devices.
    Here is a summary of the installation process
    ( I recommend you read the tread first)

    1. Before you do anything install the java jdk(find it in dsixda's thread)
    2. Download and extract the cygwin_packages.zip provided by dsixda on third post
    3. Run the set up(make sure there is no previous cygwin installation)
    4. Follow the kitchen read me txt!!!
    5) local package directory *must* be the path to the cygwin_packages folder that you just extracted
    unledwkc.png

    6) when it shows all the package names, go to the top and select "all <-> default" until it changes to "all <-> install" (you must click on the arrows)
    unti1led.png

    7. Run the cygwin at least once and close, now you will see a folder inside the cygwin installation like this: Home\your user name\

    8. Download the kitchen and extract to the home\your user name\
    9. Rename the dsixda-android-kitchen-*** folder to just "kitchen"
    10. Now your ready to run the kitchen type:
    Code:
    cd kitchen(enter)
    ./menu(enter)
    unledzno.png

    11. If you did things right you should see this:
    unledxwb.png

    congratulations!!
    Step Two: Setting up a working folder
    1. First our folder structure should look like this:
    Code:
    cygwin folder/home/your user name/kitchen
    2. Inside the kitchen it should look like this:
    unledmlb.png

    3. Now we need a rom to work on, for this tutorial i will use my own rom but you can use any hd2 rom. Place the original rom zip in the original_update folder inside the kitchen.
    4.run the cygwin.exe again type:
    Code:
    cd kitchen(enter)
    ./menu(enter)
    5.now enter option 1, enter again. You should see your rom listed, choose and enter
    6.you will be asked about changing the working folders name, at this point it makes no difference so just continue.
    7.you will be asked to convert to update-scrip do it and continue
    8. Now you can view the roms info
    9. congratulations you have a working folder!!!
    unledzfr.png

    Step Three :change/modify/update!

    First I will be covering basic changes you can make to your rom, later I will be adding more helpful hints.

    Adding/removing applications
    1. Go to the working folder where you extracted your rom, inside you will find:
    unled1gew.png
    or
    unledgcn.png

    2. Then go to "system/app" inside this folder you will find all the rom applications(apks) you may also find some in the data folder if your rom has this folder.
    3. Copy, replace, and change any app(apk) be carefull if you dont know what the apk is do not delete!!
    4. Congrats you have modified a rom, if your ready and want to see if it worked skip to step four to buil rom from working folder.


    Adding new boot animation
    1. Just replace the bootanimation.zip located in "workingfolder/system/media" with the boot animation of your choice.
    here is a sample of my bootanimation to try.
    unledtar.png


    Edit the gps script for your country/location
    1. In the workingfolder/system/etc/ you will find a file named gps.conf, you can
    edit this file with notepad++ or even word.
    2. using the right gps script in this file can speed up gps lock, you can
    find some from angeldeath, download extract and replace the gps.conf.
    unledslz.png


    Changing the default wallpaper
    1. Be very careful doing this, do not edit,delete or modify an apk without knowing what it is or does.not all things are as simple as copy and paste.
    2. go to the workingfolder/system/framework/
    3. Install 7zip and open the framework-res.apk
    4. With in the framework-res.apk with 7zip go to "res/drawable-hdpi/" and look for the default_wallpaper.jpg. You can extract modify and replace with new one.
    5. Make sure its the same file format and image dimensions.(in some roms you can also modify the default_lock_wallpaper.jpg)
    unledkbe.png

    MMS Fix for T-mobile
    1. *I Have only tested this on MIUI Roms*
    2. Go to "workingfolder/system/app"
    3. Find MMS.apk
    4. Right click and open with 7zip
    unledimk.png

    5.Inside mms.apk go to "rex/xml/"
    6.replace the "mms_config.xml" with this "mms_config.xml"
    unledymbc.png

    modifying build.prop

    "build.prop" is a file that contains various system-vital "parameters"
    Some can be modified with little risk, some can cause havoc. So Please do this Carefully!!!!!!


    1. Locate the file "workingfolder/system/"
    2. Open with notepad++
    unledbli.png


    There is several simple changes that can be done, I will start with some and add more later.

    LCD Density
    1. If you dont know anything about this topic Here is some info to get started
    2.Locate this line inside the build.prop "ro.sf.lcd_density=240"
    unledjfy.png

    3.The only value you will modify is the "240" to your preference.
    unledpbb.png


    Difference is simple and visible!

    Update Kernel From update.zip
    Note that it's not always as easy as copy and paste

    1. Extract you kernel_update.zip
    2. Copy and replace the extracted files to the corresponding folders inside your finished ROM
    3.Start with the boot folder
    unledgra.png

    3. Than the system folder (there might be some libs and modules associated with the rom)
    unledoph.png

    4. Another helpful hint is to open the updater-script
    to see if your kernel requires you to delete anything for the kernel to work correctly.

    sample script:
    Code:
    delete("/system/ppp");



    -there are several other options provided by dsixda's android kitchen for that I recomend you go to the tread and read.

    Step Four: repackage the rom

    Now that you have made some changes it's time to test!!
    1. Run the kitchen and enter option 99 - "biuld rom from working folder"
    2. Choose mgldr or clk
    3. I recommend that you go with all default options until you get more experience with the kitchen.
    4. When its all done you will find a folder inside "cygwin/home/yousername/kitchen" called output_zip
    5. Inside the folder is your new rom ready to be flashed and tested!!!
    unledwxh.png

    UPDATER-SCRIPT
    Thanks to user langthang for a great updater-script guide.
    Download it HERE

    I had a couple of request on how to get custom txt during the ROM installation in CWM,
    the updater-script basically tells CWM what steps to take during the installation(flashing rom).
    If you don't have any experience please don't edit anything other than what is in this simple tutorial.

    1.First once you have your Rom ready in .zip format, Open with 7zip
    2.Go to META-INF/com/google/android
    3.Extract the updater-scrip file
    4.Open with Notepad++
    5.Any text that would appear during the CWM install should be in this format :
    Code:
    ui_print("Put your text in HERE");
    Here is the requested 3d MIUI LOGO for example:
    Code:
    ui_print("");
    ui_print("");
    ui_print("");
    ui_print("");
    ui_print("");
    ui_print("     ___                     ___                ");
    ui_print("    /__/\\       ___         /__/\\       ___     ");
    ui_print("   |  |::\\     /  /\\        \\  \\:\\     /  /\\    ");
    ui_print("   |  |:|:\\   /  /:/         \\  \\:\\   /  /:/    ");
    ui_print(" __|__|:|\\:\\ /__/::\\     ___  \\  \\:\\ /__/::\\    ");
    ui_print("/__/::::| \\:\\\\__\\/\\:\\__ /__/\\  \\__\\:\\\\__\\/\\:\\__ ");
    ui_print("\\  \\:\\~~\\__\\/   \\  \\:\\/\\\\  \\:\\ /  /:/   \\  \\:\\/\\");
    ui_print(" \\  \\:\\          \\__\\::/ \\  \\:\\  /:/     \\__\\::/");
    ui_print("  \\  \\:\\         /__/:/   \\  \\:\\/:/      /__/:/ ");
    ui_print("   \\  \\:\\        \\__\\/     \\  \\::/       \\__\\/  ");
    ui_print("    \\__\\/                   \\__\\/               ");
    ui_print(" ");
    ui_print(" ");
    ui_print(" ");
    ui_print(" ");
    ui_print(" ");
    6.Add your text start at top and save,
    then replace with new updater-scrip
    unledofd.png

    congratulations!!


    There is allot more that I did not cover, didn't even scratch the surface.
    This was not intended for porting roms or any mayor scripting, this wont help you
    with writing drivers, kernels, libs etc. Just tried to make it as simple as possible for
    beginners like me, so we can understand the amount of work devs go through.
    Please! please! before you release any Rom, test and test again!!!!!!


    Like I said this was Originally for the HD2 so use at your own discretion!!
    (original thread)



    Just want to thank XDA Forums for giving us this space to play learn and share.
    8
    Really nice, simple, step by step guide for beginners!
    Also, thanks for the files, i guess ill try kitchen on w7.
    8
    Awesome I had zipaligned as one of the first steps of creating my ROM instead of doing it at the end. That could be causing my problems. I'll check it out now that I'm not at work. What do you mean by replace bash by the original bourne shell? Also what are other ways to create custom ROMs? Can it be done in eclipse for example? Or does it need to be built through the command line interface using the android SDK? What are my other options for developing my own ROMs that doesn't mostly automate the process like the kitchen? Of course I'll continue using the kitchen until I have a better understanding of how things work, I'm just asking for future reference. :)

    Thanks.:good:

    There are other ways...like right now you're a chef(using the kitchen to cook/modify ROMs)..not a developer(who uses source to compile his own ROM...e.g AOSP, Cyanogen etc)...
    I'll give you a link to 2 videos that taught me how to do it(the developer style)...but I'm not currently building ROMs due to Harddisk space issues..:(
    Here's the links :
    Part 1: http://www.youtube.com/watch?v=1_H4AlQaNa0
    Part 2: http://www.youtube.com/watch?v=rFqELLB1Kk8

    PS: I hope you wont have problems with his accent...just listen closely and it'll be simple to understand! :)

    PS2: Bourne shell is the "sh" that you replaced by bash...try reverting back to sh...and at this point *create a backup*...if after the zipaligning..all works well..cook your ROM..keep a backup of the working ROM too...and then add bash to ^^^^^ this backup..and try cooking another one if you want a bash version only..
    Check this thread..its not for your phone...but you can take the idea from here: http://forum.xda-developers.com/showthread.php?t=1090834

    PS3 : Eclipse cannot be used to create ROMs (As far as i know)...You can however create apps for android in eclipse...heres a tutorial for that: http://www.vogella.com/articles/Android/article.html

    Hope i helped! Dont forget to hit thanks if i did! :)
    7
    ive never had any luck with cygwin before, so what i'd like to know can this process be done in ubuntu?


    Yes it can all be done from within ubuntu, then you do not need Cywgin,
    6
    Awsome guide.
    I hope someone would like to help me make the galaxy ace compatibe with the kitchen.

    http://forum.xda-developers.com/showthread.php?t=1303345