How to enable on screen ics soft keys on any ics rom?

Standard

So guys i know many of you are there who just got into love with the new Android 4.0 Ice Cream Sandwich….Hmm many of you were addicted to the on screen ics keys or the soft keys as seen on nexus prime…well they were removed on the existing phones due to presence of physical buttons.

So i know many of you would like it back. Firstly a big thanks to evilisto for the tutorial..Well i decided to re write the tutorial cuz the orginal thread was really very tough for noobs….so i decided to make it more simpler…Well IT DOES NOT WORK ON STOCK OR WITH ANY ROM WITH TW LAUNCHER….OR STOCK ROMS LIKE THE HTC SENSE

So lets get started:

Requirements:

2: Apk tool package (press ctrl+s if no download link)
3: Android phone with ics custom rom(duh!)
4: Java SE run time environment

The Pulling Process:

So first comes the part where you need to extract the framework-res.apk file from your phone. So firstly on your phone go to settings–>developer options–>and then tick the usb debugging box….

Open up cmd and navigate to the android sdk\platform-tools directory.Type in

adb devices

adb pull system/framework/framework-res.apk

When you type in the first command and if you see the number of devices to blank or 0, re install the phone’s usb drivers or you have not enabled usb debugging.

The Decompilation Process-:

So now comes the part where we decompile the framwork-res.apk file. So for this download and extract the apktool package(mentioned in requirements) in a folder. Open up cmd again and navigate to this folder.

Type in

apktool d framework-res.apk


There should be no errors in this process, if any then you don’t have administrator privileges or you don’t have java runtime environment installed.

Redo the steps and you will be good to go.

The Editing Process: 

 So now comes the editing part. Download and install your favorite hex editor (notepad++ recommended), you may use notepad but it may cause problems..navigate to the newly created framework folder in the same directory of the apktool and open res\values\bools.xml.
Open it with notepad++ and find config_showNavigationBar. It will be set to false, set it to true.
Now open dimens.xml in the same directory and find navigation_bar_height. It will be set to 48 or any other value according to your phone, set it to 34, i recommend using 37 for bigger screen phones like the galaxy note and SGS2.
Save and exit.

 The Recompilation-:

So now the comes the most important part the re compilation part. Well many can receive errors in this part..even i did but just leave your queries in the comments, i will fix them. So again open up cmd as admin and navigate to the extracted folder.

In cmd type in:


apktool b framework

Its not at all over yet…in the framework folder, open build\apk and delete AndroidManifest.xml….leave the other two files intact.
Now open framework-res.apk in the dist folder using 7 zip. Now drag and drop resources.arsc and res folder from the build/apk folder  to the opened .apk file.
Now copy it to your sd card and replace it  with root explorer and reboot. Enjoy….

Note:::!!!!!!!!!!

If you guys are having problem with the recompilation you can follow the tutorial for it over here. It is easier and more efficient….

105 thoughts on “How to enable on screen ics soft keys on any ics rom?

  1. Buck147

    I am getting errors when I recompile…

    Microsoft Windows [Version 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation. All rights reserved.

    C:\Users\Kyle>cd desktop

    C:\Users\Kyle\Desktop>cd new folder

    C:\Users\Kyle\Desktop\New folder>apktool d framework-res.apk
    I: Loading resource table…
    I: Loaded.
    I: Decoding file-resources…
    I: Decoding values*/* XMLs…
    I: Done.
    I: Copying assets and libs…

    C:\Users\Kyle\Desktop\New folder>apktool b framework
    Exception in thread “main” brut.androlib.AndrolibException: brut.directory.Direc
    toryException: java.io.FileNotFoundException: framework (The system cannot find
    the file specified)
    at brut.androlib.Androlib.readMetaFile(Androlib.java:142)
    at brut.androlib.Androlib.build(Androlib.java:159)
    at brut.androlib.Androlib.build(Androlib.java:154)
    at brut.apktool.Main.cmdBuild(Main.java:182)
    at brut.apktool.Main.main(Main.java:67)
    Caused by: brut.directory.DirectoryException: java.io.FileNotFoundException: fra
    mework (The system cannot find the file specified)
    at brut.directory.ZipRODirectory.(ZipRODirectory.java:55)
    at brut.directory.ZipRODirectory.(ZipRODirectory.java:38)
    at brut.androlib.res.util.ExtFile.getDirectory(ExtFile.java:55)
    at brut.androlib.Androlib.readMetaFile(Androlib.java:138)
    … 4 more
    Caused by: java.io.FileNotFoundException: framework (The system cannot find the
    file specified)
    at java.util.zip.ZipFile.open(Native Method)
    at java.util.zip.ZipFile.(Unknown Source)
    at java.util.zip.ZipFile.(Unknown Source)
    at brut.directory.ZipRODirectory.(ZipRODirectory.java:53)
    … 7 more

    C:\Users\Kyle\Desktop\New folder>

  2. Buck147

    I’m using Evervolv 4.0.4. It’s okay though, I don’t need soft keys working but it would be cool. I’m soon buying a Galaxy Nexus but thanks anyway!

  3. er1k

    You wrote “apktool b framework”, it should be “apktool b framework-res”, that’s why they all get an error.
    greets

    • In dimens.xml decrease the value of navigation_bar_height just a little bit (by two or three).

      You could also try the app lcd density changer if you don’t want to compile again and again but still method 1(above method) is recommended.

      If still doesn’t work then let me know.

      • Michael Shoom

        I’ve tried to change the lcd density in build.prop. After that I couldn’t update the application in Play Market. And instead of 53 apps set to 20 apps. Others do not support the resolution of screen.
        And the problem about which I wrote above, remains.
        I’ll try to continue to change the values. The results will tell.
        Thank you for your help.
        P.S. If this is important, my phone is Huawei Honor (u8860).

  4. Michael Shoom

    A variation of this parameter “navigation_bar_width”>42.0dip” will not be able to solve the problem?

  5. skeleton

    Hi any chance of making a zip for Xperia play r800i cm9 rc1, sorry for being cheeky but am anoob when it comes to this stuff & would really love the soft keys. Thanks in advance & no probs if its a no 🙂

    • I also got compiling errors on your framework-res.apk but i modified the systemui.apk and it worked but had some issues…here they are

      1. The lockscreen becomes extra large and the locking mechanism is displayed slightly off screen. (you can still use it but it is very difficult to get the lock to catch)
      2. the settings menu looks different, some of the text is not formatted correctly.
      3. the keyboard overlaps slightly. (it is still usable but you might hit a soft button occasionally when going for the space bar)
      4. this appears to take away the additional items on the reboot menu.
      5. more of a downside than an actual bug and its likely implied but this takes up an extra little bit of your screen.
      6. It made me re-sign in to google I cant say this will happen to everyone.
      7. probably quite a few more bugs I haven’t found yet.

      Link—

      https://docs.google.com/open?id=0Bx7xmGB4IFU7T0VtWWJ6SHFOU2c

  6. Lannig

    Thanks for your nice tutorial. I have a cheap chinese 7″ ICS tablet and in the default 120dpi mode everything is way too small for my eyes. I’ve tweaked DPI to higher values but anything above 160 switches ICS to phone mode hence without on-screen buttons. I would very much like to get them back.
    I’m a bit confused by your statement “IT DOES NOT WORK ON STOCK OR WITH ANY ROM WITH TW LAUNCHER”. How do you define “stock ROM” precisely please? Does this mean any ROM built straight from ICS sources? (which I strongly suspect is the case of mine). Please reply, thanks in advance.

    • I got your point mate…will update the post as soon as possible.
      I meant that on screen ics keys will only work on non themed roms which means the roms that don’t have pre-installed UI such as “htc sense” or “touchwiz”.Those roms are known as stock roms..there are other roms too that are unthemed and “still are stock”. (ics keys will work with those type)
      A rom directly compiled from sources has no theme and hence ics keys will work on them

      In your case it is an unthemed rom (all the Chinese tabs have unthemed ones). So ics keys should work on them.

  7. AmbushReality

    Getting an error while trying to compile framework-res from a ZTE Crescent. Heres the error:
    Exception in thread “main” brut.androlib.AndrolibException: brut.directory.DirectoryException: java.util.zip.ZipException: error in opening zip file
    at brut.androlib.Androlib.readMetaFile(Androlib.java:142)
    at brut.androlib.Androlib.build(Androlib.java:159)
    at brut.androlib.Androlib.build(Androlib.java:154)
    at brut.apktool.Main.cmdBuild(Main.java:182)
    at brut.apktool.Main.main(Main.java:67)
    Caused by: brut.directory.DirectoryException: java.util.zip.ZipException: error in opening zip file
    at brut.directory.ZipRODirectory.(ZipRODirectory.java:55)
    at brut.directory.ZipRODirectory.(ZipRODirectory.java:38)
    at brut.androlib.res.util.ExtFile.getDirectory(ExtFile.java:55)
    at brut.androlib.Androlib.readMetaFile(Androlib.java:138)
    … 4 more
    Caused by: java.util.zip.ZipException: error in opening zip file
    at java.util.zip.ZipFile.open(Native Method)
    at java.util.zip.ZipFile.(ZipFile.java:131)
    at java.util.zip.ZipFile.(ZipFile.java:148)
    at brut.directory.ZipRODirectory.(ZipRODirectory.java:53)
    … 7 more

  8. Rohan excellent post and thanks for enabling me for configuring soft keys.My touch key (galaxy S plus) are intermittently working after moving to custom ROM. (EHNDROIXI9001_12.09.26 CM9). Do you know how to fix the hard touch key (option and back not working) I checked the phone touchkey firmware version showing as 0xc1 and part touchkey firmware version showing as 0x0….I tried to update (w/o internet connection )but the screen goes black and nothing happens.Do you have any suggestion on this

    • Mate i think you should take your phone to the samsung service center…you phone is already ,messed up, don’t want to mess it up more by giving you unkown suggestion as i do not exactly know what the problem is.

  9. saeid

    everything is going well till when i want to build the framework-res.
    i even tried to build fresh files without editting whit notepad++ but it dosent pack it neither!!!
    any hint?!

    • Rohan Lokesh Sharma

      i dont think the rom supports it… i got error too even after editing systemui.apk

      Its better you use the hardware buttons..X10 mini pro already has a small screen size and with on screen keys i would be more smaller.

      My advice use it as it is….or maybe install Jellybean if possible..cuz jellybean has easier way to get on screen keys

  10. Indrakumar

    Thanks Rohan, Recently I got problem in hardware buttons, this soft keys helped lot. I am to compile and install. It works great. How to get the search soft key ?

    • Unfortunately you cannot get the search button on the soft keys as long as your rom does not support it.
      In simple words if you don’t have a search button on your device, you cannot add the search button to the soft key area as well.

      • Ram Suresh

        Sorry, i have no knowledge to decombile. actually I am a Mechanical Engineer, not a IT guy. doing some little hacks from roms found in web. I used Gionee Gn868 (Micromax A90) Rom in my Dapeng A9230+ , because of ICS bottom bar. I simply replaced the boot.img in A90 Rom with my mobile boot.img and worked well.
        But that framework didn’t work in other ICS roms for my mobile.
        Thanks for your help.

Leave a reply to Adriano Brito Cancel reply