[Android General] Peteragent5:
/*
* ~ Please READ ME ~
*
* I do not guarantee any successful porting. I am not responsible
* for bricked devices, dead SD cards, or a broken device. [B]YOU[/B] 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 OF AGREEMENT ~
*/

Before we start, let's read the Title of this Guide. Notice it says: based

This means, if you do not have a GB/ICS/JB already compiled for your device, then this Guide is useless for you.

Android Source | Compile GB | Compile ICS | Compile JB ~ Thanks dastin1015 |- Building/Compiling - Durations

Before you a port a ROM, make sure you asked permission from the Developer!

This Guide applies the same principle for porting the following: Sense, Lewa OS, JoyOs, MIUI, LiGux OS, etc...

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.

Notes:

I will be referring to the following:

BASE = The GB/ICS/JB ROM made for your Device only.

PORTED = The ROM you are trying to port from.

BASE and PORTED must be the same CPU. e.g. ARMv7, ARMv6, ARMv5

You must have the same settings in Notepad++ like mine.

Ignore the procedure, if the file or folder is not present!

BASE & PORTED should be the same Android version.

If you are porting a custom GB ROM, then use a GB BASE, the same goes for ICS and JB

Make sure both BASE & PORTED are deodexed (It's hard to port an odexed ROM)

Final ROM is inside PORTED Folder

(Don't get confused! This is a Major change from the previous Guide because this method is a lot faster and easier)

Inside PORTED:​

Remove kernel:

boot.img | zImage | kernel.sin | etc...

Remove the following inside /system:

cameradata

tts

usr

vendor

firmware

modules

wifi

Now you get 2 options:

Delete bin & xbin & lib folder, but keep libandroid_runtime.so inside /system/lib

Keep bin & xbin & lib folder

Explanation:

If PORTED has no tweaks or addons to those folders.

If PORTED has tweaks and addons.

Remove every

folder

inside /system/etc

except

:

init.d

permissions

license

Remove the following inside META-INF:

CERT.RSA

CERT.SF

MANIFEST.MF

Remove: META-INF/com/google/android/update-binary​

Inside BASE:​

Move kernel to PORTED:

boot.img | zImage | kernel.sin | etc...

Delete libandroid_runtime.so inside /system/lib

Move the following inside /system to PORTED:

(If prompted, select YES to copy and Replace

all

)

cameradata

bin

lib

tts

usr

vendor

firmware

modules

wifi

xbin

(If prompted, select YES to copy and Replace

all

)

Move everything inside /system/etc

To: PORTED's /system/etc

(If prompted, select YES to copy and Replace

all

)

Move: META-INF/com/google/android/update-binary

To: PORTED's META-INF/com/google/android/

For ICS & Newer:

Move the following inside /system/media to PORTED's media:

LMprec_508.emd

PFFprec_600.emd

build.prop​

Inside PORTED:​

Open /system/build.prop

Copy & Replace the following:

ro.modversion

ro.cm.version

ro.config.ringtone

ro.config.notification_sound

ro.config.alarm_alert

ro.config.sms_received_sound

ro.config.sms_delivered_sound

persist.sys.themeId

persist.sys.themePackageName

and anything similar to that, to: BASE's build.prop

For MIUI:

Add & Make sure the following values are like this:

ro.build.id=MIUI

ro.build.display.id=MIUI x.x.x

ro.build.version.incremental=x.x.x

ro.config.ringtone=MI.ogg

For Lewa OS:

Add & Make sure the following values are like this:

ro.build.display.id=LeWa_ROM_DeviceNickname_xx.xx.xx

ro.lewa.version=LeWa_ROM_DeviceNickname_xx.xx.xx

ro.lewa.device=DeviceNickname

ro.lewa.swapper.part_path=PORTED's_Value

ro.lewa.swapper.flash_swappiness=PORTED's_Value

ro.lewa.swapper.sd_swappiness=PORTED's_Value

ro.error.receiver.system.apps=com.lewa.fc

ro.error.receiver.default=com.lewa.fc

Make sure the following is for your Device:

rild.libpath=

rild.libargs=

Inside BASE:​

Open /system/build.prop

Highlight from: ro.build.tags=

to: # ADDITIONAL_BUILD_PROPERTIES

Shown in this picture

Copy & Replace that highlighted part to: PORTED's build.prop's highlighted part

Copy everything from: # ADDITIONAL_BUILD_PROPERTIES

To: the end of the file

Paste it to PORTED's build.prop

Shown in this picture

For XPERIA devices:​

The whole build.prop is untidy and filled with tweaks and addons.

To edit an XPERIA build.prop you really just need to use your common sense.

Make sure you follow the above and just decide on your own on what to do ;)

For HTC devices (Sense):​

The whole build.prop is filled with tweaks, addons and extra libs values.

To edit an HTC build.prop you really just need to use your common sense.

Make sure you follow the above and just decide on your own on what to do ;)​

updater-script​

Inside BASE:​

Move the following, to PORTED:

(If prompted, select YES to copy and Replace

all

)

META-INF/com/google/android/update-binary

META-INF/com/android/metadata

META-INF/com/android/otacert

Open: META-INF/com/google/android/updater-script

Replace the following values, to PORTED:

mount("xxxxxx");

format("xxxxxx");

retouch_binary

The installation of the kernel (Something like: assert(package_extract_file("boot.img",)

Take note of the added set_perms & set_perm_recursives that PORTED added. Then replace

all

set_perm and set_perm_recursive from BASE to PORTED. Put back in the noted set_perms & set_perm_recursive you wrote down, to PORTED's updater-script

For ICS & Newer

itself

:​

If the updater-script in PORTED is modded to have tweaks & addons do the set_perms procedure above

Now use BASE's entire META-INF Folder. Copy it to PORTED

For MIUI v4:​

Add the following values to PORTED:

set_perm(0, 0, 06755, "/system/xbin/invoke-as");

set_perm(0, 0, 0755, "/system/lib/liblbesec.so");

For AROMA Installer:​

It's actually too hard & time consuming to explain on how to make the script work on your Device when it came from another.

So it's best to use BASE's META-INF folder, rather than try to make the AROMA Installer work on your Device. (Becuase it will be time consuming)​

Porting from a different Manufacturer​

If you are porting from a different manufacturer like, HTC or Sony, you have to check the kernel from them.

Unpack the kernel from PORTED

Unpack your Device's kernel

Open PORTED's init.rc

Replace the BOOTCLASSPATH from PORTED's init.rc to BASE's init.rc

Compare the two files, and addon to your Kernel's init.rc

Packup/Repack your Kernel

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

Logging & DDMS​

This is very important if your a developer in the Android world. These tools help you debug your device to search for errors or see which processes are running.

Android Debug Bridge (ADB)​

Tutorial - How to Logcat

Dalvik Debug Monitor Server (DDMS)​

Tutorial from Android

If you want me to help you, don't give me a Logcat from ADB. Instead, give me a screenshot of your DDMS.​

Review

Make sure you did everything inside PORTED

first

, then work your way up/down to BASE.

Did you replace Kernel?

Is libandroid_runtime.so from PORTED?

Did you edit the updater-script, format & mount values?

Make sure dalvik.vm.heapsize is BASE's value inside build.prop

Make sure build.prop is mostly for your Device ;)

If the Port doesn't boot, try using your own META-INF folder. But backup the previous

Sources

[GUIDE] How to port MIUI v4 to your Device - proxuser

[GUIDE] How to port Stock/GB/CM7/CM9/ICS/CM10/JB Based ROMs - Peteragent5

Credits & Thanks to

proxuser

nims11

dhk.-

Lens_flare

SpaceCaker

fundoozzz

Delanoister

TeamCooper

Happy porting! :laugh: