[PORT] Fortnite for Android with device check disabled (v5.21.2-4296531) - Android Apps and Games

Fortnite for Android with device check disabled
Notes and warnings - READ THESE FIRST!:
This is an APK with only the device check disabled. It spoofs a Samsung Galaxy Note 9, so edit the settings accordingly for your device in game. You may experience optimisation issues. It still requires an ARM64 device (arm64-v8a), as that's all the code included supports.
THIS APK HAS A DIFFERENT SIGNATURE TO THE OFFICIAL GAME (MY SIGNATURE) - THIS IS A REQUIREMENT OF MODDING APKS - IT MAY BE VISIBLE TO EPIC. I AM NOT RESPONSIBLE FOR ACCOUNT BANS OR KICKS FROM THE GAME. YOU ARE RECOMMENDED TO USE A BACKUP OR THROWAWAY ACCOUNT IF YOU DO NOT WANT TO RISK YOUR ACCOUNT
This game uses Safety Net, and also looks for ADB being enabled. You must pass safety net and disable ADB to play the game. Whilst it is likely possible to mod that out, it would also enable cheaters to play the game more easily, and make Epic more likely to retaliate against this mod. For that reason, this release is as close to the official build as possible, with only the device spoofed. There is an experimental APK with the Safety Net test skipped - this may mean your account gets banned so be careful!
This APK does not grant access to the exclusive in-game skin
This APK will not install over the top of the official APK. Uninstall that first, then install this one.
FAQ
Got the "You were removed from the match due to internet lag, your IP or machine, VPN usage, or cheating. We recommend not utilizing VPN or proxy services while attempting to play Fortnite" error? Read this (don't post that you have it in this thread either)
Got "App not installed"? If you have another Fortnite build (a leak or release build, both count), uninstall it first then install this. Otherwise, your device does not meet the compatibility requirements
Got an error involving Safety Net, ADB or root? Make sure your device passes Safety Net, you have enabled Magisk Hide for the game (not just overall) and have disabled ADB/USB debugging. You can also try using the less-safe, Safety Net disabled APK
Got the 3GB RAM issue even with the RAM patched APK? The error your are seeing appears to be in native code, and is caused by a genuine lack of RAM, so it can't be solved
Got an error where it says "Fortnite encountered an error indicating an incompatibility with your mobile device's graphics driver"? Read this
Got an error where it says your device doesn't have OpenGL ES 3.1 support or floating point render target support? Your device isn't compatible
Game crashing during optimisation? Your device isn't compatible
Got GPU compatibility issues? Read this
Download
Version 5.21.2-4296531 (newest):
APK with the device/GPU/RAM check disabled, but does not spoof the Note 9 to the game. This will only work if you have an invite, like the official build, but is less laggy. Use the third APK if you don't mind lag and want to skip the invite system
Dead Link
APK with the device/GPU/RAM check disabled, as well as the Safety Net check disabled (warning: This may cause account bans):
Dead Link
APK with the device/GPU/RAM check disabled, fully spoofing the Note 9 (may cause lag/overheating):
Dead Link
Checksums:
Fortnite_com.epicgames.fortnite-5.21.2-4296531-Normal.apk:
MD5: 0E1CE4ADEEA4F2134E370F014EEB67B9
SHA1: BBE50D447EB120506E22DAD0522973D47CF9C095
Size: 90.3MB
Fortnite_com.epicgames.fortnite-5.21.2-4296531-NS.apk:
MD5: 30F683A6340535DB42BE4F2185AB4D85
SHA1: 5B4970EA07DD4216D46AEAED312158842F990169
Size: 90.3MB
Fortnite_com.epicgames.fortnite-5.21.2-4296531-Note9.apk:
MD5: C8C31820B275D84E31A6DAD977A44579
SHA1: 52380A0CFCA0245B5C785099F38B1746C3D52BDB
Size: 90.3MB
The APK is signed with my certificate, you can validate this in any mirrors by checking the MD5 and SHA1 of the APK file. You are free (and recommended to, if you wish) to mirror this file elsewhere and share it on for free (no charging or having people follow your social media or anything in return for the download), but please give credit if you do.
Old APKs:
Version 5.2.1-4288479:
APK with the device/GPU/RAM check disabled, but does not spoof the Note 9 to the game. This will only work if you have an invite, like the official build, but is less laggy. Use the third APK if you don't mind lag and want to skip the invite system
Dead Link
APK with the device/GPU/RAM check disabled, as well as the Safety Net check disabled (warning: This may cause account bans):
Dead Link
APK with the device/GPU/RAM check disabled, fully spoofing the Note 9 (may cause lag/overheating):
Dead Link
Checksums:
Fortnite_com.epicgames.fortnite-5.2.1-4288479-Normal.apk:
MD5: 0E1CE4ADEEA4F2134E370F014EEB67B9
SHA1: BBE50D447EB120506E22DAD0522973D47CF9C095
Size: 90.4MB
Fortnite_com.epicgames.fortnite-5.2.1-4288479-NS.apk:
MD5: 4B0FB3774F3889453315E9B61B10D970
SHA1: 14349F5ADE14FCF86B908D61E6A3FBABD53114D2
Size: 90.4MB
Fortnite_com.epicgames.fortnite-5.2.1-4288479-Note9.apk:
MD5: D3498C9308F7C0D05321F1B24AEFB5F4
SHA1: 554AD0B5AA31EA0937B1E4215CBD998D32F751E3
Size: 90.4MB
Version 5.2.1-4284747:
APK with the device/GPU/RAM check disabled, but does not spoof the Note 9 to the game. This will only work if you have an invite, like the official build, but is less laggy. Use the third APK if you don't mind lag and want to skip the invite system
Dead Link
APK with the device/GPU/RAM check disabled, as well as the Safety Net check disabled (warning: This may cause account bans):
Dead Link
APK with the device/GPU/RAM check disabled, fully spoofing the Note 9 (may cause lag/overheating):
Dead Link
Checksums:
Fortnite_com.epicgames.fortnite-5.2.1-4284747-Normal.apk:
MD5: A97810E01746328119434A3F72984F28
SHA1: BCA5038A0687E77E9CE1F834BCDB652CFB6F399A
Size: 90.4MB
Fortnite_com.epicgames.fortnite-5.2.1-4284747-NS.apk:
MD5: 566B0BB19E1E5BB66A3352FD6C67A934
SHA1: 8CDD0E69353730B35ABBDD0BEF5FECDF443DBE46
Size: 90.4MB
Fortnite_com.epicgames.fortnite-5.2.1-4284747-Note9.apk:
MD5: 24AC0E1F0F168973ACD0516B6E1E0206
SHA1: 7B283B8A989F6A9E54BCDB53EF0BCC20B5ADA8CD
Size: 90.4MB
Version 5.2.0-4276112
APK with the device/GPU/RAM check disabled, fully spoofing the Note 9 (may cause lag/overheating):
Dead Link
APK with the device/GPU/RAM check disabled, fully spoofing the Note 9 (may cause lag/overheating), as well as the Safety Net check disabled (warning: This may cause account bans):
Dead Link
APK with the device/GPU/RAM check disabled, but does not spoof the Note 9 to the game. This will not work until the 12th August when Epic open the beta fully, but should be better on the lag front (as it doesn't give the game the wrong info) - EXPERIMENTAL:
Dead Link
Checksums:
Fortnite_com.epicgames.fortnite-5.2.0-4276112.apk:
MD5: 3A298A730708B9F51B8D60F39FF15157
SHA1: 47744AEAC2A099DB7AD420A88D9D5A48231181E1
Size: 90.4MB
Fortnite_com.epicgames.fortnite-5.2.0-4276112-NS.apk:
MD5: C92AE326BF9051FAE97F338B259B978F
SHA1: 8C77135D119133EFAC7348BAF6C10F66B0DCF548
Size: 90.4MB
Fortnite_com.epicgames.fortnite-5.2.0-4276112-EXP.apk:
MD5: 86287E8538C286F0D752115057450AD1
SHA1: 5AEDFE7D09443A8E4D210468B605A88E27B0AC5C
Size: 90.4MB
This APK skips the Safety Net check and GPU/RAM check - Be extremely careful with this as it may crash or overheat your device, and your account may get banned
Dead Link
This APK doesn't skip the Safety Net check or GPU/RAM check, so may be safer:
Dead LInk - Thanks bluedragon02
APK with Safety Net skip:
MD5: 446C82441025FA08D707BB9BFE4C5A44
SHA1: 3DB935E8D6E7EDD6EB1C7A533972DD04CF4772BD
Size: 90.3MB
APK without Safety Net skip:
MD5: F51702713287B2222FFA1C05F2CC4BEE
SHA1: C3A549E583D4E6AD77FBE5FD46FDA99FBFA035EC
Size: 90.3MB
How to mod it yourself
Got a tinfoil hat? Don't trust my APK? Well, you can mod the original, official APK yourself with my instructions.
Porting Guide
Step 1: Download the APK
The best way to do this is via APKmirror, as the official installer also checks the device requirements. You can find the latest APK here
Step 2: Decompile it with APKtool
Install APKtool if you have not already, then run the decompile command:
Code:
apktool d <path-to-apk>
This will produce a folder containing the Java code (in Smali) and resources
Step 3: Editing the Smali
There are multiple options to edit the code here, but only one file is edited. You can find that at smali/com/epicgames/ue4/GameActivity.smali
Open it in a decent text editor, such as Notepad++, Sublime Text or Visual Studio Code
The following options are just that - optional. You can mix and match how you like, depending on what you want the mod to do
Disabling the device check (CPU/GPU/RAM)
Search for the following line:
Code:
.method private processSystemInfo(Ljava/lang/String;Ljava/lang/String;)Z
Paste the following code after the ".locals" line:
Code:
const/4 v0, 0x1
return v0
Result should look like this: https://i.imgur.com/4UdwVui.png
Save the file
How this works: The "processSystemInfo" method gets device information and checks it, displaying a message if the device is not compatible. The code we pasted in simply returns that the device is compatible so the code moves on
Enabling the Note 9 features
Search for the following line:
Code:
.method public AndroidThunkJava_Fortnite_CheckLocalizationA()Z
Paste the following code after the ".locals" line:
Code:
const/4 v0, 0x1
return v0
Result should look like this: https://i.imgur.com/WZxJlSm.png
Save the file
How this works: The "AndroidThunkJava_Fortnite_CheckLocalizationA" method checks if the device is a Note 9 by checking its brand and device properties from the build.prop. It also checks if the device supports the BLE S-Pen using a Samsung class. The code we pasted in simply returns that the device is a Note 9 and supports the pen, so the code moves on
Enabling the Tab S4 features
Search for the following line:
Code:
.method public AndroidThunkJava_Fortnite_CheckLocalizationB()Z
Paste the following code after the ".locals" line:
Code:
const/4 v0, 0x1
return v0
Result should look like this: https://i.imgur.com/V6EtEKk.png
Save the file
How this works: The "AndroidThunkJava_Fortnite_CheckLocalizationB" method checks if the device is a Tab S4 by checking its brand and device properties from the build.prop. It also checks if the device supports the S-Pen using a Samsung class. The code we pasted in simply returns that the device is a Tab S4 and supports the pen, so the code moves on
Disabling the Safety Net check
Warning: This may cause account bans
Search for the following line:
Code:
.method public AndroidThunkJava_GetCurrentConnectionState()Z
Paste the following code after the ".locals" line:
Code:
const/4 v0, 0x0
return v0
(This is not a typo, it should return "false" [0x0])
Result should look like this: https://i.imgur.com/eZjt9Zc.png
Save the file
How this works: The "AndroidThunkJava_GetCurrentConnectionState" runs the Safety Net check, but only does so if the device has Google Play Services installed. For some reason, if we return that Play Services isn't installed, the game doesn't care that we skipped the Safety Net check
Fully spoofing the Note 9 to the game
Warning: This may cause lagging and overheating
Search for the following line:
Code:
invoke-virtual/range {v0 .. v5}, Lcom/epicgames/ue4/GameActivity;->nativeSetAndroidVersionInformation(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
It should be preceded by these lines: https://i.imgur.com/rZ9iWZ8.png
Replace the lines shown in the image above with the following:
Code:
sget-object v1, Landroid/os/Build$VERSION;->RELEASE:Ljava/lang/String;
sget-object v2, Landroid/os/Build;->MANUFACTURER:Ljava/lang/String;
const-string v2, "samsung"
sget-object v3, Landroid/os/Build;->MODEL:Ljava/lang/String;
const-string v3, "SM-N960U"
sget-object v4, Landroid/os/Build;->DISPLAY:Ljava/lang/String;
Result should look like this: https://i.imgur.com/gY93PZy.png
Save the file
How this works: The "nativeSetAndroidVersionInformation" method sets the device information in native code, ie. the game itself. The code we added overwrites the information got from the device's build.prop, spoofing the Note 9's model number and manufacturer to the game
Step 4: Recompiling the APK
In your APKtool directory, run the following command:
Code:
apktool b <name-of-apk-without-.apk>
This will produce an unsigned APK in the decompilation folder\dist
Step 5: Signing the APK
The easiest option here is to copy the APK in the "dist" folder to your device, then use the ZipSigner app on your device to sign it.
This will produce a signed APK in the same directory as the unsigned APK, but with "-signed.apk" rather than ".apk"
Step 6: Installing the APK
If you currently have a version of the APK that was not signed using ZipSigner (INCLUDING a modded APK downloaded from this thread, and the official APK), you must uninstall that first
You can then install the "-signed.apk" APK ZipSigner produced in Step 5.

Now we need the APK with checks disabled. I'm running the official APK on a rooted S9. I disabled ADB, enabled Magisk Hide but it's still kicking me out.

Awesome!!! Thanks
https://www.youtube.com/watch?v=6cqr7v3TQQI

Lukyczk said:
Now we need the APK with checks disabled. I'm running the official APK on a rooted S9. I disabled ADB, enabled Magisk Hide but it's still kicking me out.
Click to expand...
Click to collapse
As I mentioned in the first post, that would enable cheaters to use cheat apps more easily when the game is running, making the port a bigger target for Epic. If they DMCA it anyway, then I suppose it might be called for?

Quinny899 said:
As I mentioned in the first post, that would enable cheaters to use cheat apps more easily when the game is running, making the port a bigger target for Epic. If they DMCA it anyway, then I suppose it might be called for?
Click to expand...
Click to collapse
I get that, but there are also tons of people with rooted devices that want to play legit.

May you try to remove RAM and GPU checks for people with potato phones, @Quinny899? ?

DodoGTA said:
May you try to remove RAM and GPU checks for people with potato phones, @Quinny899?
---------- Post added at 08:11 PM ---------- Previous post was at 08:09 PM ----------
May you try to remove RAM and GPU checks for people with potato phones, Quinny899?
Click to expand...
Click to collapse
Considering how it lagged on my Pixel 2 XL, that probably isn't a good idea.

Quinny899 said:
Considering how it lagged on my Pixel 2 XL, that probably isn't a good idea.
Click to expand...
Click to collapse
How about lowest settings? ?

I have adreno 505 but fortnite ask minimum for adreno 530 , how to bypass the gpu detection ?

DarioKJ said:
I have adreno 505 but fortnite ask minimum for adreno 530 , how to bypass the gpu detection ?
Click to expand...
Click to collapse
Buy a better smartphone :fingers-crossed:

Quinny899 said:
Fortnite for Android with device check disabled
Notes and warnings:
This is an APK with only the device check disabled. It spoofs a Samsung Galaxy Note 9, so edit the settings accordingly for your device in game. You may experience optimisation issues. It still requires an ARM64 device (arm64-v8a), as that's all the code included supports.
THIS APK HAS A DIFFERENT SIGNATURE TO THE OFFICIAL GAME (MY SIGNATURE) - THIS IS A REQUIREMENT OF MODDING APKS - IT MAY BE VISIBLE TO EPIC. I AM NOT RESPONSIBLE FOR ACCOUNT BANS OR KICKS FROM THE GAME. YOU ARE RECOMMENDED TO USE A BACKUP OR THROWAWAY ACCOUNT IF YOU DO NOT WANT TO RISK YOUR ACCOUNT
This game uses Safety Net, and also looks for ADB being enabled. You must pass safety net and disable ADB to play the game. Whilst it is likely possible to mod that out, it would also enable cheaters to play the game more easily, and make Epic more likely to retaliate against this mod. For that reason, this release is as close to the official build as possible, with only the device spoofed.
This APK does not grant access to the exclusive in-game skin
This APK will not install over the top of the official APK. Uninstall that first, then install this one.
Download
Fortnite_com.epicgames.fortnite-5.2.0.apk
MD5: F51702713287B2222FFA1C05F2CC4BEE
SHA1: C3A549E583D4E6AD77FBE5FD46FDA99FBFA035EC
Size: 90.3MB
The APK is signed with my certificate, you can validate this in any mirrors by checking the MD5 and SHA1 of the APK file. You are free (and recommended to, if you wish) to mirror this file elsewhere and share it on, but please give credit if you do.
How to mod it yourself
Got a tinfoil hat? Don't trust my APK? Well, you can mod the original, official APK yourself with my instructions.
Coming soon.
Click to expand...
Click to collapse
Wahoux said:
Buy a better smartphone :fingers-crossed:
Click to expand...
Click to collapse
Wahoux , give me a rog phone ??
(Just kidding)

I hope it works on my Potter, because it has only 2GB of RAM

well, now let's wait for gpu check bypass and root check bypass.
Really surprised by your work anyways, that was extremely quick, thank you!

DarioKJ said:
I have adreno 505 but fortnite ask minimum for adreno 530 , how to bypass the gpu detection ?
Click to expand...
Click to collapse
Just use GLTools

can't login

Is there a way to hide unlocked bootloader? Cuz now it detects that my bootloader is unlocked

It does work! However I'm thrown out of every match seconds after I land. In the lobby I get a notification that says I'm removed due to crappy internet, VPN, proxy or cheating. I guess it does some kind of a check when you're actually going in-game.

Thanks for your work @Quinny899 Will this give you the galaxy skin since its spoofed as a Note 9?

jesper801 said:
Is there a way to hide unlocked bootloader? Cuz now it detects that my bootloader is unlocked
Click to expand...
Click to collapse
kyan31 said:
Thanks for your work @Quinny899 Will this give you the galaxy skin since its spoofed as a Note 9?
Click to expand...
Click to collapse
Read the first post.

Quinny899 said:
Read the first post.
Click to expand...
Click to collapse
Missed that, my bad, thanks for clarifying.

Related

[V6U9RC13]For Your Lag(4x) Do it good, Good, GOOD, GOOD! SuperCharge Your Launchaaah!

Hey if somebody says that minfree tweaks don't work on ICS and JB, you can safely assume that they don't know what they're talking about lol
================================================= ==========================================
Please Rate the thread 5 Stars and click the Thanks Button! (any of my posts will do!) if you have enjoyed using The V6 SuperCharger!
Or consider donating - HUGE THANKS to those that have already donated!
And THANKS for constructive feedback - which makes this mod so AMAZING!
================================================= ==========================================
Rant: So I "cleaned up the OP" by adding little headings and hiding stuff. So if you want to post that it's still confusing, DON'T bother.
If you don't like it, don't use it. (And calling yourself a n00b is a BS excuse - READ and LEARN something like everybody else did.)
So... if you don't read and search first, and ask redundant questions anyway... be ready for...
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Main Download Page is HERE (V6 SuperCharger and all the latest RC/Beta/Tests for Kick Ass Kernelizer, 3G TurboCharger, and Die-Hard Battery Calibrator)
Latest V6 SuperChargers are Black Dog-63457-Fix and For Your Lag
Latest KAK and 3G TC are HERE
Click to expand...
Click to collapse
Post #2 Info! - This is for the application of the following 3 Mods to services.jar!
Mod 1. ICS and Jelly Bean - require the Jelly ISCream Mod done in conjunction with the V6 SuperCharger Script to SuperCharger your launcher!
Mod 2. Froyo and up - can have the New Maximum MultiTasking Mods (Maximum Overdrive and the Time Killer Killer)
Mod 3. Sense 4 and up - remove the Sense 4 limit of only 8 visible apps with the Non-Sense App Limit!
These 3 mods are applied with my:
-=Ultimatic Jar Patcher Tools=- (fully automated exe/bat/sh tools) OR...
-=Ultimate Jar Power Tools=- patcher script (formerly called Jelly ISCream Smali Patcher) to automate Step 5 in Post #2 - the smali edits
Note: The webapp needs updating (aka the "Automatic Transmission" in V6 SuperCharger) and won't work on JB!
Click to expand...
Click to collapse
.​
SuperCharger = Speed + Multitasking!
No more lag! No more launcher redraws! Smooth & Snappy!
It's the ONLY Complete Memory Management Fix!​
There is NOTHING ELSE LIKE IT!
It Runs Like A...
​
So... HOLD ON TIGHT!​
Terms of Use:
99SuperCharger Tweaking: Of course, I don't own any rights in regards to the actual tweaks applied to system settings.
This means anybody is free to mess with OOM groupings, OOM priorities and minfrees.
So it's fine to modify and share your tweaked 99SuperCharger file as long as you leave the credits intact
Developers may include the attached V6 SuperCharger Installation Script in their roms. (This installs 99SuperCharger)
The attached V6 SuperCharger installation script may NOT be disassembled in any way, or be used as a part of any memory management app or package.
This is because it is no different than an app/apk found in the market. It's an installation program.
I don't own any right to tweak OOM Groupings, OOM Priorities, or minfree values. But I do own this program.
ATTN DEVS: Baking the V6 SuperCharger memory system in your ROM is 100% fine.
..................Don't make it a "secret" feature. Make it a PROMINENT feature and give proper credit and a HTML link to this thread.
..................You can include the V6 installation script in the system/xbin folder so users can use it with terminal emulator
.................. - giving it a short name is fine as it's a pain to type long file names in terminal.
..................Do not modify it, do not rebrand it (ie. It's not called "V6script"). Thank you.
This is the only permissible distribution of the attached installation script - unmodified, in a custom rom and in the system/xbin folder.
Modification and redistribution of the attached installation script is not permitted at all.
This means that you cannot feel free to zip up the attached installation script with other tweaks and this means that it is not be edited and shared.
ATTN USERS: If you use or encounter a ROM with the V6 SuperCharger memory system, without proper credit given and no SuperCharger source links, please make the Developer aware of it, and if necessary, please let me know about it. Thank you.
Personal Use: You may tweak the V6 installation script (leaving credits intact) to your own personal liking as long as it is NOT redistributed in any way.
If you want to share this, just link to this thread.
If you want to make a thread in other forums telling people about it, that's great.
But I would prefer that you do not post a copy of the V6 SuperCharger installation script in those forums.
Your co-operation is very much appreciated.
I don't want diluted/broken V6 SuperCharger installations floating around and then have people say it doesn't work.
=============================================================================
Bonus Battery Calibration Info:
First, let me link to my method of calibrating the battery without downtime so you can use your phone normally and do it whenever it's convenient.
It definitely works on Milestone and it seems to work on Droid.
I think that's a pretty good trick, anyway - it may even work on other phones
Note: You can also try my Die-Hard Battery Calibrator script which is on the download page.
Update: As I suspected, any calibration method doesn't magically make your battery last longer
.............. - All my battery tips/scripts really do is help ensure that you are actually getting a full charge. THAT'S IT.
.............. - Which is why my Die-Hard Battery Calibrator has always notified the user the REAL percentage vs the REPORTED percentage
=============================================================================
Summary of Steps (Yeah, it's THIS friggin easy...)
Before you start reading, just know that this is not difficult to implement... it's easy. There's more specifics below but basically:
1. Download a script
2. Install BusyBox (Attached! - see install instructions above the attachments)
3. Install Script Manager (Enable Browse as Root in Config)
4. Load script into Script Manager (Run As Root - the skull and crossbones icon which turns green when selected)
5. Follow instructions/user prompts & select what you want
6. Patch services.jar as needed (see Post 2)
See? EASY!
Note: If you get errors, or fail the driving test, use the SuperCharger Starter Kit from the download page.
Essentially, the Starter Kit makes sure that your ROM has no silly stability issues.
It includes:
A proven busybox
Fixed su binary (for segmentation fault issues with superuser.apk on ICS only)
zipalign binary and sqlite3 binary (used in Update 9 RC*)
=============================================================================
Know that the script explains what it does before it does anything!
It holds your hand along the way and it will answer nearly all your questions as it moves along!
It works on ALL Android devices - Custom Roms or Stock Roms, Phones or Tablets, it doesn't matter!
Also Note: Nothing else does what The V6 SuperCharger does!
................Not AutoKiller Memory Optimizer, Not Auto Memory Manager, Not Minfree Manager...
................And NOTHING BEATS IT. PERIOD.
So... if somebody says to you that V6 SuperCharger does the same thing as [pick any app], tell them to first read about what they're talking about so that they can actually have an informed opinion.
Get A Taste of The V8 SuperCharger - Some details for 3G TurboCharger & Kick Ass Kernel Tweaks are here (older versions there too)
......................................................... - V8 SuperCharger Alpha for Milestone!
=============================================================================
Memorable User Comments:
"Feels like I have a new phone!"
"V6 is one the best things to come to android."
"Supercharger rocks bro, I'm actually mad I waited so long to do it..."
"I wish I hadn't upgraded yet"
"Now I can wait to upgrade",
"I was about to throw this phone through the wall",
"I was about to return it but now I don't have to",
"This cured my phone of cancer!"
"Oh man... just applied the V6 Supercharger Script by ZeppelinRox on my Android.. I think it fixed everything..",
"My phone is better than new!",
"my phones has turned god mode on or somthing",
"I never notice this at all, until I flash a new rom and realize its not there anymore lol."
=============================================================================
What's it do?
It makes your phone FAST... super snappy with better multitasking!
It rearranges and fixes the OOM Groupings and Priorites and lowmemorykiller values.
So basically, it's a COMPLETE MEMORY MANAGEMENT FIX!
It's the ONLY one of it's kind
NO LAUNCHER REDRAWS, faster than ever, multitasking is better... why?
Because it works with the lowmemorykiller and letting it work the way it's meant to work.
Also, because of the rearrangement, it works the same on all roms!
The problem with using minfree tweakers like AMM or AKMO is that it doesn't work the same on all roms.
Secondary apps may be in slot 3 on some roms but in slot 5 in others!
That's why you hear people comment "I tried AKMO but it didn't do anything..."
Most likely it didn't do anything because the apps weren't sitting where they were expected to be.
So fasten your seat belts and enjoy the ride!
=============================================================================
RAM Lesson:
Important Note: FREE RAM IS NOT WASTED! - Read Linux Memory Consumption
...................... That article TOTALLY confirms what I've been saying!
To Summarize: Article: "Performance degradation occurs when "Absolute Free Memory" (includes Cached RAM) decreases."
...................... Me: "Lag happens when free ram goes below the 'lag level'"
Same thing, different language
Big Thanks to dev hardcore and this post for helping me figure stuff out way back when
=============================================================================
Note: Do this at your own risk - regardless of how little risk there is .
............ It has the UnSuperCharger Option to uninstall, but do a nandroid anyway.
............ Simply reflashing your ROM will also wipe it clean from your system.
=============================================================================
Requirements:
1. Rooted Android Device. Milestoners, you can use Universal Androot (not in market ?)
2. Script Manager or Terminal Emulator to run the script. Stock ROMs can also use SM to load up boot scripts!
3. Busybox v1.16.2 OR ABOVE. You can use any of the ones attached to this post which contain a Feature Rich busybox v1.19.4 by wraithdu (CWM flashable.zip, "Normal" Installation script by me and one which reinstalls BusyBox on EACH boot by me.)
OR,,,
Grab the SuperCharger Starter Kit and have busybox plus other tools (fixed su binary for ICS with superuser.apk and not supersu.apk, zipalign binary and sqlite3 binary) installed instantly!
BusyBox WARNING: Some versions are "minimal" with many missing applets and functions! I also find v1.18.3, v1.18.4 and 1.185 VERY much a hassle with errors that should NOT be errors! Avoid any such versions! Minimal is BAD!
4. Optional: AutoStart Script by me - Enables Stock ROMS (Milestone + a few other devices) to utilize etc/init.d for boot scripts.
=============================================================================
Installing/Using:
1. Download the attached V6_SuperCharger_for_Android*.txt/pdf script and save to your sdcard.
- Do NOT run the V6 SuperCharger install script at boot!
2. Run the script:
A) Load the script (V6_SuperCharger_for_Android*.txt/pdf) into Script Manager and select "Run as Root" (skull and crossbones "Su" icon - it turns green when selected)
OR...
B) Run Terminal Emulator and simply type: su and enter, sh /sdcard/V6*.sh and enter (provided you saved the script to the root of your sdcard)
OR...
C) via ADB on your computer. In a console, type: adb shell and enter, su and enter, sh /sdcard/V6*.sh and enter (provided you saved the script to the root of your sdcard)
3. Get SuperCharged! Just pick an option! The extra options (Engine Flush, etc.) explain things before doing anything
4. READ the script's output!
5. Afterwards, READ the html HELP FILE in the root of your SD Card!
6. Non-ICS/JB ROMS - Disable "Lock Home in Memory" if your ROM has this option. (This takes effect immediately.)
7. Optional: For a quick status check, you can put a Script Manager widget for V6 SuperCharger on you desktop
8. Reboot - required if it's your first time SuperCharging the rom.
9. Check if it works - After reboot, run the V6_SuperCharger script and check the info under the menu.
10. Patch services.jar as needed (see Post 2)
Cool! - Here are a few recent tutorials:
[GUIDE] How to install Supercharger V6 (includes patching steps)
[How To][Video Tut] Install/Run V6 Supercharger + Basics (uh... video)
[GUIDE] V6 Supercharger Update 9 RC 8.2 + for Samsung Galaxy Young (includes a little KAK tutorial too)
If you are using compcache and have lag or slow down after SuperCharging,
DISABLE compache, wipe caches and re-enable it.
Non-ICS/JB ROMS - Be sure to uncheck/disable lock home in memory!
Note: V6_SuperCharger-AOR.zip is for use with Milestone's Androidiani OpenRecovery. Even if you have a Milestone, don't run it within Android.
........ AOR Usage: Extract to the root of your sdcard (Directory structure is in the zip)
.........You will now have a SuperCharger Menu on the main screen. Simply select the menu and select 1 of the 12 options.
=============================================================================
Pro Tips:
- CUST-OOMIZER! Use your settings without Autokiller Memory Optimizer or Auto Memory Manager!
- Use the 3rd slot to set how much free ram you want.
- If you have a viable init.XXX.rc file, it makes a backup and edits that single file. This is nice and tidy.
... Thank to kabaldan for pointing out the importance of certain things.
- Most Custom ROMs - If you have a /system/etc/init.d folder, it creates 99SuperCharger in there and edits your choice of either /data/local.prop or /system/build.prop (18 entries added for adjusting priorities and groupings). You shouldn't need to configure anything else.
- If the minfree levels do not stick on your Custom ROM:
........ Check /data/Ran_Supercharger.log to see if it ran... (Update 9 RC*)
........ If this happens to you, use Script Manager to load /system/etc/init.d/99SuperCharger "on boot" and "run as root"
- Stock ROMs - It also creates /data/99SuperCharger.sh which you can load up on boot (run as root) with Script Manager. The OOM groupings work as well since it happens on boot in local.prop or build.prop (18 entries added)
In case of any error, you will find a related help file in the root of your SD card.
So... I think this covers ANY Android ROM
The Help File! (Abbreviated)
-=The V6 SuperCharger=- created by zeppelinrox.
Here is some Background Info in case you're curious...
Linux Memory Consumption - Nice article!
Memory and SuperCharging Overview or... "Why 'Free RAM' Is NOT Wasted RAM!"
MFK Calculator Info - explanation for vm.min_free_kbytes
Stock ROMs: After running the script, have Script Manager load the newly created /data/99SuperCharger.sh on boot
In the "Config" settings, be sure that "Browse as Root" is enabled.
Press the menu key and then Browser. Navigate up to the root, then click on the "data" folder.
Click on 99SuperCharger.sh and select "Script" from the "Open As" menu.
In the properties dialogue box, check "Run as root" (SuperUser) and "Run at boot" and "Save".
And that's it!
Script Manager will load your most recent settings on boot!
If you run the script later and with different settings, you don't have to reconfigure anything.
Script Manager will just load the new /data/99SuperCharger.sh on boot automagically ;^]
Custom ROMs: If you have a custom rom that loads /system/etc/init.d boot scripts,
You DON'T need to use Script Manager to load a boot script. It will all be automatic!
Also, if you can run boot scripts from the /system/etc/init.d folder, there are other options.
For example you can use an app like Terminal Emulator to run the script.
NON-ICS ROMS: If your ROM has the option, DISABLE "Lock Home In Memory. This takes effect immediately.
Alternately, if you need to free up extra ram, you can use "Lock Home in Memory" as a "Saftey Lock".
ie. Use it to toggle your launcher from "Bulletproof" (0) or Hard To Kill (1) to "Weak" (2) in the event that you want to make the launcher an easy kill and free up extra RAM
If Settings Don't Stick: If you have Auto Memory Manager, DISABLE SuperUser permissions and if you have AutoKiller Memory Optimizer, DISABLE the apply settings at boot option!
Also, if you have a Custom ROM, there might be something in the init.d folder that interferes with priorities and minfrees.
If you can't find the problem, a quick fix is to have Script Manager run /system/etc/init.d/*99SuperCharger "at boot" and "as root."
Another option is to make a Script Manager widget for /system/etc/init.d/*99SuperCharger or /data/99SuperCharger.sh on your homescreen and simply launch it after each reboot.
For those with a Milestone, I made a version for Androidiani Open Recovery too
Just extract the zip to the root of /sdcard (it contains the directory structure), load AOR, and there will be a SuperCharger Menu on the main screen!
==============================================================================
The above is ALL YOU NEED TO KNOW.
The V6 SuperCharger Script EXPLAINS EVERYTHING that it does - as you use it!
Anything below is extra info!
So get SuperCharged FIRST and then read the stuff below to see how it works!
==============================================================================
The Nitty Gritty... For Geeks! (WARNING: This can make a non-Geek's head Assplode!)
If you read Post #3 (History Parts 1-3), you'll see that at first it was only about minfrees and launcher redraw.
But after installing GingerBread, I saw that it needed more work than Froyo LOL.
Groupings were ALL MESSED UP and made NO SENSE to me whatsoever...
So I figured out how to group them more like CM6 (Froyo) but that still wasn't good enough...
So I further rearranged the OOM Groupings and Priorites and lowmemorykiller values and created a SuperCharger for phone memory...
THE ONLY COMPLETE MEMORY MANAGEMENT FIX!
Upon installation, V6 SuperCharger will first clean up any previous supercharging so none of your files get cluttered.
But if you toggle between Hard To Kill and BulletProof launchers, the memory adjustments aren't affected.
So you can leave your minfrees at stock/default settings and apply the Hard To Kill Launcher and still get the OOM Grouping/Priority fixes.
So if you love your ROMs memory settings, just try a SuperCharged Launcher/OOM Fix... you won't regret it
It's pretty awesome
Here are some snaps....
Before...
After...
During....
Bonus....
Say Buh Bye to AKMO or any app that has to load on start up to change minfrees...
So did you notice the difference in groupings?
By default, CM7 has nearly all the apps in slot 5 and the launcher in slot 3.
Slightly aggressive settings will kill any chance of multitasking in that situation.
After SuperCharging, the apps get moved to slot 3 while the launcher is in slot 2 but the most important item in slot 2.
I've read, "oh you don't need to run any scripts for memory management..."
Well that's not true.
Playing with minfree values is one thing... it's playing with minfree levels... it's not really memory management...
Look at the pics above... now THAT's memory management...
If you look below at Post #3... that's how it all started... good background info in case you're wondering what the hell I'm talking about.
Notes: Minfree changes take effect immediately!
.......... Switching between Hard To Kill (strong), Die-Hard (stronger) and BulletProof (strongest) Launchers require a reboot to take effect.
.......... Disable your OS's "Lock Home in Memory" option, if it has it
.......... Or use "Lock Home in Memory" as a "Saftey Lock" - to toggle your launcher from "Bulletproof" (0) or HTK (1) to "Weak" (2)
.......... Note: "Lock Home in Memory" is not ADJ 1 with my OOM Grouping/Priority Fixes
Cool Tip: Sometimes it's difficult to keep a wanted background app alive, such as an SMS app. See how to Bulletproof Background Apps!
Remember: When using scripts, use the SuperUser app to DISABLE SuperUser permissions for AMM!
................. It can still monitor your OOM groupings but it can't change your custom settings on boot.
................. If you have AKMO installed, disable it's option to Apply Settings at Boot!
==============================================================================
BusyBox v1.19.4 Install Script Instructions:
First extract busybox_v1.19.4-wraithdu-installer_script.zip to the root of your sdcard
Method 1 - Just run the script inside/sdcard/bb1.19.4 with Script Manager as root.
Method 2 - Run terminal and type su and enter
............... - Type sh /sdcard/bb1*/busy* and enter
............... - Soup's On, Baby!
Boot Re-Installer! For BusyBox v1.19.4 Instructions:
For PITA kernels and roms that insist on reinstalling old busyboxes on boot!
Contains same script as above but includes another script that makes busybox v1.19.4 reinstall each boot!
Basically, it installs the above script as /system/etc/init.d/96busybox
So for those kernels and roms... TAKE THAT!
First extract boot_reinstaller_script+busybox_v1.19.4-wraithdu-installs_every_boot.zip to the root of your sdcard
Method 1 - Just run the boot_reinstaller* script found inside/sdcard/boot.bb1.19.3 with Script Manager as root.
Method 2 - Run terminal and type su and enter
............... - Type sh /sdcard/boot*/boot* and enter
............... - Soup's On, Baby! (again and again!)
==============================================================================
V6_SuperCharger-AOR.zip is for Androidiani OpenRecovery for Milestone!! - For Milestone ONLY! - See "Installing/Using" instructions above!
How To Save Attached Files
- Right click with your browser & select "save as" from menu, or use the QR Code or XDA app or Tapatalk
- Also a great method - use Opera Mini web browser. Very easy to download and it's FAST!
So... if you get an error like "line xxx: syntax error: unexpected end of file (expecting "blah blah")", it's an INCOMPLETE DOWNLOAD!
Download it again and DO IT RIGHT.
Most recent files are HERE (RC/Beta/Test releases)
Don't Mirror Or RePackage My Files - Just link here - Then your thread won't get real old, real fast.
If you're going to download something...
Please HIT THANKS and Give a 5 Star Rating!
I SCream SUPERCHARGER!!
===================================================================
If this information is helpful, please Rate the thread 5 Stars and click Thanks!
===================================================================
Hacking services.jar
What's this for? - Froyo, Gingerbread, Honeycomb, ICS, Jelly Bean AND Sense 4.0+!
ICS and Jelly Bean - Jelly ISCream Mod (SuperCharge Your Launcher)
Note 1: Earlier Android ROMS need ONLY The V6 SuperCharger Script to SuperCharge the launcher!
Note 2: The webapp is NOT working on some newer roms! The strings to be edited are slightly different and the webapp needs updating!
It also lacks the newest edits and is NOT recommended for the time being!
Froyo and Up - Maximum MultiTasking Mods - Includes -=Maximum Overdrive=- and The Time Killer Killer
Sense 4.0 and Up - Non-Sense App Limit
See the -=Ultimate Jar Power Tools=- thread for more details about the Multitasking and Sense mods!
Use the Ultimate Jar Power Tools patcher script to automate Step 5 (the smali edits) in the tutorial below!
Or use my latest -=Ultimatic Jar Patcher Tools=- to do ALL the Steps in the tutorial! It works for DEODEX and ODEX ROMS and can be run on Windows/Linux/Mac OSX OSes!
===================================================================
Jelly ISCream Mod Information!
===================================================================
The NEW Ultimatic Jar Patcher Tools and Ultimate Jar Power Tools patcher script include all the -=NEW=- Jelly ISCream edits described in Step 5 - PLUS many more! (over 50 edits!)
These additional edits truly makes your launcher SuperCharged!
They also apply the latest Maximum MultiTasking Mods
The webapp hasn't been updated so it's NOT recommended.
===================================================================
Installation - Easy as 1, 2, 3!
1. Run the NEWEST V6 SuperCharger script as always.
Note: You may get Segmentation Fault errors running the V6 SuperCharger script on ICS due to a flakey su (superuser) binary.
To resolve the issue, you can:
A) Go HERE for a fixed su binary. No more fugly segfaults! - Thanks to wraithdu (only for superuser.apk on ICS)
OR...
B) Go HERE and get the SuperCharger Starter Kit!
2. Patch and install services.jar - by whichever method you like best. Your options are, in order of EFFECTIVENESS:
Note: Options A, B and C require Java to be installed on your computer - Click to Verify Java Installation
Option A) Use one of the -=Ultimatic Jar Patcher Tools=- (exe or zip) which DO EVERYTHING for you "Fully Ultimatically" on DEODEX & ODEX ROMS!
Goto Step 3 if you did this!
Option B below is the next preferred method - but there's manual work involved.
Option B) Follow the complete tutorial below and use -=Ultimate Jar Power Tools=- patcher script to automate Step 5 - the actual smali editing!
There are actually 56 edits performed via script... many more than what is specified in the tutorial!
Note that the script allows you to choose the level of your Launcher's Super Strength! (BulletProof, Die-Hard, or Hard To Kill)
Also be sure to have the necessary smali files in the same folder as the script!
ODEX ROMS - ALL Stock ROMS are ODEX (I think... ) So if you have a services.odex file, press the button!
All but Step 5 is automated on Windows with a batch script courtesy of rexstor .
See [Guide][Batch][Odex Rom only!] To get another 50% v6 Supercharged script for ICS!
So you'd run the batch script, and for the editing, run my Ultimate Jar Power Tools patcher script in Step 5
Goto Step 3 if you did this!
Option C) Follow the complete tutorial below without using any Patcher tool.
This is actually pointless to do - there are less edits and it's more work And the laziest people should just do D) below lol
Goto Step 3 if you did this!
Option D) Use the latest Update 9 RC* and select ICS Service Centre's Automatic Transmission! (OUT OF DATE)
Seemless webapp integration and installation to "Lock home in Memory"
Note: This is currently out of date - latest edits and Maximum MultiTasking Mods are NOT included and it does not work on Jelly Bean!
Goto Step 3 if you did this!
Option E) ICS OOM Priority Charger webapp. Same effectiveness as D) but done manually (OUT OF DATE)
Latest Update 9 RC* can install and apply permissions via ICS Service Centre's manual mode
Important: The webapp WON'T WORK for ODEX roms! So if you have a services.odex file, you have use a more effective option above
Also won't work on Jelly Bean ROMS!
More Webapp Info
Just go to http://android.mimic.ca with your devices browser and follow instructions!
In case of upload problems: If your Android browser closes while selecting file to upload, use Opera Mini web browser because it lets you select a file from within the app. Just copy services.jar to the sdcard first
CWM zip option is available!
But if you don't get the CWM zip, and instead download the modded services.jar, you can:
A) Do Steps 8 to 10 below! But first In Terminal Emulator, just type su and enter, busybox mount -o remount,rw /system and enter (Mount system as read/write).
OR...
B) Use the ICS Service Centre's manual mode in V6U9RC*
Help for webapp: Go to http://webchat.freenode.net , channel #v6_supercharger and talk to blk_jack (or me if I'm there)
* All roms (odex & deodex) - to install a patched services.jar/odex, you can use the ICS Service Centre's manual mode in V6U9RC9+ (for Steps 8 and 9 below).
* If you ever have trouble applying permissions to services.jar/odex, just run the ICS Service Centre and permissions gets applied everytime just before returning to the main menu!
3. SuperClean & ReStart! (ie. Wipe Dalvik Cache & Reboot)
Notes: For decent launcher detection use at least V6U9 RC6.9 or newer and check the bOOM Stick to see if the launcher the desired ADJ value!
.......... - Boot will take a LONG time as it "optimizes all your apps"
.......... - If it doesn't boot (unlikely if you did the edits yourself), try wiping caches (not data)
.......... - If it still doesn't boot, you can always just re-flash your current untouched rom but do have a backup nevertheless.
.......... - If you get FCs, fixing permissions will solve that. (Use the "Fix Emissions" Option in the latest V6 SuperCharger Script! )
That's It!
========================================================
OK I got ICS SuperCharged!!
The problem with SuperCharging ICS is that ICS doesn't read ADJ values from build.prop or local.prop - they are hardcoded into services.jar!
So the script alone can only give you a 50% SuperCharge Level with only the V6 SuperCharger script.
Patching services.jar gives you the other 50% along with a SuperCharged Launcher!
ICS users still have to run the V6 SuperCharger script just like before! Use V6U9 RC6.9 or newer for decent launcher status detection!
Note: Of course, the V6 SuperCharger script is ALL YOU NEED on all previous Android ROMS!
So the mod below is for getting the Launcher at a SuperCharged Priority on ICS!
This is akin to the ADJ entries in build.prop or local.prop on earlier Android ROMS which don't work on ICS.
What gets changed?
I rearranged Priorties on ICS like so:
Code:
System -16 (stock)
Persistent Process -12 (stock)
ForeGround app 0 (stock)
Home Launcher 1 (Die-Hard Launcher) (stock=6)
Perceptible app 2 (stock)
Visible app 3 (stock=1)
Heavyweight app 4 (stock=3)
Previous app 5 (stock=7)
Service 6 (stock=5)
Backup app 7 (stock=4)
Service_b 8 (stock)
Hidden app min 9 (stock)
Hidden app max 15 (stock)
As you can see, there are ALOT more app categories now lol
I also decided to give a new app category a higher priority - Previous Apps.
Users with low ram devices will definitely be pleased with that
I was actually able to load Angry Birds, ran a different app, and went back to Angry Birds and it didn't have to restart.
It's practically unheard of for that game to stay in memory like that on my device
I really don't understand the logic of making Previous apps more killable than some app that you were using awhile ago (ie Service) so I fixed it
========================================================
How To:
This will make it easier [Guide][Tutor]Jar/Apk baksmali smali compiler and decompiler
Important! - Get the MOST RECENT smali/baksmali binaries located here (remove the version number so they are called smali.jar and baksmali.jar)
Click to Verify Java Installation - smali/baksmali requires Java to be installed on your computer.
ODEX ROMS: If you have an odex rom (ie. you have a services.odex file) you have extra work. See this
..................... - Watch for dark red text for odex specific instructions! Some of which were initially found in this services.odex hacking guide.
..................... - Going with the odex guide above, you will also need the dexopt-wrapper utility.
..................... - Download the utility "dexopt-wrapper". (Do a search - you'll find it.)
..................... - Mount system as read/write. Open up Terminal and type: su, enter, busybox mount -o remount,rw /system
..................... - Copy it to /system/bin and apply correct permissions.
..................... - In terminal type: chmod 755 /system/bin/dexopt-wrapper, enter.
OR... You can convert your ODEX ROM into an easily modded deodexed one. Here are a few options to do that:
..................... xdaAutoTool (Windows - the first 3 posts have 3 different tools!)
..................... AutoAPKTool + AutoDeodexTool (Linux port of xdaAutoTool)
..................... Auto Deodex & Zipalign Tool (Windows - looks easy)
..................... Manually Deodex and Odex Back (Windows - geeky)
========================================================
Step 1. So grab the tutorial zip from above and unzip into a folder, say C:\super, along with the smali and baksmali jar files. This is all you need apart from a text editor and a zip program like 7zip or WinRAR.
............ Put services.jar (make sure you have a backup) in C:\super.
............ ODEX ROMS: Put services.jar AND services.odex in C:\super. (Note that services.jar will be very small with only a META-INF folder inside)
Step 2. Open up a dos/command prompt and navigate to the folder by typing cd c:\super
Step 3. Type: java -jar baksmali.jar -x services.jar -o classout (services jar gets decompiled into a classout folder.) Leave the dos/command prompt window open.
............ ODEX ROMS: Copy /system/framework folder(with all the jar+odex files) to c:\super
........................ Type: java -jar baksmali.jar -x -a <api_level> -d framework services.odex -o classout
........................ api_level is a number. See this page. So if you're on froyo, you put -a 8. On gingerbread it's -a 9 or -a 10.
........................ If you get an error: Add the $BOOTCLASSPATH to the above command.
........................ So do this command on your device using terminal emulator OR adb shell (easier): echo $BOOTCLASSPATH
........................ Example: You'll get something like this:
/system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/framework2.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar
........................ Remove the paths (/system/framework/) so end up with core.jar:core-junit.jar:bouncycastle.jar:ext.jar:framework.jar:framework2.jar:android.policy.jar:services.jar:apache-xml.jar
........................ Now, your final command becomes:
java -jar baksmali.jar -a ## -x -c :junit.jar:bouncycastle.jar:ext.jar:framework.jar:framework2.jar:android.policy.jar:services.jar:apache-xml.jar services.odex -o classout
........................ NOTE: This command may FAIL if you don't put the colon (:) after the "-c " and before that list of .jar files.
Step 4. Open explorer and navigate down to c:\super\classout\com\android\server\am folder and find ActivityManagerService.smali
Step 5. Use the -=Ultimate Jar Power Tools=- patcher script to perform the following edits (IT actually does TONS more for a smoother SuperCharge!)
Get it from THIS THREAD, and run it like my other scripts and be sure to have both ProcessList.smali AND ActivityManagerService.smali in the same folder as the patcher script! (Erm.... put them on your phone, run the Power Tools script, then copy the new smali files back to where you found them!)
Note that the Jelly ISCream Mod will read the previous ADJ values from ProcessList.smali, searches for those ADJs and replaces them with SuperCharged ones in BOTH smali files!
Then go to Step 6
If you don't wanna go the easy way... click the button!
Open ActivityManagerService.smali in notepad or notepad++ and make following smali edits.
a. Note that the "====" are breaks and NOT part of the smali file
b. Underlined is the search term so you can find the location in the file easily.
... - The search term includes the "quotes" and is CaSe SEnsiTive (ie. select Match Case in search) so you should actually only get 1 hit for all but 1 search.
... - There are 5 hits for "backup" with quotes but just scroll down from the previous edit you'll find it (heh. the previous edit is for "previous" lol)
c. Bold is the edit (note that each edited line begins with "const/4 v10, " Update: New roms now have "const/4 v11, " or "const/4 v14, " instead)
d. (Italized) is the ORIGINAL value
So, for example, the first edit for "visible" apps:
const/4 v10, 0x3 (0x1)
Originally, it looks like: const/4 v10, 0x1
After edit, it looks like: const/4 v10, 0x3
Ok... so here it is
======================
.line 13728
const/4 v2, 0x1
if-le v10, v2, :cond_118
.line 13729
const/4 v10, 0x3 (0x1)
.line 13730
const-string v2, "visible"
move-object/from16 v0, p1
========================
if-ne v0, v2, :cond_154
.line 13768
const/4 v10, 0x4 (0x3)
.line 13769
const/16 v27, 0x1
.line 13770
const/4 v2, 0x0
move-object/from16 v0, p1
iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
.line 13771
const-string v2, "heavy"
move-object/from16 v0, p1
=======================
.line 13777
const/4 v10, 0x1(0x6) Note that this is for Die-Hard Launcher! To BulletProof it, make it 0x0, HTK 0x2
.line 13778
const/16 v27, 0x1
.line 13779
const/4 v2, 0x0
move-object/from16 v0, p1
iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
.line 13780
const-string v2, "home"
move-object/from16 v0, p1
=======================
.line 13788
const/4 v10, 0x5(0x7)
.line 13789
const/16 v27, 0x1
.line 13790
const/4 v2, 0x0
move-object/from16 v0, p1
iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
.line 13791
const-string v2, "previous"
move-object/from16 v0, p1
=======================
.line 13808
const/4 v10, 0x7(0x4)
.line 13809
const-string v2, "backup"
move-object/from16 v0, p1
=======================
-=NEW=-
.line 13828
const/4 v2, 0x6(0x5)
if-le v10, v2, :cond_203
.line 13829
const-string v2, "started-bg-ui-services"
move-object/from16 v0, p1
=======================
.line 13837
const/4 v10, 0x6(0x5)
.line 13838
const-string v2, "started-services"
move-object/from16 v0, p1
=======================
-=NEW=-
.line 13845
:cond_37f
const/4 v2, 0x6(0x5)
if-le v10, v2, :cond_203
.line 13846
const-string v2, "started-bg-services"
move-object/from16 v0, p1
========================
This next part is actually hard to search for so I'm posting a large segment which contains 3 edits that make a HUGE difference!
To make it a little easier, search for "bg-services"
There are 2 hits - The second one is at the bottom of this segment.
Also, not that only one of them begin with the typical "const/4 v10, ", the other 2 begin with "const/4 v2, "
-=NEW=-
const-string v11, "service"
goto/16 :goto_3e1
.line 13932
:cond_487
iget v2, v15, Lcom/android/server/am/ConnectionRecord;->flags:I
const/high16 v5, 0x4000
and-int/2addr v2, v5
if-eqz v2, :cond_496
const/4 v2, 0x2
if-ge v12, v2, :cond_496
const/4 v2, 0x2
if-le v10, v2, :cond_496
.line 13935
const/4 v10, 0x2
goto :goto_471
.line 13936
:cond_496
const/4 v2, 0x3 (0x1)
if-le v12, v2, :cond_49b
.line 13937
move v10, v12
goto :goto_471
.line 13939
:cond_49b
const/4 v2, 0x1
move-object/from16 v0, p1
iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->pendingUiClean:Z
.line 13940
const/4 v2, 0x3 (0x1)
if-le v10, v2, :cond_471
.line 13941
const/4 v10, 0x3 (0x1)
goto :goto_471
.line 13995
.end local v3 #client:Lcom/android/server/am/ProcessRecord;
.end local v4 #myHiddenAdj:I
.end local v11 #adjType:Ljava/lang/String;
.end local v12 #clientAdj:I
.end local v13 #clist:Ljava/util/ArrayList;,"Ljava/util/ArrayList<lcom android="" server="" am="" connectionrecord;="">;"
.end local v15 #cr:Lcom/android/server/am/ConnectionRecord;
.end local v17 #i:I
.end local v22 #kt:Ljava/util/Iterator;,"Ljava/util/Iterator<ljava util="" arraylist<lcom="" android="" server="" am="" connectionrecord;="">;>;"
.end local v26 #s:Lcom/android/server/am/ServiceRecord;
:cond_4a5
move/from16 v0, p2
if-le v10, v0, :cond_4b6
.line 13996
move/from16 v10, p2
.line 13997
const/4 v2, 0x0
move-object/from16 v0, p1
iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
.line 13998
const-string v2, "bg-services"
========================
Save it.
Step 6. Go back to the dos/command prompt and type: java -Xmx512M -jar smali.jar classout -o classes.dex (this creates classes.dex)
............ ODEX ROMS: Type the same command as above.
Step 7. Open up services.jar with 7zip or WinRAR (you will see a classes.dex file inside) and drag the newly created classes.dex into the window to refresh services.jar with the new classes.dex
............ Mount system as read/write. Open up terminal and type: su, enter, busybox mount -o remount,rw /system
............ ODEX ROMS: Do the above steps (though there won't be an existing classes.dex - just add it anyway) and then do the following, edited segment from the services.odex hacking guide:
Copy the new services.jar file into the root of your phone's sd card.
software_samurai said:
Create a new services.odex file from the new services.jar file:
In terminal, type: cd /sdcard, enter, dexopt-wrapper services.jar services.odex $BOOTCLASSPATH, enter.
Here's the "special sauce": copy over the "signature" from the current .odex file into the new .odex file. do NOT continue until this command succeeds!
Hint: the file size of the new services.odex file should not change!
In terminal, type: busybox dd if=/system/framework/services.odex of=/sdcard/services.odex bs=1 count=20 skip=52 seek=52 conv=notrunc
Click to expand...
Click to collapse
Now copy /sdcard/services.odex to /system/framework and overwrite the original (backed up, yes?) services.odex
Go to Step 9
Step 8. Copy the new services.jar into your /system/framework folder.
............ ODEX ROMS: SKIP this step!
Step 9. a. In terminal type: cd /system/framework, enter, chown 0.0 services.jar, enter, chmod 644 services.jar, enter
................ ODEX ROMS: In terminal do: cd /system/framework, enter, chown 0.0 services.odex, enter, chmod 644 services.odex, enter
............ b. OR... you can just put it into a copy of your rom and flash that!
Step 10. SuperClean & ReStart! (ie. Wipe Dalvik Cache & Reboot)
========================================================
It was a pain in the ass to find because the settings that get applied actually ignore any setting that is given.
It's all over-ridden by a calculated routine
So I just turned the tables to have it over-ride settings to be SuperCharged
Remember that you will still need to run V6 SuperCharger to get your minfrees and grouping fix/adj limits in place.
Was this useful info? If so...
Please HIT THANKS and Give a 5 Star Rating!
[Script] V6 SuperCharger! HTK & BulletProof Launchers! The ONLY Android MEMORY FIXER!
So here's how it all started... don't worry if you don't understand it... the script does everything!
So... recently I came across/figured out some pretty neat stuff to make my Milestone run incredibly well.
Fast, Stable, and Smooth. FSS... heh... my Milestone used to make me say FFS too often... lol
In Part 2, you will find a way to make your launcher bulletproof!
What's that mean? No more screen redraws! AT ALL - I'm pretty sure
History Part 1. How To Control Android's Memory Manager via minfree
This revolves around Android's built-in memory manager/task killer.
I had been using Auto Memory Manager (AMM) with great results. AutoKiller Memory Optimizer (AKMO) had worked just as well.
These are NOT taskillers! (And neither is my SuperCharger )
They tweak Android's native memory management system by editing /sys/module/lowmemorykiller/parameters/minfree
This is a "dynamic" file that gets created on boot.
There is an in-depth thread that you can read right here on XDA: How to configure Android's *internal* taskkiller
Android puts each running app into 1 of 6 Out Of Memory (OOM) groups based on their priority.
FOREGROUND_APP, VISIBLE_APP, SECONDARY_SERVER, HIDDEN_APP, CONTENT_PROVIDER, and EMPTY_APP.
Additional Info: You can find each app's priority and OOM.
....................... In AMM, Press Menu > Running Processes > Group by OOM grouping.
....................... Expand each group and see what apps are included and each app's priority level. (Higher numbers get killed first!)
....................... If you tap on an app, you can get additional info. Tip: Check and see what's included with android.process.acore
The default minfree values ("kill thresholds") for each OOM group are, as far as I can tell: 6, 8, 16, 20, 22 and 24 mb. (CyanogenMod 6.1.2)
This means that: when free memory lowers to 24 mb, EMPTY_APPS get killed; at 22 mb free ram, CONTENT_PROVIDER apps get killed; and so on...
Now, because the Milestone has only 256 mb of memory, I found these numbers too low, especially the 3rd one.
Basically, with those settings, you will usually be sitting with only 20 - 25 mb of ram.
Possibly less. Basically, it's the 3rd number (16) + 5. That's your free memory.
And my phone just chokes when it has that little ram available. Lag, home screen redrawing, the launcher getting killed.... ugh....
After extensive fiddling around, I've come to the conclusion that setting the third slot to about 25mb works great.
No home screen redraws while not being too aggressive on secondary/background apps while having about 30-35mb free all the time
BTW, free ram is not wasted. Android will use that memory to cache the file system and this speeds things up. See this informative post.
My other key settings were:
VM Heap Size = 48 mb.
Home Locked in Memory (not anymore due to my OOM Grouping Fix)
JIT enabled - You can try it on or off and decide what you like better (JIT uses some extra memory but makes the CPU more efficient)
Overclocked to [email protected] vsel.
About VM Heap size. 40 mb should be enough.
Actually, to prevent your launcher from splitting into 2 virtual machines, you should make it at around 40 mb.
I'm no expert about it, but that is the experience of others. (I've never tried it at 32 mb or below )
History Part 2. How To Control Your Launcher Redraws by Making It Bulletproof!
Most of you know about CM's "Lock Home In Memory" setting and how we would still get screen redraws after enabling it.
My suggested AMM settings above should be enough prevent that. You should hardly ever get screen redraws anymore.
But some people were still getting them.
I tried increasing the appropriate priority (for android.process.acore - which includes com.android.launcher) in AMM but the setting wouldn't "stick"
Android would revert it back to where it was - in the Visible App group with a priority of 1.
I had seen how foreground apps had a priority of 0 or -12 or -16 and I came up with a permanent solution - "The Bulletproof Launcher"
Here's how you can have a Bulletproof Launcher!
The line "ro.HOME_APP_ADJ=1" in /data/local.prop also keeps home in memory - it has the same effect as CM's "Lock Home In Memory".
So in light of what I was seeing in AMM, I have changed it to 0 so it now reads:
ro.HOME_APP_ADJ=0
(blank line)
Note: If there isn't a blank line at the end, the ro.HOME_APP_ADJ entry gets deleted.
If you do this and reboot, AMM may still show that android.process.acore (or whereever your launcher is) with a priority of 1
If that's the case, disabled CM's setting to lock home in memory.
Now, if you go back to AMM, you should see that android.process.acore is now a foreground app with a priority of 0... BOOYA!
Notes: Obviously, CM's "Lock Home In Memory" overrides the setting in local.prop.
.......... CM will set the priority back to 1 after local.prop gives a priority of 0.
.......... That's why CM's setting has to be disabled - so that the local.prop setting will "stick"
.......... Gaming Tip - You can use CM's lock home in memory as a "Safety Lock" - to toggle your launcher from Bulletproof (0) to Killable (1)
............................. If having problems with a game, put the "Safety Lock" on so the launcher is "killable" so android can free up some extra ram.
Note that BulletProofing is NO LONGER RECOMMENDED! The Hard To Kill Launcher is the PERFECT SOLUTION!
History Part 3. Blah Blah Blah...
Interesting Notes: I had installed the Telus Froyo Update yesterday (03/25/11) and still have it installed.
.......................... Only now did I think to look at the minfree values
.......................... 8, 12, 24, 28, 32, 32 <--- Telus Froyo. I'm a little shocked by the 3rd slot, 24mb?!
.......................... 6, 8, 24, 26, 28, 30 <----- See, I'm not crazy! Telus Froyo values are very similar to my Balanced Settings
.......................... In comparison, my Balanced script keeps your foreground apps alive longer, same free ram & more friendly to background apps!
.......................... For completeness:
.......................... 6, 8, 16, 20, 22, 24 <---- CM6 (Froyo)
.......................... 6, 8, 12, 16, 24, 32 <---- CM7 (Gingerbread)
.......................... 8, 12, 16, 24, 28, 32 <--- Google's Gingbread values, according to this.
Moved from OP (old Change Log)
UPDATED July 21, 2011: - Update 8
Improved code
Tweaked Current Status functionality. It will tell you if your current and prior minfrees match but if you apply a setting, it won't update the "prior minfrees" with the values you just installed. It will update the prior minfrees the next time you run the script.
UPDATED July 18, 2011: - Update 7
Tweaked Status Checker. Update 6 sometimes gave wrong launcher status
UPDATED July 16, 2011: - Update 6
Added Second MegaRAM device setting.
Added installation to system option - for easy use with Terminal Emulator!
Added UnSuperCharger verification
Improved status checker. It can sometimes determine if home is locked in memory! If not, it asks you if it is.
Saves SuperCharger settings! - They are displayed on the main menu if they exist.
Saves Cust-OOM settings! - Cust-OOM settings get added to the menu!
Smart Cust-OOMizer - Just try it
Improved the code some more. It's smarter than ever
Improved messages to user. Clearer instructions and errors are given!
Final attempt to get this to load on boot. Custom ROMs will now get the /data/userinit.sh and /data/99SuperCharger.sh files.
Easily cook into your rom! Just change the variable (rcpath=) on line 116 to the path of your *rc file!
1224 lines of code!
UPDATED June 29, 2011: - Update 5
Removed 2 minute delay from userinit.sh. Sorry, I didn't know that it would pause the boot process on some phones/roms
UPDATED June 26, 2011: - Update 4
Fixed issue with error check - commented it out as it would stop the script dead on some roms
Improved Status Checker some more
Improved the code. The script is much smarter, cleaner and efficient (no more temp files)
1001 lines of code!
UPDATED June 25, 2011: - Update 3b
Pulled earlier Update 3 - fixed minor noticeable errors and one HUGE one that went unnoticed...
UPDATED June 25, 2011: - Update 3 -PULLED
Added error check that exits script on any error
Tweaked OOM groupings/priorities (Froyo is the same as always, Gingerbread now takes into account Perceptible App)
Improved Status Checker
ReReFixed!? userinit.sh now used as a launcher for 99SuperCharger - with a 2 minute delay! (This boot script fix HAS to work )
Fixed sysctl error on some phone configurations
UPDATED June 20, 2011: - Update 2
Added User Selectable Scrolling Speed!
Fixed a couple of weird issues that some people had in yesterday's update
ReFixed? Still trying to get the 99SuperCharger boot script to load automatically for everybody... grrrrr...
UPDATED June 19, 2011: - Update 1
Added MegaMemory Device setting!
Fixed formatting for Script Manager update (40 columns)
Fixed (I hope) boot script not booting on many ROMs
Fixed long press back button kill (wasn't working)
Modified OOM groupings/priorities: Nothing breaks... EVER!
Improved the help html files
Was this useful info? If so...
Please HIT THANKS and Give a 5 Star Rating!
[Script] V6 SuperCharger! HTK & BulletProof Launchers! The ONLY Android MEMORY FIXER!
Dunno what happened... the real OP and Post 4 got switched
So feel free to hit the thanks button on the "OP" again... LOL
Actually, Post 3 got somehow moved to Post 5 too.
So I dunno what's going on...
But at least Post 2 is still in the right place!
Easy as 4, 2, 5, 1, 3!
Oh and posts 6 through to 16,878 seem to be in the right order!
[Script] V6 SuperCharger! HTK & BulletProof Launchers! The ONLY Android MEMORY FIXER!
Reserved reserved
Nice tips, zeppelin. The settings have much improved the performance of my Milestone, but I am still getting occasional redraws with LPP. Free RAM is usually between 38MB and 45MB, using VM Heap of 40M and your 6,10,24,40,50,60 settings for AMM.
EDIT: Also, when I add the ro.HOME_APP_ADJ=-1 line to the /data/local.prop file, after a reboot that line has disappeared from the file.
-SAIUN- said:
EDIT: Also, when I add the ro.HOME_APP_ADJ=-1 line to the /data/local.prop file, after a reboot that line has disappeared from the file.
Click to expand...
Click to collapse
For that, make sure you have a empty line at the end of the file (hit enter after entering the home_app line). This would make it not go away after reboot.
Sent from my Milestone using Tapatalk
How do I check what ade the currently minfree values on the system? I supose you don't have to reboot for the settings to go into effect, right?
Sent from my Milestone using Tapatalk
afadel said:
How do I check what ade the currently minfree values on the system? I supose you don't have to reboot for the settings to go into effect, right?
Sent from my Milestone using Tapatalk
Click to expand...
Click to collapse
Thanks for the empty line tip. I forgot about that
AMM displays your current values whenever you run it.
EDIT: NO It does NOT... oops AKMO does though.
I was under the impression that a reboot is required. I'll look into that further.
Let me know how it works for you.
Sent from my Milestone using Tapatalk
Edit: The local.prop edit requires reboot.
........AMM (or AKMO) and the disabling CM's lock home in memory setting do not require a reboot. So you can tweak AMM's settings on the fly!
You can check minfree using gscript running with root priviledge and the following command
cat /sys/module/lowmemorykiller/parameters/minfree
this shows you the values in pages, I believe it are 4Kbytes pages.
nice.
Yes minfree's values are in pages and 1 page = 4kbytes.
24mb would show as 6144.
ie. 6144*4/1024=24
-SAIUN- said:
Nice tips, zeppelin. The settings have much improved the performance of my Milestone, but I am still getting occasional redraws with LPP. Free RAM is usually between 38MB and 45MB, using VM Heap of 40M and your 6,10,24,40,50,60 settings for AMM.
EDIT: Also, when I add the ro.HOME_APP_ADJ=-1 line to the /data/local.prop file, after a reboot that line has disappeared from the file.
Click to expand...
Click to collapse
Yes see afadel's post after yours regarding the local.prop edit.
Hit enter so that you have an empty line at the end.
You're still getting redraws because the "bulletproof launcher" entry got deleted. Damn kryptonite!
I edited the OP accordingly.
Also, after you get the local.prop file working properly, see how much free ram you have at that time.
I'm thinking that you currently have 45mb free because the launcher is still getting killed.
So, if it doesn't get killed, it should be more like 30-35 mb free.
Now if you aren't getting redraws (launcher is kept alive) and your ram is still 40-45mb free, you can probably lower the 3rd value from 24 to 20.
Hello, nice tips
In my MM I had to change some the cache, using 40m is too much because phone is slowly, I notice it have low memory than using the standard memory configuration (28m in APAC) but I changed to 24m as I had in 2.1u1.
In normal use I have now 32MB free but setting to aggresive mode it goes to 40MB free.
The problem using aggresive mode is that if you are looking into maps and change to make some sum (i.e. using realcalc) you lost maps ubication, or if you return to maps you lost the state of other programs, so kernel kill the program.
Regards,
Claudio.
clmta said:
Hello, nice tips
In my MM I had to change some the cache, using 40m is too much because phone is slowly, I notice it have low memory than using the standard memory configuration (28m in APAC) but I changed to 24m as I had in 2.1u1.
Click to expand...
Click to collapse
Are you referring to VM Heap size?
I'm pretty sure now that VM heap size shouldn't really affect free ram.
But if it's too big, small apps will lag and if it's too small, large apps will lag.
I recommended 40mb because it would prevent most launchers from splitting into 2 virtual machines.
clmta said:
In normal use I have now 32MB free but setting to aggresive mode it goes to 40MB free.
The problem using aggresive mode is that if you are looking into maps and change to make some sum (i.e. using realcalc) you lost maps ubication, or if you return to maps you lost the state of other programs, so kernel kill the program.
Regards,
Claudio.
Click to expand...
Click to collapse
I guess here you are referring to AMM's aggressive settings?
The second number in AMM's aggressive settings is 12, which would make visible apps more likely to get killed than the 10 mb I suggested.
Come to think of it, perhaps I will test with that set to the default 8 mb ie. 6, 8, 24, 40, 50, 60
Im currently running 6,8,16,40,50,60. Is that crazy? XD
Btw one question, I posted in cm7 thread but no answer . Can I change this values without using AMM(uninstalled)? I mean, change it from Root Explorer, and settings would be the same after rebooting?
lol no you're not crazy.
Like I said, I may tinker a little more with my settings - 6, 8, 24, 40, 50, 60 is not that different from yours.
I was testing 6, 10, 20, 40, 50, 60 this afternoon but I didn't like it too much.
Sorry, I hadn't visited the the CM7 thread in a few hours.
I usually save that one till last because it always has some good reading lol.
But yes, you can edit the same file that gets edited by AOR's memory manager:
/system/etc/init.d/99complete
Be sure to get the permissions right.
I cheat and use SuperManager
Edit: Permissions for 99complete = chmod 755 /system/etc/init.d/99complete
zeppelinrox said:
lol no you're not crazy.
Like I said, I may tinker a little more with my settings - 6, 8, 24, 40, 50, 60 is not that different from yours.
I was testing 6, 10, 20, 40, 50, 60 this afternoon but I didn't like it too much.
Sorry, I hadn't visited the the CM7 thread in a few hours.
I usually save that one till last because it always has some good reading lol.
But yes, you can edit the same file that gets edited by AOR's memory manager:
/system/etc/init.d/99complete
Be sure to get the permissions right.
I cheat and use SuperManager
Click to expand...
Click to collapse
And right permissions are? Im newbie with them xD.
With 16 I don't get FCs in apps I'm using. I did this because I read a tutorial for AMM, and realized that these numbers (6,8 etc) are RAM, and when system reaches 16mb, it will FC the secondary server (i guess that is, lets say game or something? Am I wrong?)
Edit: wtf I don't have a 99complete .
99complete for your settings of: 6,8,16,40,50,60
Code:
#/sbin/sh
echo "1536,2048,4096,10240,12800,15360" > /sys/module/lowmemorykiller/parameters/minfree
I attached it as well - just remove the .txt extension.
Permissions are the same as 10overclock ie.
Edit: The hard core way ---> chmod 755 /system/etc/init.d/99complete
zeppelinrox said:
Are you referring to VM Heap size?
I'm pretty sure now that VM heap size shouldn't really affect free ram.
But if it's too big, small apps will lag and if it's too small, large apps will lag.
I recommended 40mb because it would prevent most launchers from splitting into 2 virtual machines.
Click to expand...
Click to collapse
ok, I understand the point now. I checked now and I saw 2 LauncherPro running, so I will make some tests to try to put them in only one VM.
Regards.
And what's the advantage of having the app running in one process only?
Sent from my Milestone using Tapatalk
After reading this page, I was under the impression that it's less efficient and that memory is wasted.
aph said:
In my testing ADW Ex needs at least 38mb to run totally smoothly so I set mine to 40 mb. Interesting that it splits itself into 2 separate processes to get around the heap size issue but still runs into it.
Click to expand...
Click to collapse
martino2k6 said:
If the two processes are running in the same virtual machine they should share the same memory space though. I mean, two different applications will run in different VMs, however even if one application requests to create a second process they will still be in the same VM.
I may be wrong, but this was my understanding behind it.
Click to expand...
Click to collapse
aph said:
System Panel only shows 1 of the 2, the one that uses less memory. Out of its consumption of 30mb only 10mb is shared, presumably with the one that uses 38mb that OS Monitor shows.
I've seen the larger process go up to 39mb after watching it a bit more. Also, Facebook will take as much as it can get, easily 50mb+.
Click to expand...
Click to collapse
Is my conclusion correct, or not so much?

[TOOL] Tingle - Android patcher

Description
File patcher to enable signature spoofing on Android (especially useful for projects like microG).
Success rate is now near 100%.
Download
Tingle (git version)
NOTE: Currently there isn't yet any release, only the git version.
Credits
@moosd (thanks for Needle)
@MaR-V-iN (thanks for the help)
@AnonVendetta (thanks for testing)
@Aaren11 (thanks for testing)
@ChristianTC (thanks for testing)
@_Kosmas_ (thanks for testing)
XDA:DevDB Information
[TOOL] Tingle - Android patcher, Tool/Utility for all devices (see above for details)
Contributors
ale5000
Source Code: https://github.com/ale5000-git/tingle
Version Information
Status: Testing
Created 2016-08-13
Last Updated 2017-11-04
Reserved
Reserved
@ale5000: I got the patch to work, I had to deodex my system APKs and JARs. Then I applied the patch. Everything works so far.
However, on a friend's LG D415 running 5.1.1 SlimROM, it fails. Phone still boots but MicroG says signature spoofing isn't enabled. Will post a log later.
Edit: I meant to say that my friend is running SlimROM v6.0.1 Marshmallow, not v5.1.1 Lollipop.
I also just tested your patch on my Galaxy Tab 2 7.0 (SM-P3113) running SlimROM 5.1.1. The patch works flawlessly. But I had to deodex it too. My friend's phone is already deodexed, not sure why it didn't work on his device.
AnonVendetta said:
My friend's phone is already deodexed, not sure why it didn't work on his device.
Click to expand...
Click to collapse
If you can, please post the original framework.jar so I can make some tests.
Here is his unmodified framework.jar.
I'm running the latest (7/8/2016) version of XenonHD on my LG G3 D855 for the past few days, and whereas I had no problem using needle to patch the build from a few months ago - this latest update throws an error even when using tingle.
I'm fairly certain I've set everything up correctly - I'm using my laptop at the hospital rather than my regular terminal, but I've installed Python 3, linked it in the PATH environmental variables updated Java RTE and made sure that I have working ADB drivers. Needle runs fine, pulls the framework and modifies it, but encounters an error. (I can post screenshots if necessary)
I've attached my unmodified framework.jar to this post, and any help possible would be most appreciated
The ROM is supposedly deodexed, so I haven't tried that yet, to be honest it isn't something I've ever done before or would know where to start with.
View attachment framework.jar
View attachment framework-res.apk
I have found the problem, I need some time to make some tests and trying to fix it.
In the first option FileNotFounError: [WinError 2]
In the second option comes off as all done but framework.jar modified it has the same MD5 that he framework.jar original
I leave the framework.jar, Thank you very much for your time
I'm stupid, I was going to Settings/Applications and mark all permissions and then I was going to
Settings/Privacy and mark all the permissions that were not marked and these permits are Disable app Wi-Fi usage and Disable app cellular usage, he was removing internet access.
I'm stupid.
Sorry.
The only thing that not works is the weather widget from Cyanogenmod 13, everything else works, synchronization contacts, calendar, Chrome and location for cellular it works.
Thanks for the help.
ChristianTC said:
In the first option FileNotFounError: [WinError 2]
Click to expand...
Click to collapse
What does it say if you run manually this?
Code:
adb devices
adb identifies the device as: 4df785271f4440c7
And for disconnect the device of the USB I have to kill process adb.exe from the Task Manager from Windows.
@ChristianTC: Can you please compress all the content of the folder of the patch with included your adb as you use it and put it here so I can try it directly?
ale5000 said:
@ChristianTC: Can you please compress all the content of the folder of the patch with included your adb as you use it and put it here so I can try it directly?
Click to expand...
Click to collapse
Here it is, I have this folder in C:/adb
@AnonVendetta and @Aaren11
You have both the same issue, the framework.jar you have contains 2 dex and the file to patch is inside the first dex but patching it exceed the limit of 64k methods (limit of a single dex) and so it fails, I have added a workaround in my code to move some methods in the second dex (that isn't full) so now it should work but always do a backup before use the patch to be sure.
Please report back if everything works.
@ChristianTC
- For the first option: I was only searching for system wide adb, it never use adb in the folder of the script; in the latest version it search adb also in the tools folder so place it here (after updating Tingle).
- For the second option: This option was added recently and the modified file was only kept in the temp folder, now it is copied to the output folder.
Please report back if everything works.
Tells me that All done but framework.jar modified It has the same MD5 that he framework.jar original.
ChristianTC said:
Tells me that All done but framework.jar modified It has the same MD5 that he framework.jar original.
Click to expand...
Click to collapse
It is really strange.
Try these steps:
1) Please make sure you have the latest version of Tingle (all files and folders, not just patch.py) by clicking "Clone or download" and then "Download ZIP" in the GitHub page.
2) Make sure to extract it in a user writable folder, like Documents; if you extract it under "C:\Program Files" then the patch may not have write permissions to write the file.
3) The patch read the file inside the input folder but write the final file in the output folder so it never overwrite the original file.
4) In case it still do not work open the command prompt with "Run as administrator" and then run the patch from here (it shouldn't really be needed but as last resort it can be tried).
One of the steps should hopefully fix the problem, please report back what happened.
@ale5000: Cancel my request, I caught my now ex-friend trying to steal from me, so I no longer have an incentive to help him with patching his framework.jar. However, if you would still like to provide a technical explanation as to why the patch didn't succeed, then I'd like to hear it anyway.
Sorry for the wasted time.....

[WIP] Linux on Dex for Galaxy S8

One of my favorite features of the S8 is the Dex feature, that lets me use the phone as a basic computer. I was very disappointed when I saw that the Linux on Dex (LoD) beta is only available for the Note 9 and Tab S4.
This is a stupid software limitation, I don't see any other reason why the S8 - even with Android Pie - wouldn't run LoD. It was even used for the first demos (around one year ago)!
The aim of this thread is to try to remove this limitation and run Linux on Dex on our Galaxy S8.
We already managed to remove the limitation for the need of the Dex dock, hope this will also be a success!
As I'm not an experienced Java developer, I won't be able to solve this thing alone. Hope that other developers will also join this project!
Ok, here are my first steps:
- Downloaded, installed and ran the latest APK (1.0.49): https://forum.xda-developers.com/showpost.php?p=78734115&postcount=226
Error message: Your device is not supported. Please visit www.linuxondex.com for more details.
- Modified the model in build.prop to SM-N960
Error message: Linux on DeX requires your device to have the latest software to support some features.
So there is a change, but not enough.
Now, I decompiled the APK with apktool. The source is in smali bytecode format, but it can be transformed to java.
The device detection code is in the file smali/com/samsung/android/lxd/a/i.smali. It checks the device name for TABS4, CROWN (Note9), STAR2 (S9+*), WINNER (Fold), BEYOND (S10). Can someone add the DREAMLTE/DREAM2LTE and recompile?
* Why only the S9+ (star2) and not the S9 (star)? This is just stupid.
I am using customs rom, with Android PIE
I can load into the apps and while i click the "create" button to build .img file, it just shows me "please wait" and no response.
alan9820 said:
I am using customs rom, with Android PIE
I can load into the apps and while i click the "create" button to build .img file, it just shows me "please wait" and no response.
Click to expand...
Click to collapse
What custom ROM and LoD version are you using?
BTW, you can find prebuilt IMG files in the Note9 LinuxOnDex thread.
kbarni said:
Ok, here are my first steps:
- Downloaded, installed and ran the latest APK (1.0.49): https://forum.xda-developers.com/showpost.php?p=78734115&postcount=226
Error message: Your device is not supported. Please visit www.linuxondex.com for more details.
- Modified the model in build.prop to SM-N960
Error message: Linux on DeX requires your device to have the latest software to support some features.
So there is a change, but not enough.
Now, I decompiled the APK with apktool. The source is in smali bytecode format, but it can be transformed to java.
The device detection code is in the file smali/com/samsung/android/lxd/a/i.smali. It checks the device name for TABS4, CROWN (Note9), STAR2 (S9+*), WINNER (Fold), BEYOND (S10). Can someone add the DREAMLTE/DREAM2LTE and recompile?
* Why only the S9+ (star2) and not the S9 (star)? This is just stupid.
Click to expand...
Click to collapse
I've tried to modify i.smali to return "STAR2" (for any device) but it fails on another check and returns:
Error message: Linux on DeX requires your device to have the latest software to support some features.
3mpty said:
I've tried to modify i.smali to return "STAR2" (for any device) but it fails on another check and returns:
Error message: Linux on DeX requires your device to have the latest software to support some features.
Click to expand...
Click to collapse
Yep...it seems that there are other limitations too. This "latest software" is just stupid; for example the S8 Pie has newer software than the Note9 had when the first LoD beta was released (1.0.38, in last November), still it complains for old software. I wonder if it will work when devs will integrate S10 APKs in S8 rom...
kbarni said:
Yep...it seems that there are other limitations too. This "latest software" is just stupid; for example the S8 Pie has newer software than the Note9 had when the first LoD beta was released (1.0.38, in last November), still it complains for old software. I wonder if it will work when devs will integrate S10 APKs in S8 rom...
Click to expand...
Click to collapse
This 'latest software' may be caused by other issue - SELinux. After running self build & signed version my logcat is full of such entries:
Code:
2019-02-27 13:19:32.590 5156-5156/? E/audit: type=1400 audit(1551269972.589:3628): avc: denied { read } for pid=6318 comm="ung.android.lxd" name="u:object_r:lxd_prop:s0" dev="tmpfs" ino=3505 scontext=u:r:untrusted_app:s0:c168,c258,c512,c768 tcontext=u:object_r:lxd_prop:s0 tclass=file permissive=0 SEPF_SM-G950F_9_0001 audit_filtered
2019-02-27 13:19:32.590 5156-5156/? E/audit: type=1300 audit(1551269972.589:3628): arch=c00000b7 syscall=56 success=no exit=-13 a0=ffffff9c a1=7fe33851f8 a2=88000 a3=0 items=0 ppid=5167 pid=6318 auid=4294967295 uid=10680 gid=10680 euid=10680 suid=10680 fsuid=10680 egid=10680 sgid=10680 fsgid=10680 tty=(none) ses=4294967295 comm="ung.android.lxd" exe="/system/bin/app_process64" subj=u:r:untrusted_app:s0:c168,c258,c512,c768 key=(null)
2019-02-27 13:19:32.590 5156-5156/? E/audit: type=1327 audit(1551269972.589:3628): proctitle="com.samsung.android.lxd"
2019-02-27 13:19:32.591 6318-6318/? E/libc: Access denied finding property "lxd.vmdebugmode"
And because those properties cannot be read it fallbacks to default values.
Unfortunately I'm using official Pie rom for S8 without root etc.
3mpty said:
This 'latest software' may be caused by other issue - SELinux. After running self build & signed version my logcat is full of such entries:
Unfortunately I'm using official Pie rom for S8 without root etc.
Click to expand...
Click to collapse
I'm not sure it's SELinux. It should run on stock rom. In the message you posted, it complains also for untrusted app.
I tried LoD 1.0.38, which also stops with "Update your software", and didn't find anything similar in Logcat.
Can you share your modded LoD APK, so I can test it? I have rooted S8 with Pie and Alexis 7.4 rom.
kbarni said:
I'm not sure it's SELinux. It should run on stock rom. In the message you posted, it complains also for untrusted app.
I tried LoD 1.0.38, which also stops with "Update your software", and didn't find anything similar in Logcat.
Can you share your modded LoD APK, so I can test it? I have rooted S8 with Pie and Alexis 7.4 rom.
Click to expand...
Click to collapse
I'm also not sure if it was SELinux but orginal apk doesn't throw such logs into logcat. Checkout attached apk.
3mpty said:
I'm also not sure if it was SELinux but orginal apk doesn't throw such logs into logcat. Checkout attached apk.
Click to expand...
Click to collapse
Thanks!
I checked it, I don't have the untrusted app message, I have several of these:
Code:
libc [E] Access denied finding property "lxd_vmdebugmode"
However I find this part of the logcat more interesting:
Code:
LxD_o [I] isSupportedBinary: binary version: 1, required version: 4
LxDEntryActivity [E] NonSupportedBinary:
Taking a look at o.smali, the "binary version" is given by the function: com.samsung.android.lxd.processor.utils.Utils.getNstVersion ( );
This points to Utils.smali where it returns android.os.SemSystemProperties .getInt ( "linux_on_dex_version",1); if I understand correctly.
And that leads us to the kernel, probably related to /include/linux/linux_on_dex.h
Can you check this? Do you agree?
I'll investigate the kernel part. I suspect that the kernel has LoD support, but it reports LoD version 1, and the beta won't start unless this number is higher or equal to 4. I don't know if there are other kernel differences, have to dig myself in the Note9 kernel too.
Can you check what happens if you modify the o.smali file, to compare the result of getNstVersion with 1 (set v2 to 0x01 in .line 634)? If you can do this, rebuild the APK, repost it and report back please!
I feel we are getting closer to soething!
I've changed `getNstVersion` default result to 4 instead 1 and it will allow to continue. This method is called later in o.smali:
Code:
/**
* This method checks if device supports LoD, it compares linux_on_dex_version system var with
* 5 (tablet) and 4 (phone). If linux_on_dex_version value is smaller than 5 or 4 this device
* will not support LoD.
*
* @return true if device is supported
*/
public static boolean isSupportedBinary() {
boolean isAlreadyAuthorized = g();
boolean isSupportedBinary = true;
if (isAlreadyAuthorized) {
return true;
} else {
int deviceNstVersion = Utils.getNstVersion();
byte requiredNst;
if (isTablet()) {
requiredNst = 5;
} else {
requiredNst = 4;
}
String var4 = a;
StringBuilder var5 = new StringBuilder();
var5.append("isSupportedBinary: binary version: ");
var5.append(deviceNstVersion);
var5.append(", required version: ");
var5.append(requiredNst);
Log.i(var4, var5.toString());
if (deviceNstVersion < requiredNst) {
isSupportedBinary = false;
}
return isSupportedBinary;
}
}
Unfortunately is not enough. App crashes in few moments when it tries to modify system properties:
Code:
Caused by: java.lang.RuntimeException: failed to set system property
at android.os.SystemProperties.native_set(Native Method)
at android.os.SystemProperties.set(SystemProperties.java:183)
at android.os.SemSystemProperties.set(SemSystemProperties.java:111)
at com.samsung.android.lxd.EntryActivity.R(EntryActivity.java:294)
at com.samsung.android.lxd.EntryActivity.P(EntryActivity.java:183)
at com.samsung.android.lxd.EntryActivity.S(EntryActivity.java:329)
at com.samsung.android.lxd.EntryActivity.onCreate(EntryActivity.java:150)
at android.app.Activity.performCreate(Activity.java:7327)
at android.app.Activity.performCreate(Activity.java:7318)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3088)
Looks like it's the same issue that doesn't allow to read those properties first (at least it's my guess). I've attached apk after 2nd modification.
3mpty said:
Looks like it's the same issue that doesn't allow to read those properties first (at least it's my guess). I've attached apk after 2nd modification.
Click to expand...
Click to collapse
I confirm, I have the same error.
I think it wants to set a system property in file EntryActivity.smali (linux_on_dex.LoD_image and linux_on_dex.LoD_image_P_initial) that's not implemented (maybe in kernel?).
BTW, I'm really curious about reports of LoD working on S8/Note8 etc; @alan9820 and others: what ROM/kernel/LoD version are you using?
Hey guys! I made some interesting progress!
Installing the NX 22.1 kernel allowed me to start the (modified) app! After the welcome page, I could get to the "Create container" page, but when I select the .IMG file, it stays blocked at the "Please wait..." screen. So I guess I'm stuck in the same position as alan9820 (post #3 in the topic).
If I restart the creation of the container, it gives "Unexpected error: Something went wrong. Please close Linux on Dex and try again".
The only LoD related error messages from logcat are:
Code:
LxD_NstControlChannelV1 [E] Failed to connect to server!
LxD_NstControlChannelV1 [E] ControlThread: com.samsung.lxd.processor.LxdEception: Failed to connect to server!, socket status: false
kbarni said:
BTW, I'm really curious about reports of LoD working on S8/Note8 etc; @alan9820 and others: what ROM/kernel/LoD version are you using?
Click to expand...
Click to collapse
I used S8 exynos version G950F
With android customs rom of Hades PIE ROM v3.0
I just google linux on dex apk from apkmirror and download
Repeat that i am able to open the app and choose image
But i am failed to create image just giving me "please wait" msg.
---------- Post added at 07:10 AM ---------- Previous post was at 07:08 AM ----------
kbarni said:
What custom ROM and LoD version are you using?
BTW, you can find prebuilt IMG files in the Note9 LinuxOnDex thread.
Click to expand...
Click to collapse
I alrrady flashed back to Oreo rom, PIE rom is not as smooth as 8.0 currently ... haha
Some more progress: There is a switch in the kernel parameters cooncerning LinuxOnDex: CONFIG_LOD_SEC. I enabled it and recompiled the NX kernel.
Unfortunately it's the same error, the container cannot be built, it gives only an unspecified error. Nothing in Logcat.
I checked the Note9 kernels, but there is no important difference (especially in LoD part).
The unpatched APK files still give the Unsupported software error.
I wonder if the error occurs because of insufficient RAM for building the container??? The main difference between the S9+, Note9, Tab S4 vs. S8 and S9 is that the first group has 6GB of RAM.
[edit] Tried to increase the memory size by 2GB by adding swap, still doesn't work.
kbarni said:
Some more progress: There is a switch in the kernel parameters cooncerning LinuxOnDex: CONFIG_LOD_SEC. I enabled it and recompiled the NX kernel.
Unfortunately it's the same error, the container cannot be built, it gives only an unspecified error. Nothing in Logcat.
I checked the Note9 kernels, but there is no important difference (especially in LoD part).
The unpatched APK files still give the Unsupported software error.
I wonder if the error occurs because of insufficient RAM for building the container??? The main difference between the S9+, Note9, Tab S4 vs. S8 and S9 is that the first group has 6GB of RAM.
[edit] Tried to increase the memory size by 2GB by adding swap, still doesn't work.
Click to expand...
Click to collapse
I have a S8+ Korean version (with 6gb ram) willing to test your modified version to see if it works.
brick5492 said:
I have a S8+ Korean version (with 6gb ram) willing to test your modified version to see if it works.
Click to expand...
Click to collapse
You can install the kernel below (modified NX 22.1) and the apk from 3mpty's post (the modified_v2).
The app should start, the question is if you can create the container or if it gives an unspecified error.
Thanks for testing and please report back your results!
kbarni said:
You can install the kernel below (modified NX 22.1) and the apk from 3mpty's post (the modified_v2).
The app should start, the question is if you can create the container or if it gives an unspecified error.
Thanks for testing and please report back your results!
Click to expand...
Click to collapse
I'm really sorry, but my S8+ is not rooted and on the factory image (still Oreo, didnt recieve Pie yet) and I wish to leave it stock since it's my primary (work) device. I guess I can't install that kernel with the locked bootloader on Oreo right? And I do need the kernel for that modified Dex to work?
I did install the apk and after it granting permissions, it just force closes. I'm on the October security patch.
brick5492 said:
I'm really sorry, but my S8+ is not rooted and on the factory image (still Oreo, didnt recieve Pie yet) and I wish to leave it stock since it's my primary (work) device. I guess I can't install that kernel with the locked bootloader on Oreo right? And I do need the kernel for that modified Dex to work?
I did install the apk and after it granting permissions, it just force closes. I'm on the October security patch.
Click to expand...
Click to collapse
LoD related changes were introduced in Pie kernel, so this won't work on Oreo.

[APP][MOD] Netflix 8.1.2 build 3844 ATV for uncertified devices by Netflix

Netflix 8.1.2 build 3844
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
At the moment, the method of changing the ESN number is non-working!
Work on the problem of non-certified devices continues, new versions may appear in the future.​
Spoiler: Old modifications
Spoiler: Netflix 8.1.2 build 3844 - Modification instructions
Requirements:
-Any uncertified device by Netflix
Changes:
-You can insert any ESN number
-Google verification disabled
What works:
-HD
-Audio 5.1
-HDR
Tested on MI TV 4A/4S RU Edition​
1. Download and unzip the archive BatchApkTool.zip (BatchApkTool is already configured and has a batchapktool.ini settings file!)
The unpacked folder(_INPUT_APK) already contains the apk mod, so you don't need to download it in advance!
2. Run BatchApkTool.exe
- Enter the command in numbers: 04
(This command decompiles the necessary part of the APK)
-Wait for the decompilation to finish, but don't close this app!
3. Go to the directory: _INPUT_APK\com.netflix.ninja_8.1.2_build_3844_mod\smali\o\
and find the file setShowsDialog. smali
- Open the setShowsDialog.smali file and find the lines 621 and 632:
- Change the ESN number "NFANDROID1-PRV-T-L3-SDMC=MBX4K=RANGER-9908-" to "YOUR ESN NUMBER" and save file!
4. In the BatchApkTool app, enter the command: 05
- Wait for the compilation to finish!
5. Take the compiled APK with your ESN number in the _OUT_APK folder.
6. Install it on your device and use it!
Spoiler: Netflix 6.1.3 build 2482 - Modification instructions
Requirements:
-Any uncertified device by Netflix
-Security Level: Widevine L1
-Doesn't work if the level is Widevine L3
Changes:
-You can insert any ESN number
-Disable app signature verification
What works:
-HD and UHD(4K)
-Audio 5.1
-HDR
-Netflix Recommendations on Home Screen (You need to update the Android TV Home app)
Tested on MI TV 4A/4S RU Edition
​
Modification instructions:
1. Download original apk: com.netflix.ninja_6.1.3_build_2482-2482_minAPI22.apk
2. Decompile the APK file with APKTOOL 2.5.0
3. Find out your ESN number in any way, such as using Kodi+Netflix plugin, etc.
Example, on my device ESN Number: NFANDROID2-PRV-0-XIAOMMITV-MSSP1-11579-8E7EBE41602D7BFE5FB467845C6F254CAD5677390EFB960CA0D11755BB31CDD5
The ESN number needs to be adjusted, but all this is individual, for me, the working option turned out to be this: NFANDROID1-PRV-0-XIAOMMITV-MSSP1-11579-
4. Add your device's ESN number to the file BaseEsnProvider.smali:
The file is located in the directory: DECOMPILE_APK\smali\com\netflix\mediaclient\service\configuration\esn\
Spoiler: Find the code in file:
Code:
.method public getEsn()Ljava/lang/String;
.locals 1
.line 310
iget-object v0, p0, Lcom/netflix/mediaclient/service/configuration/esn/BaseEsnProvider;->esn:Ljava/lang/String;
return-object v0
.end method
Spoiler: Replace with this code:
Code:
.method public getEsn()Ljava/lang/String;
.locals 2
.line 310
iget-object v0, p0, Lcom/netflix/mediaclient/service/configuration/esn/BaseEsnProvider;->esn:Ljava/lang/String;
const-string v0, "YOUR ESN NUMBER"
return-object v0
.end method
Where "YOUR ESN NUMBER", insert your ESN number.
4.1 To remove the optimization error (-14):
Find the file: DECOMPILE_APK\smali\com\netflix\ninja\MainActivity.smali
Comment out line 3723 like this: #invoke-virtual {p1}, Landroid/app/AlertDialog;->show()V
4.2 This solution to disable PUSH error (-14) on Home Screen ATV:
Find the file: DECOMPILE_APK\smali\com\netflix\mediaclient\service\pushnotification\PushJobServiceUtils$Companion$tryStartService$1.smali
Comment out line 105 like this: #invoke-virtual {v0}, Landroid/widget/Toast;->show()V
5. Compile the app using APKTOOL 2.5.0.
6. Remove the signature verification using the program: ApkSignatureKiller.zip
Unpack archive, go to the folder and transfer the original apk and recompiled apk. Rename them, for example: orig.apk and mod.apk
Open the file config.txt and make the configuration:
Spoiler: Settings config.txt
Code:
# original file
apk.signed=orig.apk
# recompiled file
apk.src=mod.apk
# output file
apk.out=out.apk
# do not touch the other settings
sign.enable=true
sign.file=test.keystore
sign.password=123456
sign.alias=user
sign.aliasPassword=654321
Run script run.bat and wait for the script to finish working, in the folder you should get a working apk with your ESN number.
What do you need to know if you are having problems with the app?
Good luck watching Netflix!
Netflix 2.0 build 295 for Widevine L3 (Only SD Quality)
Requirements:
-Any uncertified device by Netflix
-Security Level: Widevine L1 or Widevine L3
Changes:
-You can insert any ESN number
Before modifying, check and install the app, it is possible that everything will work on devices with Widevine L3 without changing the ESN number!​Modification instructions:
1. Download original apk: com.netflix.ninja-2.0_build_295.apk
2. Decompile the APK file with APKTOOL 2.5.0
3. Find out your ESN number in any way, such as using Kodi+Netflix plugin, etc.
4. Add your device's ESN number to the file BaseEsnProvider.smali:
The file is located in the directory: DECOMPILE_APK\smali\com\netflix\mediaclient\service\configuration\esn\
Spoiler: Find the code in file:
Code:
const-string v0, "NFANDROID1-PRV-T-L3-SDMC=MBX4K=RANGER-9908-"
Where "NFANDROID1-PRV-T-L3-SDMC=MBX4K=RANGER-9908-", insert your ESN number.
5. Compile the app using APKTOOL 2.5.0 and sign the app with any signature!
Good luck watching Netflix!
Dealaxer said:
My ESN number: NFANDROID1-PRV-0-XIAOMMITV-MSSP1-11579 -, works only for me and only for those who have a device like mine. You must adjust your ESN number yourself. You must use a non-full ESN number. Write your ESN number here, I will correct it for you!
Click to expand...
Click to collapse
I have tried my devices ESN from kodi (partial) it results in error 13. ( As does the official latest apk)
psycon said:
I have tried my devices ESN from kodi (partial) it results in error 13. ( As does the official latest apk)
Click to expand...
Click to collapse
Write your ESN. Error 13 is only due to an incorrect ESN number. Also, your device must have the L1 level.
Dealaxer said:
Write your ESN. Error 13 is only due to an incorrect ESN number. Also, your device must have the L1 level.
Click to expand...
Click to collapse
The device does have widevine L1
psycon said:
The device does have widevine L1
Click to expand...
Click to collapse
Try this modification of the number:
NFANDROID1-PRV-0-GTV-...
or
NFANDROID1-PRV-GTV-...
For different devices, need to select correct ESN number. There is a different suffix/prefix for different devices, example:
Code:
# Unknown or Phone "PRV-P"
# Tablet? "PRV-T" (should be for tablet) / PRV-T-L3
# Tablet "PRV-C" (should be for Chrome OS devices only)
# Google TV "PRV-B" (Set-Top Box)
# Smart Display "PRV-E"
# Android TV "PRV-" (without letter specified) / PRV-0 or PRV-1 etc
and prefix: NFANDROID1 or NFANDROID2
I was able to get this working . Test patterns showed both 720p and 1080p . Thank you!!!!!
psycon said:
The "0" ESN works . Test patterns showed both 720p and 1080p . Thank you!!!!!
Click to expand...
Click to collapse
I am sincerely happy for you! You can insert this modified ESN number into the app and use it instead of Kodi!
Tested working.. part of me wonders if Netflix will block this partial ESN, as they have done in the past with similar ESN spoofs.
Dealaxer said:
I am sincerely happy for you! You can insert this modified ESN number into the app and use it instead of Kodi!
Click to expand...
Click to collapse
Check pm please
Thank you so much for this!
Pixelhouse said:
Thank you so much for this!
If the app itself shows 4k next to the name this is actual 4k or is there still some checks to make it 1080p?
Because it shows 4k but the ESN is not mine, it is the one your provided the " NFANDROID1-PRV-0-xxxxxxxxxx-xxxxx- " so the ESN dont match actually, wont that bring me in lower quality?
Click to expand...
Click to collapse
As was pointed out to me,. You cannot just use any other devices ESN.. you have to use the one that belongs to your actual device., use the kodi Netflix addon which has a feature in its advanced settings to show your full or partial ESN.
To verify if your APK has worked Netflix has Test videos that will show you your current resolution and frame rate . Just search "test"
Please check your PMs as I have messaged you
psycon said:
As was pointed out to me,. You cannot just use any other devices ESN.. you have to use the one that belongs to your actual device., use the kodi Netflix addon which has a feature in its advanced settings to show your full or partial ESN.
To verify if your APK has worked Netflix has Test videos that will show you your current resolution and frame rate . Just search "test"
Please check your PMs as I have messaged you
Click to expand...
Click to collapse
I fixed the post.
The ESN worked the only thing thats blurry to me is the interface text and logo. Everything else(series/movies) seems razorsharp.
Thanks.
Pixelhouse said:
I fixed the post.
The ESN worked the only thing thats blurry to me is the interface text and logo. Everything else(series/movies) seems razorsharp.
Thanks.
Click to expand...
Click to collapse
Thanks.. curious. What device u using
psycon said:
Thanks.. curious. What device u using
Click to expand...
Click to collapse
Formuler GTV
psycon said:
Tested working.. part of me wonders if Netflix will block this partial ESN, as they have done in the past with similar ESN spoofs.
Click to expand...
Click to collapse
Don't worry! Basically, all non-certified devices from Netflix have the same ESN numbers in their device categories, for example, MI TV 4A 32 TVs all have the same ESN number, etc.. I have been using this method for more than 8 months, and my number has not been blacklisted. If they do, I have a way to solve it.
Pixelhouse said:
Thank you so much for this!
If the app itself shows 4k next to the name this is actual 4k or is there still some checks to make it 1080p?
Click to expand...
Click to collapse
If your device supports 4K, then you will have 4K!
Dealaxer said:
If your device supports 4K, then you will have 4K!
Click to expand...
Click to collapse
I just checked it says Ultra HD 4K on the startscreen and it looks razorsharp but when i check the test video or press the info button it says 1080 so its regular HD when streaming unfortunatly.
Pixelhouse said:
I just checked it says Ultra HD 4K on the startscreen and it looks razorsharp but when i check the test video or press the info button it says 1080 so its regular HD when streaming unfortunatly. But it's an L3 Device sonwe are not complaining haha.
Click to expand...
Click to collapse
What do you check through? In Kodi or in the Netflix app? If in Kodi, then this is normal and you have 4K, and if in the app, then the test video is incorrect or some do not have it at all. Here you can focus on your router's traffic. And so 4K works great, again, if you purchased a plan with 4K.
Pixelhouse said:
But it's an L3 Device sonwe are not complaining haha.
Click to expand...
Click to collapse
Have you read 1 post of this topic? There I indicated that it is not suitable for the L3 level! The modification was made for L1! For those who have the L1 level, everything works perfectly!
People, learn 1 post: - Does not work if the Widevine level is L3. Be careful!

[Android 12 / LineageOS 19.1] Manual patch to services.jar for signature spoofing

I haven't seen this shared anywhere but it's really quite straightforward if you know what you're doing. Maybe it helps someone to post it here. The next section is only for completeness, feel free to skip past it to get to the gist of it.
Background
Android by design depends for full functionality on Google services. These are normally provided by a proprietary application package com.google.android.gms. MicroG is an open-source replacement for Google services, allowing the user to take advantage of working notifications, location backends, installer, and other essential services, without compromising privacy and giving Google a backdoor to your device.
To operate properly, MicroG needs the ability to pretend it is the actual Google services application package, signed by Google. Hence the need for signature spoofing.
Official LineageOS builds do not include the ability to spoof signatures. Thus, using LineageOS with MicroG takes extra steps such as building patched LineageOS locally (a resource-consuming endeavor), or taking advantage of the LineageOS for MicroG builds helpfully provided in collaboration with the MicroG team (which however, due to resource constraints, are updated less often and lag behind the official builds).
A third solution is to patch an already-built system at installation time. This was initially implemented with Needle by souramoo, forked and improved upon as Tingle by @ale5000, which eventually inspired a wholly different approach with DexPatcher by @Lanchon, a tool allowing flexible patching of Dalvik executables, in particular services.jar, where signature spoofing is commonly implemented. Relevant patches for DexPatcher were authored by Lanchon himself up to Android 9. Later on, @oF2pks picked up the work to provide patches for Android 11.
Unfortunately, no such patch to be used with DexPatcher has existed from Android 12 onwards. One other option includes installing the FakeGApps Xposed module as forked and updated by whiz-inc. While it's great it exists, and the author's work should be appreciated, it's a complication and an unnecessary burden in many scenarios to depend on Xposed (and thus Magisk and LSPosed or the like) as a prerequisite for the patch to work. It's also worth it to be aware that the implementation makes it less secure than the traditional signature spoofing method.
The DexPatcher approach has several advantages. The patch can be more flexible and continues to apply as the underlying code changes. In comparison, the simple approach presented here is much more primitive and might require readjustment as new versions emerge over time. However it might still be good to know it works.
This way you can use the latest official LineageOS with MicroG, and update at will, as soon as new builds become available.
Patching
This is not a walkthrough, and I'm not going to explain everything step-by-step. Rather, the purpose is to give you the general idea what to do, which you can then adjust to your specific use case.
Obtain the file services.jar to patch. For example:
Pull it from your device: adb pull /system/framework/services.jar – or –
Extract it from a LineageOS image: payload-dumper-go -p system payload.bin and imgextractor system.img
Extract the file with APK Tool: apktool2 d -o services services.jar
Make the changes that allow signature spoofing. Either:
Apply the patch attached to this post: patch -i services.diff -p0 – or –
As of current LOS 19.1 builds (Nov 2022), you can just replace the single file: smali_classes2/com/android/server/pm/PackageManagerService$ComputerEngine.smali with the one attached to this post.
Note: this might not always hold in the future. You might even need to apply the patch manually if the source changes too much. Either approach works for now.
Recompile the modified framework: apktool2 b -c -f -o services.jar services
Note: This will overwrite the original services.jar. The -c flag to APK Tool is important as it keeps all the original META-INF inside it intact.
Copy services.jar over to the device: adb push services.jar /system/framework/ and you probably also have to adjust the permissions accordingly
This approach should work for any Android version in principle, although the exact patch might differ. However, since better options exist for Android 11 and below, you are probably interested in applying this to Android 12 or higher only.
One More Thing
For Android 12, an extra step is critical to ensure no bootloop on subsequent boot (2nd and then on), since oat_file_manager.cc now includes a check if OAT (.odex/.vdex) files are loaded from "trusted" locations only (effectively, the /system partition). You have to generate the optimization files and place them in the correct location, which is /system/framework/oat/arm64/:
dex2oat --dex-file=/system/framework/services.jar --instruction-set=arm64 --oat-file=/system/framework/oat/arm64/services.odex
The .vdex file will be created as well (these files already exist but should be overwritten, check the timestamps or you might want to delete them beforehand just to be sure). If you skip this step, the device will boot the 1st time but then the optimization files will be generated and saved in /data/dalvik-cache/. On any subsequent boot, an attempt to load these files from an "untrusted" location by the system will throw a fatal error and the Zygote process will die with the message: "Executing untrusted code from [...]". If you somehow find yourself in this predicament, delete the following files and reboot to temporarily make it work one more time:
/data/dalvik-cache/arm64/[email protected][email protected]@classes.dex
/data/dalvik-cache/arm64/[email protected][email protected]@classes.vdex
Further Steps
These are not all the required steps to install MicroG on an official LineageOS installation. You still want to, in particular:
Install at least the main MicroG app (GmsCore) and a dummy signature spoofing APK (also attached to this post) as priv-apps
Set up the priv-app permissions accordingly – otherwise you'll get a bootloop
Likely also install FakeStore, Aurora Store/F-Droid, and location backends of your choice, etc.
However: this is a simple solution to perhaps the most cumbersome aspect of signature spoofing. It's not necessary to resort to Xposed modules to get it working on Android 12, or to depend on a special build with the spoofing patched in at compilation time.
Credit: The patch .smali code has been reverse-engineered from the spoofing patch for LineageOS for MicroG builds.
Aqq123 said:
Patching
This is not a walkthrough, and I'm not going to explain everything step-by-step. Rather, the purpose is to give you the general idea what to do, which you can then adjust to your specific use case.
Obtain the file services.jarto patch. For example:
Pull it from your device: adb pull /system/framework/services.jar – or –
Extract it from a LineageOS image: payload-dumper-go -p system payload.bin and imgextractor system.img
Click to expand...
Click to collapse
can i do this method for android 12 one ui 4.1 s10e? it says extract lineage os from system image but how do i do that in one ui?
kullanici32 said:
can i do this method for android 12 one ui 4.1 s10e? it says extract lineage os from system image but how do i do that in one ui?
Click to expand...
Click to collapse
I don't know anything about Samsung but try here:
[TUTORIAL] How to Edit Unpack & Repack Samsung system.img or system.img.ext4
Follow https://stackoverflow.com/questions/58541074/how-to-unpack-modify-pack-and-flash-system-img-ext4-file-using-odin a) Modifying With simg2img system.img.ext4 system.img, you will get a raw image file named system.img With mkdir system...
forum.xda-developers.com
Alternatively you can just take services.jar from a live (running) system.
kullanici32 said:
can i do this method for android 12 one ui 4.1 s10e? it says extract lineage os from system image but how do i do that in one ui?
Click to expand...
Click to collapse
There are many good custom Rom for s10e. Why do you want to start with one UI ?
kurtn said:
There are many good custom Rom for s10e. Why do you want to start with one UI ?
Click to expand...
Click to collapse
due to some dysfunctions and design change, I will debloat one UI 4.1 and turn off google and samsung services in the back and make it like lineage os as much as possible, but the main services I use will be samsung applications. so i have a dream
kullanici32 said:
due to some dysfunctions and design change, I will debloat one UI 4.1 and turn off google and samsung services in the back and make it like lineage os as much as possible, but the main services I use will be samsung applications. so i have a dream
Click to expand...
Click to collapse
I've seen people doing similar things on android 12
Signature Spoofing on unsuported Android 11 (R) Roms
How to get Signature Spoofing working on Android 11 (R) Roms that have no support for Signature Spoofing? In my Case here I use a Samsung Galaxy S8 with an unofficial LineageOS 18.1 (Android 11) by stricted I use TWRP recovery but this should...
forum.xda-developers.com
kurtn said:
I've seen people doing similar things on android 12
Signature Spoofing on unsuported Android 11 (R) Roms
How to get Signature Spoofing working on Android 11 (R) Roms that have no support for Signature Spoofing? In my Case here I use a Samsung Galaxy S8 with an unofficial LineageOS 18.1 (Android 11) by stricted I use TWRP recovery but this should...
forum.xda-developers.com
Click to expand...
Click to collapse
because once you use samsung software, you can't quit. (of course debloated) I have used my phone without root until now, only by disabling system applications. now I'm trying to remove as much samsung/google as possible from the system or whatever services are unnecessary for me, I will do just like micro g for lineage os, the only difference is by using quality applications such as gallery phone application, because lineage os is very lousy.
Aqq123 said:
As of current LOS 19.1 builds (Nov 2022), you can just replace the single file: smali_classes2/com/android/server/pm/PackageManagerService$ComputerEngine.smali with the one attached to this post.
Note: this might not always hold in the future. You might even need to apply the patch manually if the source changes too much. Either approach works for now
Click to expand...
Click to collapse
How can I manually edit this file? because the attached file is 288kb and the one in samsung is 390kb.
so how do i open this file and where do i patch it?
kullanici32 said:
How can I manually edit this file? because the attached file is 288kb and the one in samsung is 390kb.
so how do i open this file and where do i patch it?
Click to expand...
Click to collapse
Of course. The patch is against current LOS 19.1, and this is the only situation where you can replace the whole .smali file instead of reapplying the patch. On other flavors of Android you'd have to redo the equivalent manually. In some cases it might even take a different patch altogether.
These are all text files. Just use any text editor, preferably with syntax highlighting, such as Notepad++. First look at services.diff. This is the code you want to add.
Now, in the APK you decompiled, look for where .method public final generatePackageInfo(Lcom/android/server/pm/PackageSetting;II)Landroid/content/pm/PackageInfo; is defined. The patch works by adding two private methods:
.method private static applyFakeSignature(Lcom/android/server/pm/parsing/pkg/AndroidPackage;Landroid/content/pm/PackageInfo;Ljava/util/SetLandroid/content/pm/PackageInfo;
.method private static getRequestedFakeSignature(Lcom/android/server/pm/parsing/pkg/AndroidPackageLjava/lang/String;
These can really be added anywhere but preferably within the same .smali file.
Finally, you change the code for generatePackageInfo(...) accordingly so that: (1) signature faking is added (OR-ed) to computed permissions for apps that have this permission granted, and the fake signature is returned where applicable instead of the actual one with applyFakeSignature(...).
Maybe it's easier to understand if you look at the original code, not the decompiled one: https://github.com/lineageos4microg..._patches/android_frameworks_base-S.patch#L128 This is why I linked to it in the top post.
Again, I don't know anything about Samsung One UI. The implementation might be different. So another approach would be to find a version of Samsung's services.jar patched for signature spoofing (possibly for an earlier version of Android) and decompile it to see how it's done there.
Aqq123 said:
Now, in the APK you decompiled, look for where .method public final generatePackageInfo(Lcom/android/server/pm/PackageSetting;II)Landroid/content/pm/PackageInfo; is defined.
Click to expand...
Click to collapse
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
.method private static applyFakeSignature(Lcom/android/server/pm/parsing/pkg/AndroidPackage;Landroid/content/pm/PackageInfo;Ljava/util/SetLandroid/content/pm/PackageInfo;
.method private static getRequestedFakeSignature(Lcom/android/server/pm/parsing/pkg/AndroidPackageLjava/lang/String;
I just write this code you say?
Or should I search for the code you provided in services.diff and copy the places marked in blue and copy the entire blue one into my original compiled file?
Aqq123 said:
Finally, you change the code for generatePackageInfo(...) accordingly so that: (1) signature faking is added (OR-ed) to computed permissions for apps that have this permission granted, and the fake signature is returned where applicable instead of the actual one with applyFakeSignature(...).
Click to expand...
Click to collapse
I hardly understand what you mean here.
i'm a bit of a novice
EDİT:
I added the blue parts after I found the red part, now I'll compile and test (I've probably missed something, but I'll have a look)
EDİT2:
generatePackageInfo
I searched for the code you said, but there were 3-4 (there was 1 that continued as L, and I deleted the one in this picture)
and i replaced it with this
I'll compile it now, probably won't, but...
This is the first time I've been in such a complicated business.
EDİT3: (FİXED EDİT 4 I went inside the extracted folder and solved this problem now it keeps compiling)
It gives such an error, why? (apktool2 command didn't work when extracting the file, it worked when I made apktool, ignore it) but now when recompiling it gives an error as in the picture.
EDİT5:
such an error???
EDİT6:
now that this did not happen, after extracting the jar file, I packed it again without making any changes, the original 30 mb file decreased to 20 mb and transferred to the device with mtp, then I copied it with root browser, the device system ui restarted and opened, the permissions were something like rw rw rw, maybe rw rw is Then I rebooted but the phone bootlooped. that is, if I decompile the original file and repackage it without doing anything else, it breaks down. :/
Aqq123 said:
I haven't seen this shared anywhere but it's really quite straightforward if you know what you're doing. Maybe it helps someone to post it here. The next section is only for completeness, feel free to skip past it to get to the gist of it.
Background
Android by design depends for full functionality on Google services. These are normally provided by a proprietary application package com.google.android.gms. MicroG is an open-source replacement for Google services, allowing the user to take advantage of working notifications, location backends, installer, and other essential services, without compromising privacy and giving Google a backdoor to your device.
To operate properly, MicroG needs the ability to pretend it is the actual Google services application package, signed by Google. Hence the need for signature spoofing.
Official LineageOS builds do not include the ability to spoof signatures. Thus, using LineageOS with MicroG takes extra steps such as building patched LineageOS locally (a resource-consuming endeavor), or taking advantage of the LineageOS for MicroG builds helpfully provided in collaboration with the MicroG team (which however, due to resource constraints, are updated less often and lag behind the official builds).
A third solution is to patch an already-built system at installation time. This was initially implemented with Needle by souramoo, forked and improved upon as Tingle by @ale5000, which eventually inspired a wholly different approach with DexPatcher by @Lanchon, a tool allowing flexible patching of Dalvik executables, in particular services.jar, where signature spoofing is commonly implemented. Relevant patches for DexPatcher were authored by Lanchon himself up to Android 9. Later on, @oF2pks picked up the work to provide patches for Android 11.
Unfortunately, no such patch to be used with DexPatcher has existed from Android 12 onwards. One other option includes installing the FakeGApps Xposed module as forked and updated by whiz-inc. While it's great it exists, and the author's work should be appreciated, it's a complication and an unnecessary burden in many scenarios to depend on Xposed (and thus Magisk and LSPosed or the like) as a prerequisite for the patch to work. It's also worth it to be aware that the implementation makes it less secure than the traditional signature spoofing method.
The DexPatcher approach has several advantages. The patch can be more flexible and continues to apply as the underlying code changes. In comparison, the simple approach presented here is much more primitive and might require readjustment as new versions emerge over time. However it might still be good to know it works.
This way you can use the latest official LineageOS with MicroG, and update at will, as soon as new builds become available.
Patching
This is not a walkthrough, and I'm not going to explain everything step-by-step. Rather, the purpose is to give you the general idea what to do, which you can then adjust to your specific use case.
Obtain the file services.jarto patch. For example:
Pull it from your device: adb pull /system/framework/services.jar – or –
Extract it from a LineageOS image: payload-dumper-go -p system payload.bin and imgextractor system.img
Extract the file with APK Tool: apktool2 d -o services services.jar
Make the changes that allow signature spoofing. Either:
Apply the patch attached to this post: patch -i services.diff -p0 – or –
As of current LOS 19.1 builds (Nov 2022), you can just replace the single file: smali_classes2/com/android/server/pm/PackageManagerService$ComputerEngine.smali with the one attached to this post.
Note: this might not always hold in the future. You might even need to apply the patch manually if the source changes too much. Either approach works for now.
Recompile the modified framework: apktool2 b -c -f -o services.jar services
Note: This will overwrite the original services.jar. The -c flag to APK Tool is important as it keeps all the original META-INF inside it intact.
Copy services.jar over to the device: adb push services.jar /system/framework/ and you probably also have to adjust the permissions accordingly
This approach should work for any Android version in principle, although the exact patch might differ. However, since better options exist for Android 11 and below, you are probably interested in applying this to Android 12 or higher only.
One More Thing
For Android 12, an extra step is critical to ensure no bootloop on subsequent boot (2nd and then on), since oat_file_manager.cc now includes a check if OAT (.odex/.vdex) files are loaded from "trusted" locations only (effectively, the /system partition). You have to generate the optimization files and place them in the correct location, which is /system/framework/oat/arm64/:
dex2oat --dex-file=/system/framework/services.jar --instruction-set=arm64 --oat-file=/system/framework/oat/arm64/services.odex
The .vdex file will be created as well (these files already exist but should be overwritten, check the timestamps or you might want to delete them beforehand just to be sure). If you skip this step, the device will boot the 1st time but then the optimization files will be generated and saved in /data/dalvik-cache/. On any subsequent boot, an attempt to load these files from an "untrusted" location by the system will throw a fatal error and the Zygote process will die with the message: "Executing untrusted code from [...]". If you somehow find yourself in this predicament, delete the following files and reboot to temporarily make it work one more time:
/data/dalvik-cache/arm64/s[email protected][email protected]@classes.dex
/data/dalvik-cache/arm64/[email protected][email protected]@classes.vdex
Further Steps
These are not all the required steps to install MicroG on an official LineageOS installation. You still want to, in particular:
Install at least the main MicroG app (GmsCore) and a dummy signature spoofing APK (also attached to this post) as priv-apps
Set up the priv-app permissions accordingly – otherwise you'll get a bootloop
Likely also install FakeStore, Aurora Store/F-Droid, and location backends of your choice, etc.
However: this is a simple solution to perhaps the most cumbersome aspect of signature spoofing. It's not necessary to resort to Xposed modules to get it working on Android 12, or to depend on a special build with the spoofing patched in at compilation time.
Credit: The patch .smali code has been reverse-engineered from the spoofing patch for LineageOS for MicroG builds.
Click to expand...
Click to collapse
I followed your steps for my OnePlus 8T on Lineage 19.1 and the signature spoofing app says disabled. When recompiling the system.jar with the new file copy and pasted in classes 2 the new system.jar is smaller than the original. Perhaps there is the issue with spoofing. Any information on this matter is much appreciated. Thank you for a great post btw.
Below is the attachment recompiled, perhaps some one else maybe interested in giving it a try or to just examine and find where the error may exist or to conclude it's my own error in recompiling.
JedidroidX said:
I followed your steps for my OnePlus 8T on Lineage 19.1 and the signature spoofing app says disabled. When recompiling the system.jar with the new file copy and pasted in classes 2 the new system.jar is smaller than the original. Perhaps there is the issue with spoofing. Any information on this matter is much appreciated. Thank you for a great post btw.
Below is the attachment recompiled, perhaps some one else maybe interested in giving it a try or to just examine and find where the error may exist or to conclude it's my own error in recompiling.
Click to expand...
Click to collapse
Don't use signature spoofing app. The only relevant measure of success is microG self-check. Use an installer to make microG a system app.
JedidroidX said:
I followed your steps for my OnePlus 8T on Lineage 19.1 and the signature spoofing app says disabled. When recompiling the system.jar with the new file copy and pasted in classes 2 the new system.jar is smaller than the original. Perhaps there is the issue with spoofing. Any information on this matter is much appreciated. Thank you for a great post btw.
Below is the attachment recompiled, perhaps some one else maybe interested in giving it a try or to just examine and find where the error may exist or to conclude it's my own error in recompiling.
Click to expand...
Click to collapse
I don't see any attachment (seems you edited your post) but I guess you recompiled it fine. If you didn't, the device would have ended up in a bootloop (Zygote process wouldn't start), so you'd definitely know. It should be services.jar though, not * system.jar, so maybe you didn't install it properly? Smaller file size is expected, since the repackaged version uses stronger compression as a ZIP file, so nothing to worry about. Again, if there's any problem with the modified services.jar, the device wouldn't get past the boot animation.
I'm not sure what you mean exactly by "signature spoofing app says disabled." It's not an actual app: it doesn't have any code, and won't show up in Launcher. Its only purpose is to add this permission. That being said, if you go into: Settings → Apps → See all ... apps → ⋮ → Show system → Signature Spoofing, there should be a button saying Disable (meaning it's enabled now), and not Enable (which would mean it were disabled at the time). Also, if you go further from that screen into Permissions → Additional permissions → Signature spoofing it should say Allow for this app, and when you click See all apps with this permission, it should show microG Services Core there as Allowed. If you set it up well this is all done automatically with the configuration files, you shouldn't have to go through the settings to change anything via the UI.
As I wrote in the original post, additional steps are required to fully set up MicroG, which is really outside the scope of this thread. These are, for the most part, the same steps as if you were using oF2pks's patch for Android 11 with Lanchon's DexPatcher except more recently you also have to add android.permission.MANAGE_USB to com.gooogle.android.gms (that is, MicroG Services Core) privapp-permissions, or you'll end up with a bootloop for a wholly different reason.
This topic is vast, and there are multiple ways to do it. Note that these should be installed as system apps, some of them as priv-apps, so there are many things that can go wrong. If you don't grant a priv-app all the required permissions through the configuration, now (as of Android 9 I think) you'll get a bootloop. For system apps, you also have to extract libraries (if any) from APKs and place them separately on the filesystem, and make sure you get the details right for the architecture: if you don't, you get... guess what (a bootloop). It's good to have a script automating all this: I have my own flashable ZIP specific to my needs but there are other more general solutions. Or, if you want to learn how to do this manually, one way would be to compare a vanilla LineageOS image with LineageOS for MicroG for the same device around the same build date and see what they are doing extra. On Windows you can use WinMerge to compare files and entire directory structures easily. But again, this is really outside the scope of this thread, which is about patching services.jar for signature spoofing support. No matter how you implement signature spoofing, you still have to figure out those other steps separately.
kurtn said:
Don't use signature spoofing app.
Click to expand...
Click to collapse
Actually, with this approach, Signature Spoofing app has to be used. This is to keep the patch as lean as possible (since it's easier to install a separate app rather than keep maintaining a more complicated patch).
It's not needed with LineageOS for MicroG, where it's already incorporated into the system (lines 1-82 in the patch): https://github.com/lineageos4microg...atches/android_frameworks_base-S.patch#L1-L82
Aqq123 said:
I don't see any attachment (seems you edited your post) but I guess you recompiled it fine. If you didn't, the device would have ended up in a bootloop (Zygote process wouldn't start), so you'd definitely know. It should be services.jar though, not * system.jar, so maybe you didn't install it properly? Smaller file size is expected, since the repackaged version uses stronger compression as a ZIP file, so nothing to worry about. Again, if there's any problem with the modified services.jar, the device wouldn't get past the boot animation.
I'm not sure what you mean exactly by "signature spoofing app says disabled." It's not an actual app: it doesn't have any code, and won't show up in Launcher. Its only purpose is to add this permission. That being said, if you go into: Settings → Apps → See all ... apps → ⋮ → Show system → Signature Spoofing, there should be a button saying Disable (meaning it's enabled now), and not Enable (which would mean it were disabled at the time). Also, if you go further from that screen into Permissions → Additional permissions → Signature spoofing it should say Allow for this app, and when you click See all apps with this permission, it should show microG Services Core there as Allowed. If you set it up well this is all done automatically with the configuration files, you shouldn't have to go through the settings to change anything via the UI.
As I wrote in the original post, additional steps are required to fully set up MicroG, which is really outside the scope of this thread. These are, for the most part, the same steps as if you were using oF2pks's patch for Android 11 with Lanchon's DexPatcher except more recently you also have to add android.permission.MANAGE_USB to com.gooogle.android.gms (that is, MicroG Services Core) privapp-permissions, or you'll end up with a bootloop for a wholly different reason.
This topic is vast, and there are multiple ways to do it. Note that these should be installed as system apps, some of them as priv-apps, so there are many things that can go wrong. If you don't grant a priv-app all the required permissions through the configuration, now (as of Android 9 I think) you'll get a bootloop. For system apps, you also have to extract libraries (if any) from APKs and place them separately on the filesystem, and make sure you get the details right for the architecture: if you don't, you get... guess what (a bootloop). It's good to have a script automating all this: I have my own flashable ZIP specific to my needs but there are other more general solutions. Or, if you want to learn how to do this manually, one way would be to compare a vanilla LineageOS image with LineageOS for MicroG for the same device around the same build date and see what they are doing extra. On Windows you can use WinMerge to compare files and entire directory structures easily. But again, this is really outside the scope of this thread, which is about patching services.jar for signature spoofing support. No matter how you implement signature spoofing, you still have to figure out those other steps separately.
Click to expand...
Click to collapse
Yes sir, I meant the services.jar, silly me I was writing in a rush. Sorry about that confusion.
I will try again and post the result. I guess I will use the same services.jar, however the issue with optimization. I did reboot several times after flashing a cache optimization module for magisk after I adb the services.jar because I'm not familiar on how to do the optimization manually.
The optimization module did lead to magisk not loading the modules and only booted successfully due to magisk bootloop protector module.
Also to adjust permissions to 644 I presume is already in the recompiled services.jar? As I could not view what permission with mixplorer that it had.
Btw, the signature spoofing app is an app I downloaded from f- droid that just displays the signature spoofing status, if disabled or enabled and it says disabled. Again sorry about the confusing and thank you again for your great feedback.
Hi,
would like to try on AOSP 12 GSI, installed over stock OOS10 On Nord (avicii).
@Aqq123 Do you think i can make it ? Any suggestion before starting ?
What about if i get service.jar from a GSI AOSP with google apps ? Maybe signature spoofing is altredy implemented there ?
kidronvalley said:
Hi,
would like to try on AOSP 12 GSI, installed over stock OOS10 On Nord (avicii).
@Aqq123 Do you think i can make it ? Any suggestion before starting ?
What about if i get service.jar from a GSI AOSP with google apps ? Maybe signature spoofing is altredy implemented there ?
Click to expand...
Click to collapse
Most gsi have signature spoofing feature.
Hi @kurtn
thanks,
heh, this AOSP 12 vanilla from PHH treble seems not, at least, microg is not detecting it, and one specific banking app is failing to work.
EDITED: I solved all installing PHH trebvle A12 "floss" that has signature spoofing up and running.
hi, @Aqq123 i applied the guide you wrote for lineage os 19.1 s10e (or so I think),
your attached:
I opened the PackageManagerService$ComputerEngine.smali file with notepad++,
.method private static applyFakeSignature(Lcom/android/server/pm/parsing/pkg/AndroidPackage;Landroid/content/pm/PackageInfo;Ljava/util/SetLandroid/content/pm/PackageInfo;
.method private static getRequestedFakeSignature(Lcom/android/server/pm/parsing/pkg/AndroidPackageLjava/lang/String;
I copied the code to where it says .end method and pasted it anywhere in my services.jar.
I deleted the next text where it says generatePackageInfo( and added the code that says applyFakeSignature( after it), and saved it and repackaged it as you said above.
I put it in the phone's memory and gave rw r r permissions in the system fremework with root explorer and restarted it. but the system went into bootloop.
I did a lineage os install from scratch after failing here.
I copied the PackageManagerService$ComputerEngine.smali file you provided,
I deleted the original PackageManagerService$ComputerEngine.sma in services.jar.
I pasted yours and repackaged it with the packaging code you wrote above (only apktool2 does not work for me, it works as apktool, does that cause the problem?) and I added the system to fremework and restarted the device once the device turned on but micro g and spoofing checker apk shows signature patch not applied .
and on the 2nd reboot, it naturally enters the bootloop as you said.
i didn't understand how to implement the following path, if i did that it wouldn't go into bootloop.
QUOTE: You have to generate the optimization files and place them in the correct location, which is /system/framework/oat/arm64/:
dex2oat --dex-file=/system/framework/services.jar --instruction-set=arm64 --oat-file=/system/framework/oat/arm64/services.odex
now i have 3 questions:
1. why did my patch to original smali fail (bootloop even on first boot)?
2. Why isn't the smali file you provided spoofing?
3. The file you gave does not bootloop the 1st time, but it does it for the 2nd time. What should I do to fully understand the above fix code?
ahmadmahmood2048 said:
hi, @Aqq123 i applied the guide you wrote for lineage os 19.1 s10e (or so I think),
your attached:
I opened the PackageManagerService$ComputerEngine.smali file with notepad++,
.method private static applyFakeSignature(Lcom/android/server/pm/parsing/pkg/AndroidPackage;Landroid/content/pm/PackageInfo;Ljava/util/SetLandroid/content/pm/PackageInfo;
.method private static getRequestedFakeSignature(Lcom/android/server/pm/parsing/pkg/AndroidPackageLjava/lang/String;
I copied the code to where it says .end method and pasted it anywhere in my services.jar.
I deleted the next text where it says generatePackageInfo( and added the code that says applyFakeSignature( after it), and saved it and repackaged it as you said above.
I put it in the phone's memory and gave rw r r permissions in the system fremework with root explorer and restarted it. but the system went into bootloop.
I did a lineage os install from scratch after failing here.
I copied the PackageManagerService$ComputerEngine.smali file you provided,
I deleted the original PackageManagerService$ComputerEngine.sma in services.jar.
I pasted yours and repackaged it with the packaging code you wrote above (only apktool2 does not work for me, it works as apktool, does that cause the problem?) and I added the system to fremework and restarted the device once the device turned on but micro g and spoofing checker apk shows signature patch not applied .
and on the 2nd reboot, it naturally enters the bootloop as you said.
i didn't understand how to implement the following path, if i did that it wouldn't go into bootloop.
QUOTE: You have to generate the optimization files and place them in the correct location, which is /system/framework/oat/arm64/:
dex2oat --dex-file=/system/framework/services.jar --instruction-set=arm64 --oat-file=/system/framework/oat/arm64/services.odex
now i have 3 questions:
1. why did my patch to original smali fail (bootloop even on first boot)?
2. Why isn't the smali file you provided spoofing?
3. The file you gave does not bootloop the 1st time, but it does it for the 2nd time. What should I do to fully understand the above fix code?
Click to expand...
Click to collapse
Use lineage.microg.org

Categories

Resources