[Verizon Samsung Galaxy S III] Hero:
Porting TouchWiz ROMs​

This guide is intended to help you port ROMs from AT&T, T-Mobile, and Sprint over to the Verizon S3. The guide will be split into two different parts. Porting CDMA to CDMA and porting CDMA to GSM.

Just so there's no confusion:

CDMA Carriers:

Verizon

Sprint

GSM Carriers:

AT&T

T-Mobile

REMEMBER: If you choose to port a ROM from another carrier, be sure to ask permission to post from the developer.

What you need

7zip

Notepad++ (If on Windows)

A ROM you want to port

A ROM from your carrier/device

Knowledge on how to compile and recompile .jar files (I will not cover this)

Make sure the ROM you want to port and the ROM you are using as a base are the same Android version (e.g. 4.1.2) and have the same chip (e.g. MSM8960). You will be able to determine the chip type from the build.prop​

PORTING CDMA TO CDMA (i.e. SPRINT TO VERIZON)​

Download the ROM you want to port

Download a ROM from your carrier

Unzip both ROMS

In the ROM you want to port - delete /system/etc/apns-conf.xml

Replace the apns-conf.xml you just deleted with the one from the ROM for your carrier

In the ROM you want to port - delete /system/framework/GlobalConfig.jar (This .jar file contains a lot of carrier information)

Replace the GlobalConfig.jar you just deleted with the one from the ROM for your carrier

In the ROM for your carrier, locate the following lib files in system/lib and copy them over to the ROM you want to port

libreference-ril.so

libril.so

libril-qc-qmi-1.so

libril-qcril-hook-oem.so

libsecril-client.so

If your carrier is Verizon and you're porting a Sprint ROM, delete all the apps with "Sprint" in the name including these:

SecContacts.apk

SecPhone.apk

PhoneInfo.apk

Replace SecContacts.apk and SecPhone.apk with the Verizon ones.
​

In the ROM you want to port - open up /system/build.prop in Notepad++

Locate every instance of d2att, d2tmo, or d2spr and replace it with d2vzw (Use CTRL+F if you have to)

Save the build.prop after all changes are made

In system/framework/ of

BOTH

ROMs, decompile framework.jar and framework2.jar

In the framework.jar of the ROM you want to port - delete the following folders:

smali/android/provider

smali/android/telephony

smali/android/server

smali/android/service

smali/com/android/internal/telephony

Replace them with the folders from the ROM for your carrier

In the framework2.jar of the ROM you want to port - delete the following folders:

smali/android/provider

smali/android/telephony

smali/android/server

smali/com/android/internal/telephony

smali/com/google/android/mms

Replace them with the folders from the ROM for your carrier

Build all of the jar files when finished (Please note that replacing the above folders will make the ROM operational to the point where MMS will work, but you may encounter other weird superficial errors. It's just too much work to go into the specifics.)

Re-zip the ROM you want to port

Flash in recovery

PORTING CDMA TO GSM (i.e. VERIZON TO T-MOBILE & ATT / SPRINT TO T-MOBILE & ATT)​

Download the ROM you want to port

Download a ROM from your carrier

Unzip both ROMS

In the ROM you want to port - delete /system/etc/apns-conf.xml

Replace the apns-conf.xml you just deleted with the one from the ROM for your carrier

In the ROM you want to port - delete /system/framework/GlobalConfig.jar (This .jar file contains a lot of carrier information)

Replace the GlobalConfig.jar you just deleted with the one from the ROM for your carrier

In the ROM for your carrier, locate the following lib files in system/lib and copy them over to the ROM you want to port

libreference-ril.so

libril.so

libril-qc-qmi-1.so

libril-qcril-hook-oem.so

libsecril-client.so

Delete the following apps and replace them with the ones from your carrier:

SecContacts.apk

SecPhone.apk

In the ROM you want to port - open up /system/build.prop in Notepad++

Locate every instance of d2att, d2tmo, or d2spr and replace it with d2vzw (Use CTRL+F if you have to)

Save the build.prop after all changes are made

In system/framework/ of

BOTH

ROMs, decompile android.policy.jar, framework.jar, framework2.jar, and services.jar

You need to go through every smali file in all of the .jars and replace all instances of "Sprint" with "Verizon" or "Verizon" with "Sprint" depending on your carrier

In the framework.jar of the ROM you want to port - delete the following folders:

smali/android/provider

smali/android/telephony

smali/android/server

smali/android/service

smali/com/android/internal/telephony

Replace them with the folders from the ROM for your carrier

In the framework2.jar of the ROM you want to port - delete the following folders:

smali/android/provider

smali/android/telephony

smali/android/server

smali/com/android/internal/telephony

smali/com/google/android/mms

Replace them with the folders from the ROM for your carrier

Build all of the jar files when finished (Please note that replacing the above folders will make the ROM operational to the point where MMS will work, but you may encounter other weird superficial errors. It's just too much work to go into the specifics.)

Navigate to system/framework/ in both ROMs

Open framework-res.apk from both ROMs in 7zip

In framework-res.apk in both ROMs navigate to /res/xml/

Delete eri.xml from the framework-res in the ROM you want to port

Replace the deleted eri.xml with the one from the ROM for your carrier

Save and close the modified framework-res.apk

Re-zip the ROM you want to port

Flash in recovery

Obviously this guide will not work on more difficult ports such as bringing Sense to the S3, but the end result is that we will hopefully see more ROMs in the thread.

Thanks TrevE :)