[Android Software Development] GalaxyUser:
How to port manufacturer ROM

​

​

As many people ask me how i’m porting ROMs to my Nexus S i share my method in this thread.

This method works for the Nexus but should also work on a lot of devices. The list of files that I would write in this thread is not exhaustive.

Please for all improvements, send me a MP. I’m french and it’s possible for me to misspellings

This thread is in constant progress thanks to your feedback.

Do not use this guide to port rom based on CM / AOSP roms. Please use this guide to port Sense / TouchWizz / Motoblur etc ... If you want to port based on AOSP roms there are others guide on XDA.

This method is not perfect, much work will then be necessary to fix all the bugs, and nothing says that this method is functional rather than every time ....​

I.	What you need

Ubuntu and dsixda's Android Kitchen. Please refer to this link

Notepad++

Winrar

A brain =)

NB :

Before you start porting a ROM you need to know several things. Over the phone you want to port the rom will have a hardware close to your, more porting will be simple and functional.

Example : Same screen resolution, processor of the same type (ARM6, ARM7, etc ....)

PORT is the ROM you want to port and BASE is the ROM developed for your device (AOSP/CM)

II.	Let’s go !

1. Create new folder where you want and name it « Rom_port_for_yourdevice »

2. Download AOSP/CM developed for you device with the same android version which the rom you want to port

3. Download the rom you want to PORT

4. Extract each zip ROM in separate folder in « Rom_port_for_yourdevice »

​

5. Now it will appears two folders. Open both.

In PORT folder delete META-INF folder and copy/paste the META-INF folder of BASE in PORT folder.

​

6. Open system folder in PORT rom and delete vendor folder

​

7. Now in PORT folder open lib folder and delete these folders :

modules

hw

egl

​

8. Now go in BASE folder and select (if exists) these folders :

addon.d

bin

etc

customize

framework

lib

vendor

xbin

Now copy these in system folder of PORT but do not replace anything ! (If forgot « ETC » folder on screenshot)

​

9. Open bin folder in BASE and PORT folders. Copy and replace these files from BASE to PORT :

adb

brcm_patchram_plus

hostap

hostapd

init.vsnet

linker

logcat

logwrapper

radiooptions

rild

rmt_storage

vold

wpa_cli

wpa_supplicant

glgps

10. Now in BASE and PORT system folder open etc folder and copy and replace (if exist) these files/folders from BASE to PORT :

Bluetooth

Dhcpcd

Firmware

gps

init.d

permissions

ppp

pppd

security

ssh

terminfo

updatecmds

wifi

audio_effects.conf

audio_policy.conf

dbus.conf

gps.conf

init.*.sh

media_codecs.xml

media_profiles.xml

nfcee_access.xml

secomxregistry

vold.conf

vold.fstab

wrs_omxil_components.list

11.	Now copy usr folder from BASE to PORT and replaces all files

12. Open lib folder in BASE and PORT folders. Copy and replace these files from BASE to PORT :

liblog.so

libsecril-client

libreference-ril.so

libril.so

libs3cjpeg.so

libaudioflinger.so (if port does not boot, use from PORT rom)

libaudioutils.so

libtinyalsa.so

libpn544_fw.so

libSEC_OMX_Core.so

libOMX.SEC.***.Decoder.so

For HTC devices:

libhardware_legacy.so

libhtc_ril.so

libhtc_ril_switch.so

For LGE devices:

lge-ril.so

More commonly:

Add all the lib files with "ril" in their name

13. Open framework folder in BASE and PORT folders. In both folder rename framework-res.apk to framework-res.apk.zip and open the two files with Winrar.

In both files go to /res/xml/ and replace storage_list.xml of PORT framework-res.apk with the one of BASE.

Now close Winrar and rename framework-res.apk.zip in framework-res.apk in both folders.

​

14.

Very important:

By the way, there are some proprietary binaries missing from the guide (just depending on the device, as it's impossible to include all), so what I recommend is if your device has official cm, go to github.com/themuppets, pick the repo corresponding to your manufacturer and branch corresponding to your android version and download it and copy the files in your device's folder to the ROM you are porting. Lib to lib, bin to bin, etc. You may also need to look at the Mk files in the cm device source for your device to see what is built from source that you'll need such as libs and bins. For example, if it has Product_packages += \libwifi \

You would need to copy libwifi from cm. [/QUOTE]

Source: http://xdaforums.com/showpost.php?p=41294434&postcount=23

15. Now open build.prop of PORT rom and replace these lines with BASE build.prop :

ro.product.model=
ro.product.brand=
ro.product.name=
ro.product.device=
ro.product.board=
ro.product.cpu.abi=
ro.product.cpu.abi2=
ro.product.manufacturer=
ro.wifi.channels=
ro.board.platform=
ro.build.product=
ro.build.characteristics=
rild.libpath=
rild.libargs=
wifi.interface=

16. Reboot to Ubuntu.

Steps for android 4.3 and older

Open dsixda's Android Kitchen

Decompile both boot.img/kernel

Open both init.rc files

In CM/AOSP kernel replace BOOTCLASSPATH by the one from PORT boot.img ROM

Save and recompile kernel

Use CM/AOSP modified kernel in your rom.

Steps for android 4.4 and newer

Open dsixda's Android Kitchen

Decompile both boot.img/kernel

Open both init.environ.rc files

In CM/AOSP kernel replace BOOTCLASSPATH by the one from PORT boot.img ROM

In CM/AOSP kernel do these changes:

--> ro.secure=1 to ro.secure=0

--> ro.debuggable=0 to ro.debuggable=1

--> persist.sys.usb.config=mtp to persist.sys.usb.config=mtp,adb

--> ro.adb.secure=1 to ro.adb.secure=0

Save and recompile kernel

Use CM/AOSP modified kernel in your rom.

17. Now ZIP your PORT rom folder and flash it.

​

Please don't forget to use LOGCAT to debug the rom..... And to thanks or/and donate to me .....

Thanks !

​

GalaxyUser