A Dummies Look on Custom Roms
Topics covered are as below :
When we generally talk about ROM, it means Read Only Memory. However in the Android developer circle it means an actual custom image of the OS installed in the ROM area of your smartphone.
A stock ROM is the version of the phone's operating system that comes with your phone when you buy it.
Android rooting is the process of allowing users of smartphones, tablets, and other devices running the Android mobile operating system to attainprivileged control (known as "root access") within Android's subsystem. Rooting is often performed with the goal of overcoming limitations thatcarriers and hardware manufacturers put on some devices, resulting in the ability to alter or replace system applications and settings, run specialized apps that require administrator-level permissions, or perform other operations that are otherwise inaccessible to a normal Android user. Rooting is analogous to jailbreaking devices running the Apple iOS operating system. On Android, rooting can also facilitate the complete removal and replacement of the device's operating system, usually with a more recent release of its current operating system.
Learn basic ADB commands
adb push - sends a file to the phone over ADB thru USB - adb push c:\test.apk /sdcard/test.apk
adb pull - receives a file from the phone over ADB thru USB - adb pull /system/app/Test.apk c:\Test.apk
adb shell - starts a shell connection with the phone
adb reboot - restarts the phone
adb reboot recovery - restarts the phone into recovery
adb reboot bootloader - restarts the phone into the bootloader (white screen)
adb remount - remounts the file system
adb install <path to .apk file> - installs an application - adb install c:\swype.apk
adb uninstall <package name> - uninstalls an application - package name is usually in the format, com.android.browser
Learn basic Linux commands to run through ADB shell
cd - changes directories - works through stock android toolbox - cd /system/app
ls - lists all files in the directory - works through stock android toolbox - ls /system/app/
cat - copies files - works through stock android toolbox - cat /system/app/Test.apk > /sdcard/Test.apk
rm - removes files - works through stock android toolbox - rm /system/app/Test.apk
mv - moves files from one location to another - works through stock android toolbox - mv /system/app/Test.apk /sdcard/Test.apk
cp - copies files - functions similar to cat - uses busybox installed by the EVO-recovery.zip into recovery mode - cp /system/app/Test.apk /sdcard/Test.apk
mount - loads the file system (usually auto loaded except sometimes in recovery) - mount /dev/block/mtdblock4 /system
unmount - unloads the file system - umount /system
For more commands and description look here
Custom rom creator studio
A project/solution based development environment for creating customized android roms.
For Windows/.NET Framework 4.0 and Linux/Mono 2.10.2
The version for Mono might work on OSX/Mono.
It is using apktool and smali/baksmali to do the hard work.
Open files from command line and associate file types(.rssln, .rsproj and .apk)(windows only)
ApkViewer, shows content of apk files (windows only)
Compare content of apk and jar files with older versions.
Automatically discovers boot class paths
Optimizing png files (windows only)
Signing apk files
Video tutorial : http://www.google.co.in/url?sa=t&rct...4owjCZc6mnSHWQ
The android kitchen software to do the basic functions to my ROM like adding root access and such.
The easiest way to do this is to build a Linux VM but the kitchen can also be run from windows using cygwin.
Check this post here:
It has a download for the kitchen software as well as detailed guides on how to use it.
From clockworkmod perform a nandroid backup of your phone and then copy the system.img and boot.img files into the kitchens original_update folder and then create your working folder from that.
(If you go through the guide on the kitchen thread you'll understand what I mean)
After you have your working folder ready you can go through the various kitchen options to add root, superuser & busybox, deodex all your apps, etc, etc.
You will then want to go through your /system/app folder and remove any apps you don't want and also move and add apps to /data/app for ones that you can run from the user partition (do not move the market out of /system/app).
There are several guides around of what the system apps do and be carfeul what you remove as some are very important for functionality.
Check this thread for some basic steps of the things you will want to do to start with.
To modify/extract an app
If you want to make some modifications of apps and functionality you will need to get a bit deeper into things.
You can use tools like apkmanager to decompile the apk files so that you can edit them and recompile.
To change the interfaces and such you will want to do this to files such as /system/framework/framework-res.apk and /system/app/SystemUI.apk.
The interfaces are basically made up of a series or xml files that define where everything is and the images that are being displayed.
There is also a website called UOT Kitchen that can be used to modifiy the interface for you.
You just need to upload your framework-res.apk and SystemUI.apk and choose the look you like and it will alter them for you.
I used it to modify the interfaces I used but unfortunately it doesn't work on our phones too well because the dual sim features use different images and relations and the kitchen can't modify them properly. They also don't look so good with the colored sim backgrounds our phones use so I had to modify the images and recreate the interfaces manually for most things but it should work pretty well for any other phone type.
To go further into coding changes you will need to learn how to use smali/baksmali to disassemble the dex files that are stored in the apps.
When you use baksmali to disassemble a file it will be a plain text representation of the dalvik code which is kind of a cross between assembly code and java.
As an example of how to work with that see this guide of how to modify your boot menu options. Like adding recovery option when pressing the power button.
Depending on what you want to do to your ROM depends on how much you want to delve and learn but luckily there is plenty of information out there since it is an open source platform.