[Android Software/Hacking General [Developers Only]] jcfunk:
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 :cool:

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... :p) 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 :cool:

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 :p 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 :p

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!

:D)

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:

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 :D

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 :D

========================================================

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 -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 :cool:

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 :p (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 :D

======================

.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;"

.end local v15 #cr:Lcom/android/server/am/ConnectionRecord;

.end local v17 #i:I

.end local v22 #kt:Ljava/util/Iterator;,"Ljava/util/Iterator;"

.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.Now copy /sdcard/services.odex to /system/framework and overwrite the original (backed up, yes?) services.odex

Go to

Step 9

:D

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 :p

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!

;;!!!!!;`