Code:
/*
* ~ DO READ THIS BEFORE ATTEMPTING~
* Iam not here to guarantee any successful PORTING. nor i am responsible
for bricked devices, dead SD cards, or a broken device. YOU are
choosing to make these modifications, and if you point the finger
at me for messing up your device, I will laugh at you. But I will try
my best to explain all the necessities, so you won't mess up your Device.
*
~END
*/
Hello XDA'S Today i'm back with a useful guide/tutorial for ANDROID ROM PORTING
may have tried porting roms to their phones and has been succefull but most of the case is that we being end up in bootloops or cwm errors
So i'm dedicating this post for all users how are having a craze of rom porting or for atleast those wgo wanted to try rom porting
SO LETS START
There are two phases or rom porting
1) Its finding the correct port and source roms for ROM PORTING copying the files which is explained here
2) After a succefull port also the rom may not work properly ,we have to sort out the bugs to for a rom to become perfectly working
So with no more blahh blahh blahh Lets start the PORTING procedure :fingers-crossed: :fingers-crossed:
And lastly Before you a port a ROM, make sure you asked permission from the Developer!
What you'll need:
- WinRAR/7zip
- Notepad++ (When developing, always use this)
- Android SDK (For Logcatting & DDMS)
Some basic knowledge about Android
If you are on Linux/Unix/BSD use your favorite Archiving Tool & Text Editor.
What is base Rom:
The ROM which is Developed For your Mobile..
You can use either CM or any other AOSP roms as your Base ROM
What is Port Rom:
The Rom Which you want to port to your Device.
Make sure that the rom has most of the hardware specifications as of your base rom
STEP1;
Take any clean CM9, AOSP, CM7, CM10 ROM which is running on your device as Base ROM
STEP3:
Take the ROM you want to port. This Port ROM. Extract it also using Winrar.
STEP4:
Delete app, Framework, Fonts and Media folder in System Folder of Base ROM.
STEP5:
Now copy app, Framework, Fonts and Media folder in System Folder from Port rom to base rom system folder.
STEP7:
In etc folder of base ROM open permissions folder and copy all the permissions files in Port rom to your base ROM folder except platform and handheld_hardware
STEP 8: .And Then open init.d Folder in Base ROM and Delete Every thing except banner and then copy all the files inside init.d folder of port ROM to Base ROM.
STEP9:
Now open buid.prop file using Notepad++ and make changes to these of Base Rom as you wish.
ro.build.id=
ro.build.display.id=
ro.build.date=
ro.modversion=
STEP10:
In build.prop file change these to same as Port Rom build.prop values.
ro.config.ringtone=
ro.config.notification_sound=
ro.config.alarm_alert=
ro.cmversion=
ro.modversion=
Also Copy anything you Find Extra in ADDITIONAL BUILD PROPERTIES related to theme..
STEP11:
COPY THE set_perm Lines in META-INF/com/google/android/updater-script From Port to Base ROM After Deleting set_perm lines in Base ROM's Updater-Script.
STEP12:
If You find any extra file or folder in system folder of PORT rom than copy them to your base rom system folder.
STEP 13:
Last Step to ZIP THE FOLDERS IN ONE..
SELECT META-INF, system, boot.img(if it is having), data(if it is having).
Right Click and Select Add to Archive..
Select Zip..
Type the Name.
Click OK..
HERE THE BASIC ROM PORTING IS OVER BUT FOR SOME SPECIFIC COSTUME ROMS WE NEED LITTLE MORE STUFFS TO WORK ON ,THEY ARE SHOWN BELOW
ONLY FOR MIUI ROMS :
Copy telocation.db and yellowpage.db From /system/etc folder to yours..
Copy content-types.properties file From /system/lib to yours..
Copy invoke-as from miui4 rom to /system/xbin and give it permissions on updater-script
set_perm(0, 0, 06755, "/system/xbin/invoke-as");
Note:It is needed for backup & themes app to work
Copy liblbesec.so from miui 4 to /system/lib and give permission on updater-script
set_perm(0, 0, 0755, "/system/lib/liblbesec.so");
It is needed for superuser app from miui to work
Change values Some of the Values in build.prop of your ROM:
ro.build.id=MIUI
ro.build.display.id=MIUI
ro.build.version.incremental=2.x.x (version number)
ro.config.ringtone=MI.ogg
ro.config.notification_sound=FadeIn.ogg
ro.config.alarm_alert=GoodMorning.ogg
ro.config.sms_received_sound=FadeIn.ogg
ro.config.sms_delivered_sound=MessageComplete.ogg
FOR ParanoidAndroid And PAC:
Copy paranoid folder inside system/etc to yours..
Go to META-INF/com/google/android/Updater-Script of your base ROM and open it with Notepad++
Copy this line:
set_perm(1000, 1000, 0644, "/system/etc/paranoid/properties.conf");
Specially For PA:
Now Open Build.prop in /system with Notepad++
Copy these lines in Additional Properties of Build.prop:
Depends on Resolution Of your device can be pa_hdpi/pa_mdpi/pa_xhdpi. Change it according to your device.
ro.pa.family=pa_mdpi
Depend on pa version. Replace x.xx with the version of PA you are porting.
ro.pa.version=x.xx
Specially For PAC Rom:
Now Open Build.prop in /system with Notepad++
Copy these lines in Additional Properties of Build.prop:
Replace the x.x.x with your PAC Rom version
ro.pac.version=x.x.x
Customize these lines according to your wish.
ro.pacrom.version=mesona_PAC_jb-alpha-v19.0.0
ro.modversion=mesona_PAC_jb-alpha-v19.0.0
Depends on Resolution Of your device can be pa_hdpi/pa_mdpi/pa_xhdpi. Change it according to your device.
ro.pa.family=pa_mdpi
Depend on pa version. Replace x.xx with the version of PA you are porting.
ro.pa.version=x.xx
Modify this line according to your AOKP version
ro.aokp.version=mesona_jb-Milestone-1
Modify it according to your base ROM's build.prop
ro.cm.version=xxxxxxxxxxxx
Replace any line in Your build.prop which appear twice mainly ro.cm.version and ro.modversion
FOR SPECIFIC MANUFACTURE DEVICE
For HTC Devices:
To fix network auto select-
Decompile framework-res.apk
Go to \framework-res\res\values\bools.xml and change change <bool name="skip_restoring_network_selection">true</bool> to false
To Fix Graphichal issues:
Code:Decompile framework.jar Change these files with your base smali\smali\android\os Environment SystemProperties smali\smali\android\view HardwareCanvas HardwareRenderer$Gl20Renderer HardwareRenderer$GlRenderer HardwareRenderer
IF YOU ARE HAVING BOOTLOOP THEN COPY THESE LIB FILES TO BASE ROM FROM PORT ROM:
libandroid_runtime.so
libandroid_servers.so
libmedia_jni.so
IF YOUR BASE ROM HAS ISSUES LIKE CAMERA ISSUE THAN YOUR PORTED ROM TOO WILL HAVE ISSUES.
NOW ZIP YOUR ROM AND POST IT BUT DON'T FORGET TO GIVE CREDITS TO THE DEVELOPER OF PORT ROM..
TROUBLESHOOTING AFTER SUCCEFULL PORT
After a succefull port also there can be many bugs present which has to soved logically
here are somethings which can help in DEBUGGING
1) IF GALLERY FC :
open the system/framework and find framework-res.apk file[can use any extracting app]
in both the roms and go to res folder then to xml subfolder and copy and replace the storage_list.xml file from source to port rom
( framework-res.apk\res\xml\storage_list.xml)
Porting Wallpapers | Lockscreen Wallpapers | bootanimation
Usually you get a wallpaper/bootanimation that doesn't fit your device. Here's a quick tutorial on how to port it to your device.
Download & Install FreeImageConverter then launch it.
For Wallpapers & Lockscreen Wallpapers:
Click Add Folder... and add the folder were the wallpapers are
Then click Advanced Convert...
Select Exact Size and set the image quality to 100
Set your Width and Height resolutions for your device.
Uncheck Add "Converted by www.freeimageconverter.com"
Select Leave the same file name and leave the Postfix & Prefix empty. Then set your output in a folder.
For bootanimation:
Extract /system/media/bootanimation.zip OR /data/local/bootanimation.zip OR /system/customize/resource/bootanimation.zip (For Oxygen ROM, the bootanimation is built into the framework-res)
Do the steps above
Move the new resized folder(s) into your bootanimation workspace
Edit the desc.txt to match your device resolutions
Zip the contents ( folder_name desc.txt )
Set compression method to Store
Delete the extracted bootanimation files
Make sure this new bootanimation.zip is in PORTED
Credits & Thanks to
# rishabh.raj37
# Peteragent5
Happy porting!
:laugh:
Last edited: