How to Port Samsung Rom to other Samsung devices (Small Update as of 10/13/2018)

Search This thread

malbert16442

Senior Member
Nov 19, 2014
4,122
7,687
Area 51(◕_◕)
samsung_logo_191_1.jpg

(Success Stories)

I have successfully ported s7 and n7 firmware using this guide.
Awesome guide!. 9/10
@malbert16442 this is pure GOLD. Gave you all my thanks for today. I'll try it myself today. Also waiting patiently for updates [emoji28] . Cheers!
is the reason i was allowed me to port my own Rom!:D


black-silver-animated-line.gif


rsz_kernel_logo_600_1.png


1. Kernel is second most important because it determines if rom boots or whether
we could access a log.

2. Since we are trying to boot a rom not meant to be on our device, it could be alittle hard getting this thing to run.

3 Contact a kernel dev and ask them for adb insecure kernel or a kernel with usb debugging enabled at boot. This will help us obtain those logs at boot.

4. In some rare cases Logs might show that specific kernel services are not accessible.
In this case we only change the init.environ.rc. Which has the frameworks needed to boot.

5. If you can't get kernel logging at boot use this in recovery after 2 mins of booting.
Code:
adb pull /data/tombstones

6.Update

Hello All! I am posting this fix because on my Note Edge, I wasn't able to get logcat or adb access at boot, no matter what property I set, it didn't work. I finally figured out a way to get true logcat right as the boot animation comes up.

First off, you NEED Notepad++ if you don't want garbage clumped up editing.

1. In Android Image Kitchen, depack the Boot image.
2. Then, go to split image and modify boot.img-cmdline and add
Code:
buildvariant=userdebug
.
3. Save that file, then go to the ramdisk folder and edit your default.prop. change these values.
Code:
ro.secure=1  > ro.secure=0
ro.adb.secure=1 > ro.adb.secure=0
ro.debuggable=0 > ro.debuggable=1
4. Save that file, then go to init.rc, and use find to search for adbd to jump to this.
Code:
# adbd is controlled via property triggers in init.<platform>.usb.rc
5. Change the original code from
Code:
service adbd /sbin/adbd --root_seclabel=u:r:su:s0
     class core
    socket adbd stream 660 system system
    disabled
    seclabel u:r:adbd:s0

TO:

service adbd /sbin/adbd --root_seclabel=u:r:su:s0
    disabled
    socket adbd stream 660 system system
    seclabel u:r:adbd:s0

6. Change this to new code.
Code:
# adbd on at boot in emulator
on property:ro.kernel.qemu=1
    start adbd

TO:

# allows adbd at boot with property trigger below
on property:ro.debuggable=1
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/idVendor 04E8
    write /sys/class/android_usb/android0/idProduct 6860
    write /sys/class/android_usb/android0/functions adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
7. Rebuild the kernel and install in TWRP or however you install kernels, ADB will be accessible right at boot so nothing is lost during logging. If your kernel doesn't need this, don't bother, but if like me, you couldn't get anything, this will fix your issues.

In some cases, you will still need to push adb_keys to /data/misc/adb/, however.


@malbert16442 Please consider putting this in OP for those who have issues getting logcat at boot.

black-silver-animated-line.gif


Part 2
adb-logo.png


Adb is key in any port. Adb is the secret. It gives us the ability to access logs be able to debug issues in our ROM.

1. Download adb drivers

http://xdaforums.com/showthread.php?p=48915118#post48915118
Thanks Member @Snoop05

2. Test adb by using 'adb devices" in cmd

You should see online

3. If offline try using adb kill-server and repeat step 2.

4. When making a loging for these ports we use the phrase adb logcat *:E > filename

this ensures that we filter the logs by errors and remove the long set of lines like thermal updates ...etc

black-silver-animated-line.gif



Part 3


In order to port firmware

1. Download Stock firmware extract it with tool
Websites to get stock firmware are
http://updato.com/firmware-archive-select-model
or https://xdaforums.com/galaxy-tab-s/general/tool-samfirm-samsung-firmware-t2988647

2.We will deodex our rom using Fulmics or similar deodexer
Either a kitchen like "http://xdaforums.com/chef-central/android/kitchen-superrs-kitchen-t3202296/page26" or similar.
Thanks @SuperR
https://xdaforums.com/android/software-hacking/tooll-03-12-fulmics-deodexer-1-0-t3512081
Thanks @xpirt

3. Learn how to use APK DECOMPILE TOOLS SUCH AS TICKLEMEANDRIOD
http://xdaforums.com/showthread.php?t=1633333
Thanks @Ticklefish

4. Remove Apps Priv-app and Framework of base. In a new folder use Fulmics to deodex this. Store somewhere safe.

5. Deodex Port and copy the Apps, Framework and Priv-app into the Base of stock rom.

6. In Ticklemeandriod you notice we have 6 work Areas. For our Roms we will only need two. The most common files we will use are services.jar, and framework.jar.

7. Take the services and framework our our Port and decompile in work area 1.

8. Take the services and framework of our Base and decompile in work area 2.

9. We will Perform a quick Step to help if App signatures become corrupt or cannot be read.

Follow this guide by @ikrom

http://xdaforums.com/showpost.php?p=62496153&postcount=2957

10. After this lets move to debugging our apps and frameworks.


black-silver-animated-line.gif



Part 4 (Tools and debugging)

My favorite tools to use include WinMerge and FileSeek

1. Winmerge enables us to compare two files. For example a stock jar and one of our port.

2. File seek allows us to search for a specific references.

I use file seek to search for weird terminology I see on my log.

3. Terminology


black-silver-animated-line.gif


Part 5 ( Terminology)


1. In a logcat we are looking for three things when debugging. "E JavaBinder:", "E art", "E AndroidRuntime: FATAL EXCEPTION:"

2. The order to debug we search in logcat. When beginning it is not specific but, I usually search for Art errors first.

3. So for example if I get in my logcat
Code:
"01-01 01:26:25.169  5599  7183 E JavaBinder: java.lang.NoSuchMethodError: No virtual method activityPauseTrigger(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Landroid/content/pm/ApplicationInfo;)V in class Lcom/android/internal/app/ActivityTrigger; or its super classes (declaration of 'com.android.internal.app.ActivityTrigger' appears in /system/framework/framework.jar:classes2.dex)"

I got the location which is framework jar Class2

Code:
activityPauseTrigger(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Landroid/content/pm/ApplicationInfo;)V is the missing info in the port smalis and

log says it is somewhere in
Code:
Lcom/android/internal/app/ActivityTrigger; or the files with idential names to Activity trigger

4. In this case missing method could be found in stock smali. This is where we use win merge to cleanly copy new method from stock to port.

5. But Mike what if The logcat doesnt tell me location. We will then use fileseek in this instance.

Example: Log tells me
Code:
 "01-01 00:24:17.509  7524  7539 E JavaBinder: java.lang.UnsatisfiedLinkError: No implementation found for void com.android.internal.app.ActivityTrigger.native_at_pauseActivity(java.lang.String) (tried Java_com_android_internal_app_ActivityTrigger_native_1at_1pauseActivity and Java_com_android_internal_app_ActivityTrigger_native_1at_1pauseActivity__Ljava_lang_String_2)
"

No implementation means that we must remove this file as it is not found in the libs. What location? We dont know yet ?

Code:
com.android.internal.app.ActivityTrigger.native_at_pauseActivity(java.lang.String
is what we are looking for

According to fileseek I would look for pauseActivity because it is a keyword

According to file seek I may get 100 references but I see one that says
Code:
.method ActivityTrigger.native_at_pauseActivity

I would then use winmerge to cleanly delete/copy the file from my stock smali to the new one. From the location I found in Fileseek.

6. Let me give a example of a Runtime error.

Code:
"07-25 09:17:08.975 16379 16379 E AndroidRuntime: java.lang.NoSuchMethodError: No interface method setDataFromNSFLP(ILandroid/os/Bundle;)V in class Landroid/location/ILocationManager; or its super classes (declaration of 'android.location.ILocationManager' appears in /system/framework/framework.jar)

So log told us to look in framework for a file with
Code:
setDataFromNSFLP(ILandroid/os/Bundle;)V

Boot up file seek and repeat steps above.


black-silver-animated-line.gif


Part 6

So we booted now what.

Lets now work on fixing local errors.

Use logcat to possible fcs and reboots.

All firmware edits are different so this guide will help if you are learning the way android works.

What to look out for

Remember the Base folder we deodexed. We will use this to help fix issues in our rom.

1. Take the McRegistry Folder and ffffffff0000000 File move this to our booted rom.

2. Now in the Ported firmware copy the Fonts folder and the files named font in /etc to our booted rom.

3. Delete these folders - " preloadedmdm ", " sipdb " and " tts from booted rom and replace with that from ported firmware.

4. Open " Media " folder in booted rom

Delete Audio folder
Replace with Ported firmware audio folder.

5. In /etc/permission add the missing software permissions not hardware like slocation or camera-flash.

6. In build-prop
Replace these values with that of port.

Code:
ro.build.scafe.size=
ro.build.scafe.shot=
ro.build.scafe.cream=
ro.build.scafe.version=
ro.com.google.gmsversion=
ro.build.version.sdl=
ro.config.ringtone=
ro.config.notification_sound=
ro.config.alarm_alert=
ro.config.media_sound=
ro.config.ringtone_2=
ro.config.notification_sound_2=

7. Add this code to build-prop

Code:
wlan.wfd.hdcp=disable

black-silver-animated-line.gif


Let's Fix Messages and Phone FCS on first boot

1. From ported from take the libselinux.so to fix message fcs

2. To fix Phone fcs take the mapconprovider.xml from port

black-silver-animated-line.gif


64 bit firmware to 32bit

1. Replace 64 bit libs with 32 bit alternatives.

2. You could find 32 bit libs in 32 bit firmware.

32bit all that could be found will be attached here for all users

black-silver-animated-line.gif


Fix location problems in Rom

With our services.jar decompiled take these smalis from base and use Winmerge to copy to Port jar.
Code:
services.jar\smali\com\android\server\location folder to that of port

also take the
Code:
services.jar\smali\com\android\server\LocationManagerService$xxx
Smalis and move from base to port location.

black-silver-animated-line.gif


imageedit_1_2259753886.png


1. Take NFC.apk and Bluetooth.apk from base and move to new Rom folder.

OR A more complex NFC fix would be to look in PackageManagerService.smali
of services.jar

look for the NFC model of the device you are porting from

1. So use FileSeeker
to search for method with "supportNfc"

2. Replace it with your model number.

Example the NFC number of Note 7 is S3FWRN5
I would replace it with the NFC number of S5 which is NXP_PN547C2


Blur


https://xdaforums.com/showpost.php?p=69547250&postcount=10031

black-silver-animated-line.gif


AOD FRAMEWORK FIX
1AHEbOB.jpg


Credits :
@Patrick.H (NX Team)
@karkasss (NX Team)
@Develoid ALT and F4 (AOD touch / Bluelight filter fix)
@asc1977, @DaOldMan (AOD brightness control)
(Please copy & paste when you add our credits)

Download this file extract to services.jar

https://mega.nz/#!KgMxwQDR!g0yy7a6Izk8U8szRsggaZAXLaF4pjSMYAc8p6kOjIs4

Compare the PowerManagerService Smails.

then recompile :cool:


OR
thanks @oluwaponmile
follow this guide

https://xdaforums.com/showpost.php?p=69594939&postcount=8139



black-silver-animated-line.gif


Lets fix ported Cameras

Code:
[SIZE="3"]GUIDE IS IN PROGRESS[/SIZE]
Debug solution not fix:

This will be a hard thing to accomplish. Also make sure that Camera is recompiled using New signatures.
First lets find the native resolutions of your camera. For this we look in native camera apk.
Find the native resolutions in arrays or strings xml.
Save resolutions found in port apk for later reference. These are the values we are going to replace with stock hexadecimal values.
Use a Decimal to Hexadecimal Converter to find the values for the resolutions in smali.
For example 1080 would be 438 and 1920 would be 780.
For this value we will intrepid the hexadecimal value as 0x438 and 0x780 respectively in andriod.
When we are looking for the resolutions in port apk we grep the values based on the hexadecimal.
So in an example if resolution of port camera is 1920x1080 and stock is 1080x1920, then in smali we might get a value of 0x438, 0x780 in assortment. Simply replace 0x438 with 0x780 and 0x780 with 0x438.
Replace these values in port apk with the stock equivalent. Recompile. 
Keep this open in one window.
Now open up camera and take log.
Most likely you would get a error saying missing resolution

black-silver-animated-line.gif


KNOX STATUS REVERT (Kernel)

@topjohnwu for reset prop

The reset prop source was removed from topjohnwu thread however you could use the prebuilt binary in his magisk release zips.

1. Pick your device arch and remove binary from zip

2. Now download a tool to extract boot images.

3. Navigate to sbin and drop your resetprop binary.

4. Get back to root directory and add this file http://www106.zippyshare.com/v/AzldZO7A/file.html

5. Now in init.rc add this code

Code:
# Call Knox Reset
service knox-daemon /system/bin/sh /init.knox.sh
    class main
    user root
    oneshot

Device Specific Section
(Section will detail device specific edits for particular devices once users post.)

So I haven't really made a new list of smalis for porting roms, but here's the ones just to boot ANY 6.0.1 firmware on J5 2015.
Debug
GpsLocationProvider
KnoxVpnPacProcessor
TADriver
SchedPolicyManager


No Pm type message below.
Also :p I will post below all the logs I used to boot Note 7 firmware on my s5
 
Last edited:

thereassaad

Inactive Recognized Contributor
Aug 22, 2013
7,618
9,710
Bierut
Well ,,


Malbert , im sure 100% , too much things missed in ur guide mate , this way how u do it isn't an how to ported rom from different devices , or high end to previous years device's , sorry to say this but this isn't a full guide & its just a point for drop app/prev/fram to ur stock base then try to booted then with bootloop logcat u will got what's the missing things well ,




Sorry to say it but this isn't a Full guide for HOW TO PORT Roms , ....



Edit ::


Next time try to be more specific & gives more details & which files / jars / smali / apks / libs / xml / config & which we can use & got from ported base to stock base ,
 
Last edited:

malbert16442

Senior Member
Nov 19, 2014
4,122
7,687
Area 51(◕_◕)
Well ,,


Malbert , im sure 100% , too much things missed in ur guide mate , this way how u do it isn't an how to ported rom from different devices , or high end to previous years device's , sorry to say this but this isn't a full guide & its just a point for drop app/prev/fram to ur stock base then try to booted then with bootloop logcat u will got what's the missing things well ,




Sorry to say it but this isn't a Full guide for HOW TO PORT Roms , ....



Edit ::


Next time try to be more specific & gives more details & which files / jars / smali / apks / libs / xml / config & which we can use & got from ported base to stock base ,

Thanks assaad will fix when I get time I get what you are saying but this is a intro. I can't explicitly state which jars apks or libs are needed because they are all different for different devices. XML and permissions I could elaborate on but you can't expect me to possibly give a overview of everything right. Hope you understand thanks. I never explicitly stated this was a full guide and you shouldn't treat it as such.

Sent from my SM-A810S using Tapatalk
 

thereassaad

Inactive Recognized Contributor
Aug 22, 2013
7,618
9,710
Bierut
Well my friend , i never do ,,

For example without editing systemserver.smali the rom will never booted & u know this very well , i just means to be very static for some useful tips for such framework / & well known smali that need to be our eyes on them .. that's all my point means ..

Good luck my friend
 

malbert16442

Senior Member
Nov 19, 2014
4,122
7,687
Area 51(◕_◕)
Well my friend , i never do ,,

For example without editing systemserver.smali the rom will never booted & u know this very well , i just means to be very static for some useful tips for such framework / & well known smali that need to be our eyes on them .. that's all my point means ..

Good luck my friend
Ohh I understand what you are saying. I will expand on this guide when I get time hopefully you also could help support and add to this guide as XDA is a community. ? Over time we could help many users thanks for your advice.

Sent from my SM-A810S using Tapatalk
 

Aj.xda

Senior Member
Feb 28, 2013
386
1,347
Samsung Galaxy S23 Ultra
I have successfully ported s7 and n7 firmware using this guide.
Awesome guide!. 9/10

I have one small issue, in your log n79 you have "E SQLiteDatabase: " How did you fix this error? I am having the same issue, with one of my builds.


Solved:
FileSeek ftw!
 
Last edited:

malbert16442

Senior Member
Nov 19, 2014
4,122
7,687
Area 51(◕_◕)
I have successfully ported s7 and n7 firmware using this guide.
Awesome guide!. 9/10

I have one small issue, in your log n79 you have "E SQLiteDatabase: " How did you fix this error? I am having the same issue, with one of my builds.


Solved:
FileSeek ftw!
Thanks happy for you. How would you rate your level of expertise so I could set a difficulty level for this

Sent from my Pixel XL using Tapatalk
 
  • Like
Reactions: nexnecisn

Allooosh98

Senior Member
Nov 11, 2015
378
3,738
Baniyas
thnx alot @malbert16442 .... but i have 2 bugs i didnt manage to fix
1-wifi work and i can see available network but when i try to connect i get 'failed to connect' .. I tried to use my stock wifi-service.jar but the device not boot)
2-Camera work (back and front) and i can take photos...but when i try to record video i get 'Recording faield'
fixed
 

Attachments

  • Screenshot_20161202-125946.jpg
    Screenshot_20161202-125946.jpg
    46 KB · Views: 1,342
  • Screenshot_20161202-125958.png
    Screenshot_20161202-125958.png
    27.9 KB · Views: 1,324
  • Screenshot_20161202-130005.png
    Screenshot_20161202-130005.png
    34.6 KB · Views: 1,321
Last edited:

malbert16442

Senior Member
Nov 19, 2014
4,122
7,687
Area 51(◕_◕)
thnx alot @malbert16442 ...using this guide i ported S7e, G532F to j7.....but i have 2 bugs i didnt manage to fix
1-wifi work and i can see available network but when i try to connect i get 'failed to connect' .. I tried to use my stock wifi-service.jar but the device not boot)
2-Camera work (back and front) and i can take photos...but when i try to record video i get 'Recording faield' fixed

When you add wifi serivce jar you have edits to make in framework you will see in your log

But don't work I have a fix for stock files too. I work on this guide this weekend make it look better
 

moluntic

Senior Member
Feb 10, 2015
118
575
IRAN - JUYBAR
hey @malbert16442 bro can u help me to fix the problem?? there is a E art error in logcat that i cant fix it :

E art : No implementation found for int android.os.storage.sensitive.SecureStorageLSM.lsmInitialize() (tried Java_android_os_storage_sensitive_SecureStorageLSM_lsmInitialize and Java_android_os_storage_sensitive_SecureStorageLSM_lsmInitialize__)

i checked smali files but its as same as stock,i attached the log,if its ok look at it and tell me what should i do
 

Attachments

  • logcat.txt
    4.6 KB · Views: 107
  • Like
Reactions: Sal7ono

Top Liked Posts

  • There are no posts matching your filters.
  • 108
    samsung_logo_191_1.jpg

    (Success Stories)

    I have successfully ported s7 and n7 firmware using this guide.
    Awesome guide!. 9/10
    @malbert16442 this is pure GOLD. Gave you all my thanks for today. I'll try it myself today. Also waiting patiently for updates [emoji28] . Cheers!
    is the reason i was allowed me to port my own Rom!:D


    black-silver-animated-line.gif


    rsz_kernel_logo_600_1.png


    1. Kernel is second most important because it determines if rom boots or whether
    we could access a log.

    2. Since we are trying to boot a rom not meant to be on our device, it could be alittle hard getting this thing to run.

    3 Contact a kernel dev and ask them for adb insecure kernel or a kernel with usb debugging enabled at boot. This will help us obtain those logs at boot.

    4. In some rare cases Logs might show that specific kernel services are not accessible.
    In this case we only change the init.environ.rc. Which has the frameworks needed to boot.

    5. If you can't get kernel logging at boot use this in recovery after 2 mins of booting.
    Code:
    adb pull /data/tombstones

    6.Update

    Hello All! I am posting this fix because on my Note Edge, I wasn't able to get logcat or adb access at boot, no matter what property I set, it didn't work. I finally figured out a way to get true logcat right as the boot animation comes up.

    First off, you NEED Notepad++ if you don't want garbage clumped up editing.

    1. In Android Image Kitchen, depack the Boot image.
    2. Then, go to split image and modify boot.img-cmdline and add
    Code:
    buildvariant=userdebug
    .
    3. Save that file, then go to the ramdisk folder and edit your default.prop. change these values.
    Code:
    ro.secure=1  > ro.secure=0
    ro.adb.secure=1 > ro.adb.secure=0
    ro.debuggable=0 > ro.debuggable=1
    4. Save that file, then go to init.rc, and use find to search for adbd to jump to this.
    Code:
    # adbd is controlled via property triggers in init.<platform>.usb.rc
    5. Change the original code from
    Code:
    service adbd /sbin/adbd --root_seclabel=u:r:su:s0
         class core
        socket adbd stream 660 system system
        disabled
        seclabel u:r:adbd:s0
    
    TO:
    
    service adbd /sbin/adbd --root_seclabel=u:r:su:s0
        disabled
        socket adbd stream 660 system system
        seclabel u:r:adbd:s0

    6. Change this to new code.
    Code:
    # adbd on at boot in emulator
    on property:ro.kernel.qemu=1
        start adbd
    
    TO:
    
    # allows adbd at boot with property trigger below
    on property:ro.debuggable=1
        write /sys/class/android_usb/android0/enable 0
        write /sys/class/android_usb/android0/idVendor 04E8
        write /sys/class/android_usb/android0/idProduct 6860
        write /sys/class/android_usb/android0/functions adb
        write /sys/class/android_usb/android0/enable 1
        start adbd
    7. Rebuild the kernel and install in TWRP or however you install kernels, ADB will be accessible right at boot so nothing is lost during logging. If your kernel doesn't need this, don't bother, but if like me, you couldn't get anything, this will fix your issues.

    In some cases, you will still need to push adb_keys to /data/misc/adb/, however.


    @malbert16442 Please consider putting this in OP for those who have issues getting logcat at boot.

    black-silver-animated-line.gif


    Part 2
    adb-logo.png


    Adb is key in any port. Adb is the secret. It gives us the ability to access logs be able to debug issues in our ROM.

    1. Download adb drivers

    http://xdaforums.com/showthread.php?p=48915118#post48915118
    Thanks Member @Snoop05

    2. Test adb by using 'adb devices" in cmd

    You should see online

    3. If offline try using adb kill-server and repeat step 2.

    4. When making a loging for these ports we use the phrase adb logcat *:E > filename

    this ensures that we filter the logs by errors and remove the long set of lines like thermal updates ...etc

    black-silver-animated-line.gif



    Part 3


    In order to port firmware

    1. Download Stock firmware extract it with tool
    Websites to get stock firmware are
    http://updato.com/firmware-archive-select-model
    or https://xdaforums.com/galaxy-tab-s/general/tool-samfirm-samsung-firmware-t2988647

    2.We will deodex our rom using Fulmics or similar deodexer
    Either a kitchen like "http://xdaforums.com/chef-central/android/kitchen-superrs-kitchen-t3202296/page26" or similar.
    Thanks @SuperR
    https://xdaforums.com/android/software-hacking/tooll-03-12-fulmics-deodexer-1-0-t3512081
    Thanks @xpirt

    3. Learn how to use APK DECOMPILE TOOLS SUCH AS TICKLEMEANDRIOD
    http://xdaforums.com/showthread.php?t=1633333
    Thanks @Ticklefish

    4. Remove Apps Priv-app and Framework of base. In a new folder use Fulmics to deodex this. Store somewhere safe.

    5. Deodex Port and copy the Apps, Framework and Priv-app into the Base of stock rom.

    6. In Ticklemeandriod you notice we have 6 work Areas. For our Roms we will only need two. The most common files we will use are services.jar, and framework.jar.

    7. Take the services and framework our our Port and decompile in work area 1.

    8. Take the services and framework of our Base and decompile in work area 2.

    9. We will Perform a quick Step to help if App signatures become corrupt or cannot be read.

    Follow this guide by @ikrom

    http://xdaforums.com/showpost.php?p=62496153&postcount=2957

    10. After this lets move to debugging our apps and frameworks.


    black-silver-animated-line.gif



    Part 4 (Tools and debugging)

    My favorite tools to use include WinMerge and FileSeek

    1. Winmerge enables us to compare two files. For example a stock jar and one of our port.

    2. File seek allows us to search for a specific references.

    I use file seek to search for weird terminology I see on my log.

    3. Terminology


    black-silver-animated-line.gif


    Part 5 ( Terminology)


    1. In a logcat we are looking for three things when debugging. "E JavaBinder:", "E art", "E AndroidRuntime: FATAL EXCEPTION:"

    2. The order to debug we search in logcat. When beginning it is not specific but, I usually search for Art errors first.

    3. So for example if I get in my logcat
    Code:
    "01-01 01:26:25.169  5599  7183 E JavaBinder: java.lang.NoSuchMethodError: No virtual method activityPauseTrigger(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Landroid/content/pm/ApplicationInfo;)V in class Lcom/android/internal/app/ActivityTrigger; or its super classes (declaration of 'com.android.internal.app.ActivityTrigger' appears in /system/framework/framework.jar:classes2.dex)"

    I got the location which is framework jar Class2

    Code:
    activityPauseTrigger(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Landroid/content/pm/ApplicationInfo;)V is the missing info in the port smalis and

    log says it is somewhere in
    Code:
    Lcom/android/internal/app/ActivityTrigger; or the files with idential names to Activity trigger

    4. In this case missing method could be found in stock smali. This is where we use win merge to cleanly copy new method from stock to port.

    5. But Mike what if The logcat doesnt tell me location. We will then use fileseek in this instance.

    Example: Log tells me
    Code:
     "01-01 00:24:17.509  7524  7539 E JavaBinder: java.lang.UnsatisfiedLinkError: No implementation found for void com.android.internal.app.ActivityTrigger.native_at_pauseActivity(java.lang.String) (tried Java_com_android_internal_app_ActivityTrigger_native_1at_1pauseActivity and Java_com_android_internal_app_ActivityTrigger_native_1at_1pauseActivity__Ljava_lang_String_2)
    "

    No implementation means that we must remove this file as it is not found in the libs. What location? We dont know yet ?

    Code:
    com.android.internal.app.ActivityTrigger.native_at_pauseActivity(java.lang.String
    is what we are looking for

    According to fileseek I would look for pauseActivity because it is a keyword

    According to file seek I may get 100 references but I see one that says
    Code:
    .method ActivityTrigger.native_at_pauseActivity

    I would then use winmerge to cleanly delete/copy the file from my stock smali to the new one. From the location I found in Fileseek.

    6. Let me give a example of a Runtime error.

    Code:
    "07-25 09:17:08.975 16379 16379 E AndroidRuntime: java.lang.NoSuchMethodError: No interface method setDataFromNSFLP(ILandroid/os/Bundle;)V in class Landroid/location/ILocationManager; or its super classes (declaration of 'android.location.ILocationManager' appears in /system/framework/framework.jar)

    So log told us to look in framework for a file with
    Code:
    setDataFromNSFLP(ILandroid/os/Bundle;)V

    Boot up file seek and repeat steps above.


    black-silver-animated-line.gif


    Part 6

    So we booted now what.

    Lets now work on fixing local errors.

    Use logcat to possible fcs and reboots.

    All firmware edits are different so this guide will help if you are learning the way android works.

    What to look out for

    Remember the Base folder we deodexed. We will use this to help fix issues in our rom.

    1. Take the McRegistry Folder and ffffffff0000000 File move this to our booted rom.

    2. Now in the Ported firmware copy the Fonts folder and the files named font in /etc to our booted rom.

    3. Delete these folders - " preloadedmdm ", " sipdb " and " tts from booted rom and replace with that from ported firmware.

    4. Open " Media " folder in booted rom

    Delete Audio folder
    Replace with Ported firmware audio folder.

    5. In /etc/permission add the missing software permissions not hardware like slocation or camera-flash.

    6. In build-prop
    Replace these values with that of port.

    Code:
    ro.build.scafe.size=
    ro.build.scafe.shot=
    ro.build.scafe.cream=
    ro.build.scafe.version=
    ro.com.google.gmsversion=
    ro.build.version.sdl=
    ro.config.ringtone=
    ro.config.notification_sound=
    ro.config.alarm_alert=
    ro.config.media_sound=
    ro.config.ringtone_2=
    ro.config.notification_sound_2=

    7. Add this code to build-prop

    Code:
    wlan.wfd.hdcp=disable

    black-silver-animated-line.gif


    Let's Fix Messages and Phone FCS on first boot

    1. From ported from take the libselinux.so to fix message fcs

    2. To fix Phone fcs take the mapconprovider.xml from port

    black-silver-animated-line.gif


    64 bit firmware to 32bit

    1. Replace 64 bit libs with 32 bit alternatives.

    2. You could find 32 bit libs in 32 bit firmware.

    32bit all that could be found will be attached here for all users

    black-silver-animated-line.gif


    Fix location problems in Rom

    With our services.jar decompiled take these smalis from base and use Winmerge to copy to Port jar.
    Code:
    services.jar\smali\com\android\server\location folder to that of port

    also take the
    Code:
    services.jar\smali\com\android\server\LocationManagerService$xxx
    Smalis and move from base to port location.

    black-silver-animated-line.gif


    imageedit_1_2259753886.png


    1. Take NFC.apk and Bluetooth.apk from base and move to new Rom folder.

    OR A more complex NFC fix would be to look in PackageManagerService.smali
    of services.jar

    look for the NFC model of the device you are porting from

    1. So use FileSeeker
    to search for method with "supportNfc"

    2. Replace it with your model number.

    Example the NFC number of Note 7 is S3FWRN5
    I would replace it with the NFC number of S5 which is NXP_PN547C2


    Blur


    https://xdaforums.com/showpost.php?p=69547250&postcount=10031

    black-silver-animated-line.gif


    AOD FRAMEWORK FIX
    1AHEbOB.jpg


    Credits :
    @Patrick.H (NX Team)
    @karkasss (NX Team)
    @Develoid ALT and F4 (AOD touch / Bluelight filter fix)
    @asc1977, @DaOldMan (AOD brightness control)
    (Please copy & paste when you add our credits)

    Download this file extract to services.jar

    https://mega.nz/#!KgMxwQDR!g0yy7a6Izk8U8szRsggaZAXLaF4pjSMYAc8p6kOjIs4

    Compare the PowerManagerService Smails.

    then recompile :cool:


    OR
    thanks @oluwaponmile
    follow this guide

    https://xdaforums.com/showpost.php?p=69594939&postcount=8139



    black-silver-animated-line.gif


    Lets fix ported Cameras

    Code:
    [SIZE="3"]GUIDE IS IN PROGRESS[/SIZE]
    Debug solution not fix:
    
    This will be a hard thing to accomplish. Also make sure that Camera is recompiled using New signatures.
    First lets find the native resolutions of your camera. For this we look in native camera apk.
    Find the native resolutions in arrays or strings xml.
    Save resolutions found in port apk for later reference. These are the values we are going to replace with stock hexadecimal values.
    Use a Decimal to Hexadecimal Converter to find the values for the resolutions in smali.
    For example 1080 would be 438 and 1920 would be 780.
    For this value we will intrepid the hexadecimal value as 0x438 and 0x780 respectively in andriod.
    When we are looking for the resolutions in port apk we grep the values based on the hexadecimal.
    So in an example if resolution of port camera is 1920x1080 and stock is 1080x1920, then in smali we might get a value of 0x438, 0x780 in assortment. Simply replace 0x438 with 0x780 and 0x780 with 0x438.
    Replace these values in port apk with the stock equivalent. Recompile. 
    Keep this open in one window.
    Now open up camera and take log.
    Most likely you would get a error saying missing resolution

    black-silver-animated-line.gif


    KNOX STATUS REVERT (Kernel)

    @topjohnwu for reset prop

    The reset prop source was removed from topjohnwu thread however you could use the prebuilt binary in his magisk release zips.

    1. Pick your device arch and remove binary from zip

    2. Now download a tool to extract boot images.

    3. Navigate to sbin and drop your resetprop binary.

    4. Get back to root directory and add this file http://www106.zippyshare.com/v/AzldZO7A/file.html

    5. Now in init.rc add this code

    Code:
    # Call Knox Reset
    service knox-daemon /system/bin/sh /init.knox.sh
        class main
        user root
        oneshot

    Device Specific Section
    (Section will detail device specific edits for particular devices once users post.)

    So I haven't really made a new list of smalis for porting roms, but here's the ones just to boot ANY 6.0.1 firmware on J5 2015.
    Debug
    GpsLocationProvider
    KnoxVpnPacProcessor
    TADriver
    SchedPolicyManager


    No Pm type message below.
    Also :p I will post below all the logs I used to boot Note 7 firmware on my s5
    26
    All the edits used to boot Note 7 firmware on S5 it is different for every device.

    https://mega.nz/#!8ZtzWCJR!rqTrvD5K3pUvHOAMq_540L_z7Hx0LFZawSzpobFDF98
    9
    Well ,,


    Malbert , im sure 100% , too much things missed in ur guide mate , this way how u do it isn't an how to ported rom from different devices , or high end to previous years device's , sorry to say this but this isn't a full guide & its just a point for drop app/prev/fram to ur stock base then try to booted then with bootloop logcat u will got what's the missing things well ,




    Sorry to say it but this isn't a Full guide for HOW TO PORT Roms , ....



    Edit ::


    Next time try to be more specific & gives more details & which files / jars / smali / apks / libs / xml / config & which we can use & got from ported base to stock base ,
    8
    Hello guys been a while probably will update thread later this month to add instructions on how to boot roms with same CPU and GPU. Any other suggestions and solutions would be added if requested.

    Sent from my SM-G960U using Tapatalk
    7
    Learned new debug problems in Sammy Roms updating guide soon, making it more appealing too. Happy that one person actually made a port from this guide.