[UNOFFICIAL] Xposed for Samsung Lollipop by arter97

Search This thread

arter97

Recognized Developer
Oct 14, 2012
3,890
34,674
26
Seoul
/* Intro */

3 months after the first functional Xposed for Lollipop by @rovo89 was introduced,
now here comes *somewhat* functional Xposed for Samsung Lollipop firmware.

Embrace yourself.

/* Technical background */

Why were Samsung users left out of the Xposed party?
Because Samsung has massively customized ART runtime included in their firmwares compared to AOSP.
And plus, because the system partition has so little space left, they have additionally implemented xz decompression on top of ART.
Those 2 main reasons has differentiated Samsung's ART from the rest of the ROM's ART.

More technical information on post 2.

/* Disclaimer */

Your warranty is now void.
I am not responsible for bricked devices, dead SD cards,
thermonuclear war, or you getting fired because the alarm app failed. Please
do some research if you have any concerns about features included in this project
before flashing it! 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. Hard. A lot.

/* Prerequisite */

Due to my skills limitation, only deodex'ed ROMs are supported for now.
For more explanations, checkout post 2.

/* Supported firmwares */

Every ARMv7(32-bit) Samsung Lollipop Android 5.0 deodex'ed firmware should work.
But please note that I have tested this only on Galaxy S4, Note 3 and S5.

For 64-bit, please check http://xdaforums.com/xposed/unofficial-xposed-samsung-lollipop-t3180960 by @wanam
For 32-bit on Android 5.1, I cannot develop on it as I don't have any 32-bit devices capable of running Android 5.1.

/* Before you download ... */

Donate to @rovo89
Donate to @wanam
Show your thanks to @_riddle
Without these people, this would not have been possible at all.

/* Details about binaries */

CyanogenMod's ART runtime changes merged - Performance improvements
Compiled using Linaro GCC 4.8
Method in-lining optimizations made in Android 5.1 merged
Few Android M ART runtime changes which were early-adopted by Samsung merged
-O3 and other compiler optimizations added
Release separated to "exynos" and "snapdragon" versions for more compiler optimizations
Optimize everything enabled

/* Download */

Attached below on XDA

/* How to install */

1. No matter what you do, back-up first.
2. Install XposedInstaller app from http://xdaforums.com/showthread.php?t=3034811
3. Flash the attached Xposed framework zip on the custom recovery.

/* How to uninstall for V1 ~ V7 */

1. Flash the attached Xposed uninstaller zip on the custom recovery.

/* v75+ sticky note */

With v75 and up, this port do not longer touches core-libart.jar, thanks to @wanam.
This would potentially increase compatibility and fix other weirdness such as malfunctioning email app.
However, this introduces some variables.

First, there are more versions that you should choose.
Exynos and Snapdragon is quite self-explanatory, but there are now new "requestConcurrentGC" version for maximizing compatibility.

Don't know what to choose? Don't worry, it won't break your device if you install a wrong one.
If you install a wrong one, the installer will simply tell you that you should go with the other version.


As far as my testing goes, only the Korean Note 3 firmwares should install "requestConcurrentGC" version.

Uninstaller part have changed too.
You need to use uninstaller provided directly by @rovo89.
Do not use my uninstaller for v75 and up.
 

Attachments

  • xposed-sdk21-arm-20150430-arter97.zip
    5.2 MB · Views: 325,781
  • xposed-sdk21-arm-20150430-arter97-V2.zip
    5.2 MB · Views: 52,387
  • xposed-sdk21-arm-20150430-arter97-V3.zip
    6.4 MB · Views: 171,315
  • xposed-sdk21-arm-20150430-arter97-V4-generic.zip
    6.5 MB · Views: 51,343
  • xposed-sdk21-arm-20150430-arter97-V4-krait.zip
    6.6 MB · Views: 53,081
  • xposed-v65-sdk21-arm-arter97-V5-generic.zip
    6.5 MB · Views: 102,601
  • xposed-v65-sdk21-arm-arter97-V5-krait.zip
    6.6 MB · Views: 87,276
  • xposed-v71-sdk21-arm-arter97-V6-exynos.zip
    6.2 MB · Views: 69,650
  • xposed-v71-sdk21-arm-arter97-V6-snapdragon.zip
    6.4 MB · Views: 110,694
  • xposed-uninstaller-arter97.zip
    422.3 KB · Views: 78,910
  • xposed-v75-sdk21-arm-arter97-exynos.zip
    6.1 MB · Views: 94,407
  • xposed-v75-sdk21-arm-arter97-exynos_requestConcurrentGC.zip
    6.1 MB · Views: 47,433
  • xposed-v75-sdk21-arm-arter97-snapdragon.zip
    6.1 MB · Views: 155,643
  • xposed-v75-sdk21-arm-arter97-snapdragon_requestConcurrentGC.zip
    6.1 MB · Views: 88,965
Last edited:

arter97

Recognized Developer
Oct 14, 2012
3,890
34,674
26
Seoul
/* Technical information and Q&A */

Q: What took you so long?
A: @rovo89 has explained himself. http://xdaforums.com/showpost.php?p=58949255&postcount=3

Q: Okay, you don't seem like a better developer than @rovo89. How did you do it?
A: Of course not. This is the main reason why deodex'ed ROM is a prerequisite.
Samsung has implemented all sorts of funny stuffs on their version of ART. See the link above.
To workaround this, converting a ROM to deodex'ed format somewhat brings back the oat formats to *AOSP-like* dex format(Huge thanks to @_riddle).
After deodexing is done, we can use source-built ART binaries with minimal modifications.
But due to my coding skills, I had to modify core-libart.jar to make it work again.
The core-libart.jar differs from every single device out there and it'll be a real headache to match with 1 ART binary version. That's why I've included the core-libart.jar on the installation zip file.
The included core-libart.jar has 2 different versions to correspond on the type of ROM user is using.
1 : Firmwares with appStartup
2 : Firmwares without appStartup
After deodexing, installing new ART stuffs, we can start the boot-up sequence.
Unfortunately again, /system/bin/installd passes some arguments that AOSP version of dex2oat do not understand. To bypass this, I've patched oat tools to ignore unimplemented arguments.
Now we can see the good old "Android is upgrading" pop-up and go have a cup of coffee while it dexopts all those hundreds of bloatwares.

Q: Fantastic, but now I get a continuous logcat burps - http://pastebin.com/MxeAE76n
A: To avoid that, that's why I've put 2 different versions of core-libart.jar. But unfortunately on those cases, my installer has failed to recognize which version your ROM uses.
During the installation, the installer will output a message on which core-libart.jar is installed on your system.
After you see that logcat stuffs, please change to the opposite version of core-libart.jar the installer told you.
So for example, if the installer says core-libart1.jar is installed, extract the zip and replace /system/framework/core-libart.jar with core-libart2.jar within the zip.

Q: How do I deodex my ROM?
A: @joeldroid and @svadev have an awesome tool for you to deodex your ROM.
Go check http://xdaforums.com/android/software-hacking/script-app-joeldroid-lollipop-batch-t2980857 and http://xdaforums.com/galaxy-s5/general/tool-deodex-tool-android-l-t2972025
Both worked flawlessly for me.

Q: Gimme tha sources!
A: https://github.com/arter97/android_art/tree/samsung-lollipop

Q: AAA and BBB modules are incompatible!
A: Most likely because they don't support Touchwiz Lollipop *yet*.

Q: You mother father gentleman, you bricked my phone!
A: Unfortunately, I had tested those only on 3 devices which, ironically, has the same processor. Maybe Exynos family is not support, I don't know.
I told you to back-up beforehand. Post log and we can probably work together and add your device/ROM supported.
 
Last edited:

arter97

Recognized Developer
Oct 14, 2012
3,890
34,674
26
Seoul
/* Changelog */

v75
Xposed v75 merged
(Fixes boot issue with latest Android 5.0 firmwares)
Method changed to use @wanam's XposedBridge

/* v75+ sticky note */

With v75 and up, this port do not longer touches core-libart.jar, thanks to @wanam.
This would potentially increase compatibility and fix other weirdness such as malfunctioning email app.
However, this introduces some variables.

First, there are more versions that you should choose.
Exynos and Snapdragon is quite self-explanatory, but there are now new "requestConcurrentGC" version for maximizing compatibility.

Don't know what to choose? Don't worry, it won't break your device if you install a wrong one.
If you install a wrong one, the installer will simply tell you that you should go with the other version.


As far as my testing goes, only the Korean Note 3 firmwares should install "requestConcurrentGC" version.

Uninstaller part have changed too.
You need to use uninstaller provided directly by @rovo89.
Do not use my uninstaller for v75 and up.


V6
Xposed v71 merged
Possible performance degradation issue fixed
Releases renamed to "exynos" and "snapdragon", now the "exynos" version is properly optimized for Exynos processor
Uninstaller added
Optimize everything enabled

V5
Xposed v65 merged - Now compatible with alpha4
Do not attempt to use uninstaller provided by rovo89, it will brick your device for now - TODO

V4
ART runtime & Xposed binary changes by rovo89 merged - Fixes logging and some other misc issues
CyanogenMod's ART runtime changes merged - Performance improvements
Compiled using Linaro GCC 4.8
Method in-lining optimizations made in Android 5.1 merged
Few Android M ART runtime changes which were early-adopted by Samsung merged
Few core-libart.jar smali durps fixed
-O3 and other compiler optimizations added
Release separated to "generic" and "krait" versions for more compiler optimizations
Generic - Devices with Exynos or other non-Krait Snapdragon SoCs; If you don't know which to choose, go with Generic.
Krait - Devices with Quadcore Krait Snapdragon SoCs.

V3
Another version of core-libart.jar added for GT-i9505 compatibility
(Firmwares without isMdfEnforced)
This update is unnecessary for devices which already runs Xposed with no issues.

V2
Source code modification attempted to hopefully fix boot issues with devices like Galaxy Alpha.
https://github.com/arter97/android_art/commit/eed217701cc2d3a57f940c5bd69b393c768777a9
This update is unnecessary for devices which already runs Xposed with no issues.
 
Last edited:

arter97

Recognized Developer
Oct 14, 2012
3,890
34,674
26
Seoul
/* Known issues */

- Galaxy Alpha users apparently get a bootloop with this.
A kind user provided a logcat, will look into it ASAP.

Solved with V2.

- GT-I9505 users apparently get a continuous Google Apps FCs with this.
Solved with V3.
 
Last edited:

ktetreault14

Senior Member
Feb 12, 2012
4,268
1,805
Largo
Damn no support for s6 edge

---------- Post added at 05:55 PM ---------- Previous post was at 05:54 PM ----------

Looks great though. No decomiling involved
 
  • Like
Reactions: mlongue1

iNTER5LOve

Senior Member
Feb 3, 2012
279
33
Goood good
works fine on my galaxy s5 dous BOC2
xposed moudle and install apk normally works fine
 

darkera13

Senior Member
Jun 19, 2012
567
6,012
www.gamesbai.com
Which one is the original method yours or arter's?
I'm confused

Me. I show a demo video 1 week ago. I public it first, even dont say but he base on my work is the true.
Xposed dont work with Samsung Lollipop Roms long time ago, the long time enough for all of you think this mission is impossible until i public my guide and he public after that about few hours.
 

noobiedev83

Senior Member
May 12, 2015
232
72
Me. I show a demo video 1 week ago. I public it first, even dont say but he base on my work is the true.
Xposed dont work with Samsung Lollipop Roms long time ago, the long time enough for all of you think this mission is impossible until i public my guide and he public after that about few hours.

It should at least give you credit for that because I do remember seen your post a week ago
 

arter97

Recognized Developer
Oct 14, 2012
3,890
34,674
26
Seoul
Me. I show a demo video 1 week ago. I public it first, even dont say but he base on my work is the true.
Xposed dont work with Samsung Lollipop Roms long time ago, the long time enough for all of you think this mission is impossible until i public my guide and he public after that about few hours.

Um, no offense but your method quite differs from mine.
I left out String.clear() and modified core-libart.jar to be compatible universally.
Your guide did not help me in anyways.

And I was also working on this weeks ago. Just didn't share it with the world which were *not-working* then.
 

arter97

Recognized Developer
Oct 14, 2012
3,890
34,674
26
Seoul
You know what you do. Dont lie yourself.

Stealing is the least thing to do on my mind, as I have gone through the same thing over and over.
Ask my Twitter's followers.

I can personally guarantee you that I have not stolen anything from you.

Ask me how I did it more specifically, I'll happily explain it to you.
 

Top Liked Posts

  • There are no posts matching your filters.
  • 826
    /* Intro */

    3 months after the first functional Xposed for Lollipop by @rovo89 was introduced,
    now here comes *somewhat* functional Xposed for Samsung Lollipop firmware.

    Embrace yourself.

    /* Technical background */

    Why were Samsung users left out of the Xposed party?
    Because Samsung has massively customized ART runtime included in their firmwares compared to AOSP.
    And plus, because the system partition has so little space left, they have additionally implemented xz decompression on top of ART.
    Those 2 main reasons has differentiated Samsung's ART from the rest of the ROM's ART.

    More technical information on post 2.

    /* Disclaimer */

    Your warranty is now void.
    I am not responsible for bricked devices, dead SD cards,
    thermonuclear war, or you getting fired because the alarm app failed. Please
    do some research if you have any concerns about features included in this project
    before flashing it! 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. Hard. A lot.

    /* Prerequisite */

    Due to my skills limitation, only deodex'ed ROMs are supported for now.
    For more explanations, checkout post 2.

    /* Supported firmwares */

    Every ARMv7(32-bit) Samsung Lollipop Android 5.0 deodex'ed firmware should work.
    But please note that I have tested this only on Galaxy S4, Note 3 and S5.

    For 64-bit, please check http://xdaforums.com/xposed/unofficial-xposed-samsung-lollipop-t3180960 by @wanam
    For 32-bit on Android 5.1, I cannot develop on it as I don't have any 32-bit devices capable of running Android 5.1.

    /* Before you download ... */

    Donate to @rovo89
    Donate to @wanam
    Show your thanks to @_riddle
    Without these people, this would not have been possible at all.

    /* Details about binaries */

    CyanogenMod's ART runtime changes merged - Performance improvements
    Compiled using Linaro GCC 4.8
    Method in-lining optimizations made in Android 5.1 merged
    Few Android M ART runtime changes which were early-adopted by Samsung merged
    -O3 and other compiler optimizations added
    Release separated to "exynos" and "snapdragon" versions for more compiler optimizations
    Optimize everything enabled

    /* Download */

    Attached below on XDA

    /* How to install */

    1. No matter what you do, back-up first.
    2. Install XposedInstaller app from http://xdaforums.com/showthread.php?t=3034811
    3. Flash the attached Xposed framework zip on the custom recovery.

    /* How to uninstall for V1 ~ V7 */

    1. Flash the attached Xposed uninstaller zip on the custom recovery.

    /* v75+ sticky note */

    With v75 and up, this port do not longer touches core-libart.jar, thanks to @wanam.
    This would potentially increase compatibility and fix other weirdness such as malfunctioning email app.
    However, this introduces some variables.

    First, there are more versions that you should choose.
    Exynos and Snapdragon is quite self-explanatory, but there are now new "requestConcurrentGC" version for maximizing compatibility.

    Don't know what to choose? Don't worry, it won't break your device if you install a wrong one.
    If you install a wrong one, the installer will simply tell you that you should go with the other version.


    As far as my testing goes, only the Korean Note 3 firmwares should install "requestConcurrentGC" version.

    Uninstaller part have changed too.
    You need to use uninstaller provided directly by @rovo89.
    Do not use my uninstaller for v75 and up.
    216
    /* Technical information and Q&A */

    Q: What took you so long?
    A: @rovo89 has explained himself. http://xdaforums.com/showpost.php?p=58949255&postcount=3

    Q: Okay, you don't seem like a better developer than @rovo89. How did you do it?
    A: Of course not. This is the main reason why deodex'ed ROM is a prerequisite.
    Samsung has implemented all sorts of funny stuffs on their version of ART. See the link above.
    To workaround this, converting a ROM to deodex'ed format somewhat brings back the oat formats to *AOSP-like* dex format(Huge thanks to @_riddle).
    After deodexing is done, we can use source-built ART binaries with minimal modifications.
    But due to my coding skills, I had to modify core-libart.jar to make it work again.
    The core-libart.jar differs from every single device out there and it'll be a real headache to match with 1 ART binary version. That's why I've included the core-libart.jar on the installation zip file.
    The included core-libart.jar has 2 different versions to correspond on the type of ROM user is using.
    1 : Firmwares with appStartup
    2 : Firmwares without appStartup
    After deodexing, installing new ART stuffs, we can start the boot-up sequence.
    Unfortunately again, /system/bin/installd passes some arguments that AOSP version of dex2oat do not understand. To bypass this, I've patched oat tools to ignore unimplemented arguments.
    Now we can see the good old "Android is upgrading" pop-up and go have a cup of coffee while it dexopts all those hundreds of bloatwares.

    Q: Fantastic, but now I get a continuous logcat burps - http://pastebin.com/MxeAE76n
    A: To avoid that, that's why I've put 2 different versions of core-libart.jar. But unfortunately on those cases, my installer has failed to recognize which version your ROM uses.
    During the installation, the installer will output a message on which core-libart.jar is installed on your system.
    After you see that logcat stuffs, please change to the opposite version of core-libart.jar the installer told you.
    So for example, if the installer says core-libart1.jar is installed, extract the zip and replace /system/framework/core-libart.jar with core-libart2.jar within the zip.

    Q: How do I deodex my ROM?
    A: @joeldroid and @svadev have an awesome tool for you to deodex your ROM.
    Go check http://xdaforums.com/android/software-hacking/script-app-joeldroid-lollipop-batch-t2980857 and http://xdaforums.com/galaxy-s5/general/tool-deodex-tool-android-l-t2972025
    Both worked flawlessly for me.

    Q: Gimme tha sources!
    A: https://github.com/arter97/android_art/tree/samsung-lollipop

    Q: AAA and BBB modules are incompatible!
    A: Most likely because they don't support Touchwiz Lollipop *yet*.

    Q: You mother father gentleman, you bricked my phone!
    A: Unfortunately, I had tested those only on 3 devices which, ironically, has the same processor. Maybe Exynos family is not support, I don't know.
    I told you to back-up beforehand. Post log and we can probably work together and add your device/ROM supported.
    186
    I wanted to have one that works without debloating /system...

    I wanted to have one that works without debloating /system...

    So I made it myself.

    Installer v86.0 : Download Link (md5: ab25e60edad09fe27923d9e613a1199f)
    Note: v86.0 seems to have troubles for some people. If you don't want any problem, stick to v85.0, otherwise please send me logcats if it errors.

    UNINSTALLER v83.0 or above : Download Link (md5: 544636ff7a42766ac3db4d84f8b10986)

    This works with stock odexed / deodexed Samsung 5.0.x SDK21 Touchwiz firmwares. Debloating is not needed but there is a little possibility that it doesn't work on some devices. Have to use the bundled uninstaller when you want to revert it.

    IMPORTANT: It is only a test version which means it's not stable. Don't try this unless you enjoy beta testing.

    I appreciate all the feedbacks. Thank you guys!

    [Change log]
    v86.0
    1. Updated to v86 (http://xdaforums.com/showpost.php?p=67658523&postcount=35)
    v85.0
    1. Updated to v85 (http://xdaforums.com/showpost.php?p=67062979&postcount=34)
    v83.0
    1. Updated to v83 (http://xdaforums.com/showpost.php?p=66512549&postcount=31).
    2. Modified the installd binary not to exclude dexopt process on '*.odex' files. As a result, the installer script v83.0 doesn't append '.xposed' on odex files any more (Have a look at the flash-script.sh). This is kind of an experiment and probably needs more testing.
    Users coming from v80.1 or below MUST uninstall it using THIS_UNINSTALLER_v80.0 first!!
    v80.1
    1. Fixed an issue where KakaoTalk crashed.
    v80.0:
    1. Based on arter97's v79 test (http://xdaforums.com/showpost.php?p=64900847&postcount=3681)
    2. Made it work with stock odex firmware without debloating /system
    3. Merged official xposed v80 changes (http://xdaforums.com/showpost.php?p=65113226&postcount=28)
    4. Added MatrixDJ96's fix regarding Flashfire support. (http://xdaforums.com/showpost.php?p=65230465&postcount=3900)

    [Old versions]


    [References]
    1. android_art (5.0) : https://github.com/arter97/android_art/tree/samsung-lollipop-new
    2. android_art (5.1) : https://github.com/wanam/android_art/tree/xposed-lollipop-mr1
    3. xz-embedded : https://github.com/wanam/xz-embedded
    4. XposedBridge : https://github.com/wanam/XposedBridge

    < This is not my product. What I've done is assembling various people's works into one piece. Let's thank @rovo89, @wanam, and @arter97 for their great efforts. >

    * source: https://github.com/Liliniser/android_art

    Thanks.
    153
    /* Changelog */

    v75
    Xposed v75 merged
    (Fixes boot issue with latest Android 5.0 firmwares)
    Method changed to use @wanam's XposedBridge

    /* v75+ sticky note */

    With v75 and up, this port do not longer touches core-libart.jar, thanks to @wanam.
    This would potentially increase compatibility and fix other weirdness such as malfunctioning email app.
    However, this introduces some variables.

    First, there are more versions that you should choose.
    Exynos and Snapdragon is quite self-explanatory, but there are now new "requestConcurrentGC" version for maximizing compatibility.

    Don't know what to choose? Don't worry, it won't break your device if you install a wrong one.
    If you install a wrong one, the installer will simply tell you that you should go with the other version.


    As far as my testing goes, only the Korean Note 3 firmwares should install "requestConcurrentGC" version.

    Uninstaller part have changed too.
    You need to use uninstaller provided directly by @rovo89.
    Do not use my uninstaller for v75 and up.


    V6
    Xposed v71 merged
    Possible performance degradation issue fixed
    Releases renamed to "exynos" and "snapdragon", now the "exynos" version is properly optimized for Exynos processor
    Uninstaller added
    Optimize everything enabled

    V5
    Xposed v65 merged - Now compatible with alpha4
    Do not attempt to use uninstaller provided by rovo89, it will brick your device for now - TODO

    V4
    ART runtime & Xposed binary changes by rovo89 merged - Fixes logging and some other misc issues
    CyanogenMod's ART runtime changes merged - Performance improvements
    Compiled using Linaro GCC 4.8
    Method in-lining optimizations made in Android 5.1 merged
    Few Android M ART runtime changes which were early-adopted by Samsung merged
    Few core-libart.jar smali durps fixed
    -O3 and other compiler optimizations added
    Release separated to "generic" and "krait" versions for more compiler optimizations
    Generic - Devices with Exynos or other non-Krait Snapdragon SoCs; If you don't know which to choose, go with Generic.
    Krait - Devices with Quadcore Krait Snapdragon SoCs.

    V3
    Another version of core-libart.jar added for GT-i9505 compatibility
    (Firmwares without isMdfEnforced)
    This update is unnecessary for devices which already runs Xposed with no issues.

    V2
    Source code modification attempted to hopefully fix boot issues with devices like Galaxy Alpha.
    https://github.com/arter97/android_art/commit/eed217701cc2d3a57f940c5bd69b393c768777a9
    This update is unnecessary for devices which already runs Xposed with no issues.
    97
    /* Known issues */

    - Galaxy Alpha users apparently get a bootloop with this.
    A kind user provided a logcat, will look into it ASAP.

    Solved with V2.

    - GT-I9505 users apparently get a continuous Google Apps FCs with this.
    Solved with V3.