[APP][JB][XPOSED] GravityBox v3.7.2 - tweak box for Android 4.1/4.2/4.3 [30/04/2017]

Search This thread

andoird213

Senior Member
Nov 19, 2012
68
21
Just tried out GravityBox for the first time on my Nexus 5... Awesome job! All the features I've missed from CM and/or AOKP are included here and are working just as well.

Only 2 gripes I've got right now is 1) Can't change the color of the enabled states of Quick Settings, so they aren't uniform with the standard KitKat Tiles 2) Some of the drawables are REALLY low res, and are especially noticeable on the N5 (e.g. Quick Settings images, Expand Volume Panel button, Reboot Menu icon are all really really blurry).

Other than that, keep up the great work!

Sent from my Nexus 5 using Tapatalk
 
D

Deleted member 1046746

Guest
@C3C076

I'm trying your module, it's awesome! I've found two little "problems" (screenshot for more details):

1. Usage RAM and "Close All" button are not displayed correctly
2. There isn't Geolocation in QuickSettings (also in reorder section)

Thanks for your amazing work!

EDIT: I'm on Nexus 5 with stock odex KitKat
 

C3C076

Inactive Recognized Contributor
Dec 15, 2012
7,749
24,732
Bratislava
ceco.sk.eu.org
http://xdaforums.com/showthread.php?p=47791616

Regarding geo thing. It's not there simply because it's not in jellybean.
No special kk features have been added into GB, yet. Only adaptations to make it work so people can start having some initial fun with it (kk support still has experimental status)

Edit: also, GB does not support dynamic tiles. Only standard ones.
 

Jerber

Senior Member
Jun 6, 2013
217
48
Quick update rolling out

Changelog 2.7.4 - 24/11/2013

- New GravityBox icon (thanks to Jerber)

Happy to see the new GB icon become stock :D!

That's right. GB misses quite a bunch of xxhdpi res icons. Something that is going to be addressed. The question is only if I will be able to get them from some custom ROMs as I am not skilled enough to draw them myself.

Well, maybe I can help you with that, I can find those icons, or make them, including the new "GB gear icon" (for the quicksettings panel) that is already included in the new GB icon.
 
  • Like
Reactions: Aleq

rodalpho

Senior Member
Sep 17, 2013
61
17
Nexus7 FLO on 4.4.

I understand that it can't change the Kitkat battery, but under Statusbar Tweaks, Battery Percent Text (which just puts like 78% next to the battery) does not function. I did try a cold reboot.

Edit: Actually it does change the kitkat battery just fine, it's only the Battery Percent Text that doesn't work!
 
Last edited:

andoird213

Senior Member
Nov 19, 2012
68
21
That's right. GB misses quite a bunch of xxhdpi res icons. Something that is going to be addressed. The question is only if I will be able to get them from some custom ROMs as I am not skilled enough to draw them myself.

Why not just take the icons you've got, and put them in the Android Asset Studio? That's what I do for my apps man; as soon as the base icon is given to me by the designer, I pop it right in there haha

Sent from my Nexus 5 using Tapatalk
 

Futura2000

Senior Member
Dec 7, 2010
256
62
C3C076 is it possible for you to implement a hardware key action like your long press to kill a app to make the notification bar drop down instead of swiping down as the top part of my screen is cracked and im unable to swipe the notification bar anymore.


Sent from my C6603 using xda app-developers app
 

piccit

Senior Member
Dec 16, 2011
384
109
Here's a log with a few things that throw errors with 4.4.

The rotation locked title was the only one that I actually noticed (tile just doesn't show up). The wifi group error is repeated in the log about 200 times -- I'm not sure if that's related to me toggling status bar colors on and off a few times.

Running 4.4 on a Moto X


Excerpt from log:
Nov 24, 2013 3:52:55 PM UTC
Loading Xposed v40 (for Zygote)...
Loading modules from /data/app/com.ceco.gm2.gravitybox-1.apk
Loading class com.ceco.gm2.gravitybox.GravityBox
GB: Hardware: qcom
GB: Product: ghost_verizon
GB: Device manufacturer: motorola
GB: Device brand: motorola
GB: Device model: XT1060
GB: Device type: phone
GB: Is MTK device: false
GB: Is Xperia device: false
GB: Has telephony support: true
GB: Has Gemini support: false
GB: Android SDK: 19
GB: Android Release: 4.4
GB: ROM: 13.11.1Q2.X-69-3


java.lang.NoSuchMethodError: com.android.internal.telephony.gsm.GsmServiceStateTracker#isRoamingBetweenOperators(boolean,android.telephony.ServiceState)#exact
at de.robv.android.xposed.XposedHelpers.findMethodExact(XposedHelpers.java:188)
at de.robv.android.xposed.XposedHelpers.findMethodExact(XposedHelpers.java:135)
at de.robv.android.xposed.XposedHelpers.findAndHookMethod(XposedHelpers.java:147)
at com.ceco.gm2.gravitybox.ModPhone.initZygote(ModPhone.java:151)
at com.ceco.gm2.gravitybox.GravityBox.initZygote(GravityBox.java:91)
at de.robv.android.xposed.XposedBridge.loadModule(XposedBridge.java:364)
at de.robv.android.xposed.XposedBridge.loadModules(XposedBridge.java:317)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:114)
at dalvik.system.NativeStart.main(Native Method)


java.lang.NoSuchMethodError: com.android.systemui.statusbar.phone.QuickSettingsModel#addRotationLockTile(com.android.systemui.statusbar.phone.QuickSettingsTileView,com.android.systemui.statusbar.phone.QuickSettingsModel.RefreshCallback)#exact
at de.robv.android.xposed.XposedHelpers.findMethodExact(XposedHelpers.java:188)
at de.robv.android.xposed.XposedHelpers.findMethodExact(XposedHelpers.java:135)
at de.robv.android.xposed.XposedHelpers.findAndHookMethod(XposedHelpers.java:147)
at com.ceco.gm2.gravitybox.ModQuickSettings.tagAospTileViews(ModQuickSettings.java:958)
at com.ceco.gm2.gravitybox.ModQuickSettings.init(ModQuickSettings.java:449)
at com.ceco.gm2.gravitybox.GravityBox.handleLoadPackage(GravityBox.java:203)
at de.robv.android.xposed.IXposedHookLoadPackage$Wrapper.handleLoadPackage(IXposedHookLoadPackage.java:20)
at de.robv.android.xposed.callbacks.XC_LoadPackage.call(XC_LoadPackage.java:34)
at de.robv.android.xposed.callbacks.XCallback.callAll(XCallback.java:71)
at de.robv.android.xposed.XposedBridge$4.afterHookedMethod(XposedBridge.java:246)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:561)
at android.app.LoadedApk.<init>(Native Method)
at android.app.ActivityThread.getPackageInfo(ActivityThread.java:1862)
at android.app.ActivityThread.getPackageInfoNoCheck(ActivityThread.java:1830)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2556)
at android.app.ActivityThread.access$1700(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1493)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5083)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:126)
at dalvik.system.NativeStart.main(Native Method)


java.lang.NoSuchMethodError: com.android.systemui.statusbar.phone.PhoneStatusBar#setStatusBarLowProfile(boolean)#exact
at de.robv.android.xposed.XposedHelpers.findMethodExact(XposedHelpers.java:188)
at de.robv.android.xposed.XposedHelpers.findMethodExact(XposedHelpers.java:135)
at de.robv.android.xposed.XposedHelpers.findAndHookMethod(XposedHelpers.java:147)
at com.ceco.gm2.gravitybox.ModStatusbarColor.init(ModStatusbarColor.java:520)
at com.ceco.gm2.gravitybox.GravityBox.handleLoadPackage(GravityBox.java:207)
at de.robv.android.xposed.IXposedHookLoadPackage$Wrapper.handleLoadPackage(IXposedHookLoadPackage.java:20)
at de.robv.android.xposed.callbacks.XC_LoadPackage.call(XC_LoadPackage.java:34)
at de.robv.android.xposed.callbacks.XCallback.callAll(XCallback.java:71)
at de.robv.android.xposed.XposedBridge$4.afterHookedMethod(XposedBridge.java:246)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:561)
at android.app.LoadedApk.<init>(Native Method)
at android.app.ActivityThread.getPackageInfo(ActivityThread.java:1862)
at android.app.ActivityThread.getPackageInfoNoCheck(ActivityThread.java:1830)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2556)
at android.app.ActivityThread.access$1700(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1493)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5083)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:126)
at dalvik.system.NativeStart.main(Native Method)


java.lang.NoSuchFieldError: com.android.systemui.statusbar.policy.BatteryController#mContext
at de.robv.android.xposed.XposedHelpers.findField(XposedHelpers.java:80)
at de.robv.android.xposed.XposedHelpers.getObjectField(XposedHelpers.java:561)
at com.ceco.gm2.gravitybox.ModBatteryStyle$5.afterHookedMethod(ModBatteryStyle.java:250)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:561)
at com.android.systemui.statusbar.policy.BatteryController.<init>(Native Method)
at com.android.systemui.statusbar.phone.PhoneStatusBar.makeStatusBarView(PhoneStatusBar.java:1188)
at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:547)
at com.android.systemui.statusbar.phone.PhoneStatusBar.makeStatusBarView(Native Method)
at com.android.systemui.statusbar.phone.PhoneStatusBar.addStatusBarWindow(PhoneStatusBar.java:3897)
at com.android.systemui.statusbar.phone.PhoneStatusBar.createAndAddWindows(PhoneStatusBar.java:3871)
at com.android.systemui.statusbar.BaseStatusBar.start(BaseStatusBar.java:255)
at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:547)
at com.android.systemui.statusbar.BaseStatusBar.start(Native Method)
at com.android.systemui.statusbar.phone.PhoneStatusBar.start(PhoneStatusBar.java:479)
at com.android.systemui.statusbar.SystemBars.createStatusBarFromConfig(SystemBars.java:106)
at com.android.systemui.statusbar.SystemBars.onNoService(SystemBars.java:58)
at com.android.systemui.statusbar.ServiceMonitor.startService(ServiceMonitor.java:228)
at com.android.systemui.statusbar.ServiceMonitor.access$000(ServiceMonitor.java:49)
at com.android.systemui.statusbar.ServiceMonitor$1.handleMessage(ServiceMonitor.java:73)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5083)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:126)
at dalvik.system.NativeStart.main(Native Method)


java.lang.NoSuchFieldError: com.android.systemui.statusbar.SignalClusterView#mWifiGroup
at de.robv.android.xposed.XposedHelpers.findField(XposedHelpers.java:80)
at de.robv.android.xposed.XposedHelpers.getObjectField(XposedHelpers.java:561)
at com.ceco.gm2.gravitybox.StatusbarSignalCluster.apply(StatusbarSignalCluster.java:91)
at com.ceco.gm2.gravitybox.StatusbarSignalCluster$1.afterHookedMethod(StatusbarSignalCluster.java:63)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:561)
at com.android.systemui.statusbar.SignalClusterView.apply(Native Method)
at com.android.systemui.statusbar.SignalClusterView.setWifiIndicators(SignalClusterView.java:177)
at com.android.systemui.statusbar.policy.NetworkController.refreshSignalCluster(NetworkController.java:958)
at com.android.systemui.statusbar.policy.NetworkController.addSignalCluster(NetworkController.java:928)
at com.android.systemui.statusbar.phone.PhoneStatusBar.makeStatusBarView(PhoneStatusBar.java:1364)
at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:547)
at com.android.systemui.statusbar.phone.PhoneStatusBar.makeStatusBarView(Native Method)
at com.android.systemui.statusbar.phone.PhoneStatusBar.addStatusBarWindow(PhoneStatusBar.java:3897)
at com.android.systemui.statusbar.phone.PhoneStatusBar.createAndAddWindows(PhoneStatusBar.java:3871)
at com.android.systemui.statusbar.BaseStatusBar.start(BaseStatusBar.java:255)
at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:547)
at com.android.systemui.statusbar.BaseStatusBar.start(Native Method)
at com.android.systemui.statusbar.phone.PhoneStatusBar.start(PhoneStatusBar.java:479)
at com.android.systemui.statusbar.SystemBars.createStatusBarFromConfig(SystemBars.java:106)
at com.android.systemui.statusbar.SystemBars.onNoService(SystemBars.java:58)
at com.android.systemui.statusbar.ServiceMonitor.startService(ServiceMonitor.java:228)
at com.android.systemui.statusbar.ServiceMonitor.access$000(ServiceMonitor.java:49)
at com.android.systemui.statusbar.ServiceMonitor$1.handleMessage(ServiceMonitor.java:73)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5083)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:126)
at dalvik.system.NativeStart.main(Native Method)
 
  • Like
Reactions: emd2009

uumeshh

Senior Member
Dec 6, 2011
163
20
does wake up by volume rocker work on kk? was holding the ota only for gravity box to become compatible
 

eng.stk

Senior Member
Mar 29, 2011
7,357
61,789
Google Pixel 4a
OnePlus 9 Pro
I think the best way would be to create a separate project branch with exclusive 4.4 support.
We have already enough Android version related conditional coding (4.1,4.2,4.3).
This would at least prevent the GB from bloating too much.

Yes that would be nice, so some simple tweaks could be added for testing, while we go along the way to full support.

Nice work mate ;)

Sent from my HTC One using Tapatalk
 

C3C076

Inactive Recognized Contributor
Dec 15, 2012
7,749
24,732
Bratislava
ceco.sk.eu.org
New version for KK users to play with attached. (all fixes are "potential" since I am unable to test myself)

- fixed rotation lock tile
- fixed battery percent text
- fixed battery style not changing on the fly
- leave out data activity icons from coloring (as they don't exist on KitKat) - stops log flooding with wifiActivity and mobileActivity related errors)
- other small compatibility adjustments

That's about it for now. I have to get some rest and prepare myself for the upcoming hectic week @ work.
 

Attachments

  • GravityBox.apk
    1.3 MB · Views: 926

ril z

Senior Member
Apr 30, 2011
300
67
Banda Aceh
Hello, dev. Thanks for the great app. Just one quick simple request. Please add an option to disable app label in application launcher.
Thanks in advance.

Sent from my B92M using XDA Premium 4 mobile app
 

Fight4Music

Senior Member
Apr 19, 2012
372
327
31
Herne
New version for KK users to play with attached. (all fixes are "potential" since I am unable to test myself)

- fixed rotation lock tile
- fixed battery percent text
- fixed battery style not changing on the fly

Changing battery style on the fly is working :)

But rotation lock tile isn't present for me.


Gesendet von meinem Nexus 4 mit Tapatalk 2
 

emd2009

Senior Member
Jun 3, 2007
739
91
How can I change the battery text color to KitKat color?

Also rotation tile still not displaying

Sent from my Nexus 5 using Tapatalk
 
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 1205
    GravityBox - tweak box - Xposed module for devices running Android 4.1/4.2/4.3 ROMs
    Version 3.7.2 [JellyBean]

    Version for KitKat is available in this thread: http://xdaforums.com/showthread.php?t=2554049

    READ THIS POST CAREFULLY BEFORE PROCEEDING ANY FURTHER

    Hey!
    After countless hours of coding and searching for proper entry points to inject code to incorporate fixes and mods, here it is:
    GravityBox - a complex Xposed module targeted for devices running Android 4.1/4.2/4.3, which turns vanilla ROM into
    feature-packed "non-flashing" custom ROM.

    Originally, this module was designed for MTK6589 devices which lack custom ROMs built from source due to MediaTek closed-source policy.
    Later on, it was adjusted to support other (non-MTK) devices running vanilla or close-to-vanilla AOSP ROMs.

    Introduction
    The app utilizes amazing Xposed framework coded by recognized
    developer rovo89 which, briefly, provides interface for injecting code into any app, including system services allowing modifications of applications and system services at run-time. One of the biggest advantages of GravityBox is that it is not bound to any specific device. Actually, it should run on any device having vanilla Android 4.1/4.2/4.3 (ROM close enough to AOSP).
    This project wouldn't be possible without rovo's Xposed framework, so huge kudos to him.

    Feature highlight
    GravityBox provides 2 main groups of features:
    Fixes - help to fight typical MTK6589 bugs like:
    --- Date&Time settings crash
    --- Caller ID mismatch
    --- Split conversation in messaging
    --- Wakelock in calendar app periodically turning on the screen
    --- Waelock in messaging app turning on the screen every time new message arrives
    --- Missing TTS settings in Language&Input
    --- Missing extended developer options

    Mods - the set of additional useful features that make using the system more easy and fun
    --- CyanogenMod Pie controls
    --- Expanded Desktop
    --- Statusbar QuickSettings tile management with tile reordering
    --- Lockscreen targets
    --- Statusbar color and transparency
    --- Statusbar Brightness Control
    --- Statusbar icon colors
    --- Additional QuickSettings tiles:
    ------- Sync on/off, WiFi AP on/off, GravityBox shortcut, Torch, Network mode (2G/3G/2G+3G switch), Sleep, QuickRecord,
    QuickApp, GPS on/off, Ringer mode, Volume tile
    --- Quick pulldown - switches to QuickSettings when status bar is pulled down near edges
    --- Auto-switch to QuickSettings when there are no notifications
    --- Center clock in statusbar
    --- Battery indicator style
    --- Navigation bar tweaks
    --- Low battery warning policy
    --- Disable LED flashing when battery low
    --- Disable LED while charging
    --- Auto-hiding of signal icons for empty SIM Slots
    --- Advanced power-off menu (reboot, recovery)
    --- Volume key cursor control
    --- Skip tracks by volume key long-press while screen off (thanks to rovo89)
    --- More volume levels for music stream
    --- Option to control safe headset media volume
    --- Button for clearing all recent tasks at once
    --- Fullscreen caller photo
    --- CRT screen off animation
    --- Minimal brightness setting
    --- Autobrihtness levels adjustment
    --- Lockscreen tweaks - show widgets maximized, lockscreen background style (color fill, custom image)
    --- Lockscreen rotation
    --- Phone tweaks - flip action, disable vibrate on call connect
    --- Hardware key actions - menu long-press/double-tap, back long-press, home long-press
    --- MasterKey vulnerabilities patched (thanks to @Tungstwenty)
    --- Dithered Holo background
    --- Option to use solid black Holo background
    --- Expandable volume panel
    --- Option to unlink ringtone and notifications volumes
    --- Notification drawer style (background color, image for portait/landscape, transparency)
    --- Button backlight modes (default, disabled, always on while screen is on)
    --- Button backlight notifications (for devices that lack Notification LED)
    --- Navigation bar ring targets
    --- GravityBox Actions (shortcuts)
    --- Lockscreen "see through"
    --- Smart Radio
    --- Notification control (allows controlling notification lights/sounds/vibrations on per-app basis)
    --- Ascending (increasing) ring tone
    ... more to come

    Compatibility
    Some words about GB's main concept. One thing I didn't like about xposed modules was that it was always necessary to reboot a device after making a change to some option. Since GB's main concept was to turn MTK devices running stock ROM into something that's close enough to a feature-packed custom ROM, I had to take a decision - for it to be as much comfortable as possible and to really behave like a custom ROM, I had to design it to support most of the preference changes to be done on the fly without needing to reboot a device. While this sounds nice, it also brings couple of "drawbacks". For changes to be made on the fly, it is necessary to make some preparations when device starts. This means, even if you don't use the particular feature, the necessary preparation/modification is already there and is waiting for the user to come and change that option.
    This means it is not possible to "completely deactivate" particular feature if it causes trouble on your device or if you installed GB because you want to use only one particular feature you can't find elsewhere.
    This results in issues on ROMs/devices that have parts that are diverting from default Android implementation too much, or are running heavily modified custom ROMs.
    If you experience weird issues after installing GB, even if you didn't activate a particular feature, it is not because of GB is broken, it is because it is not compatible with your ROM. It is very similar as if you installed ROM built from source for Nexus to some Xperia device - it won't work.

    Next thing, GB is a complex module and is not suitable for 1 purpose scenario. This means, if you are running custom ROM built from source (CM, PAC, ...), and you are missing a certain feature, your best option is to go ask creators of those ROMs to implement those additional features. Supplementing missing features on well-known custom ROMs built from source by installing xposed modules (especially complex ones) is definitely not a good way to go and can cause more trouble than good.

    And finally, the last. GB being a complex module, it shouldn't be combined with other complex modules often racing for the same goal. They can conflict/fight on the same playground and there's no way you can deterministically say which one's going to win.
    They can even lose both.

    So in summary:
    - this module is designed to run on vanilla or close-to-vanilla Android 4.1, 4.2 and 4.3 (AOSP)
    - supports majority of MTK6589, MTK6577, MTK8389 devices
    - supports "Google devices" like Nexus, HTC One Google play edition, and others running vanilla Android 4.1/4.2/4.3
    - Samsung Touchwiz, HTC Sense, MIUI, LeWa, etc. are NOT supported. It is not guaranteed this module will work on these at all so try at your own risk. This module is simply too complex to support all kind of ROM brands that were vastly modified by vendors.
    - DO NOT USE WITH CUSTOM ROMS LIKE CM,AOSPA,ROOTBOX,AOKP,SLIM, ETC... IT MAKES NO SENSE AND CAN CAUSE CONFLICTS AND UNEXPECTED BEHAVIOUR
    - I will not implement any exceptions that will adapt this module to a specific custom ROM. Please, do understand, it is unmanageable.
    - I will not provide any support for devices violating these compatibility rules

    Prerequisites
    To use this module, the following conditions must be met
    - You have a device running Android 4.1/4.2/4.3 that's based on AOSP (vanilla or close-to-vanilla Android)
    - ROM must be rooted (XposedInstaller requires root to be able to install framework into system)
    - You have working custom recovery allowing you to make a backup before installing Xposed framework

    GravityBox has been developed and tested on THL W8 5" XHDPI device (MTK6589)

    Installation
    If you are using my GravityMod2 ROM, don't follow these instructions to update!
    There's a flashable ZIP for updating GravityBox in GravityMod2 thread!
    These instructions are only for those not running GravityMod2 ROM!


    1) Backup your current ROM in custom recovery. I am serious. Don't skip this step.

    2) Get the Xposed installer from Download section from Xposed official thread (the latest version is typically available at this link: http://dl.xposed.info/latest.apk)

    3) Install and run Xposed installer and follow the instructions to activate Xposed framework

    4) Reboot. If device doesn't boot that means that the Xposed framework is not compatible with ROM you are currently
    running. You don't need to continue with the next steps. You will have to restore your ROM from backup.

    5) Download, GravityBox.apk attached at the end of this post, rename it to GravityBox.apk and install it

    6) Make sure GravityBox app is installed to internal memory. If it was installed to phone storage or external storage,
    move it to the internal memory, first

    7) Run Xposed installer, go to Modules menu and activate GravityBox by checking the checkbox

    8) Reboot

    9) Launch GravityBox from app drawer or from Xposed installer and set options as desired

    Videos
    - Xposed framework install plus gravity box module overview (thanks to Rootjunky.com & Marshall Williams)
    - Gravity Box - What is it and How to install it (thanks to @D3VI0US)

    Reporting bugs
    If you experience problems with certain feature, provide the full-detailed info that can help me
    to reproduce the bug and attach debug.log file you'll find in either:
    /data/xposed directory in case of Xposed Installer version prior to 2.3
    or
    /data/data/de.robv.android.xposed.installer/log in case of XposedInstaller 2.3+

    In case you experience SystemUI crashes or other apps Force Closing, or device soft reboots, attach logcat from time
    crash occurs. (use adb logcat *:E or your favorite logcat app from Play Store).
    Please, don't attach big logs. Only the portion where error is clearly seen.
    Disable all other xposed modules before reproducing bug to make sure it is really GravityBox related
    Remember, this app was developed and tested on one particular MTK6589 device so it is not guaranteed that
    it will work flawlessly on yours.


    Multilanguage support
    Volunteers are welcome to translate GravityBox to other languages.
    Simply download this file: https://github.com/GravityBox/GravityBox/blob/jellybean/res/values/strings.xml
    Use Notepad++ to edit strings and then send me edited file so I can include translations into next release.

    Source code
    GravityBox is opensource. Sources are available in my gihub: https://github.com/GravityBox/GravityBox
    If you're a dev and have some ideas for additional features, feel free to fork it, work on it
    and send the pull requests.

    Copyright notice
    https://github.com/GravityBox/GravityBox/blob/jellybean/NOTICE

    Support development
    Coding, maintaining and supporting this project costs me a lot of my precious time. If you find this project useful, you are welcome to support its development via donation. This form of support is meant to compensate for my time dedicated to the community + eventually, help me to afford newer device to keep up with AOSP evolution thus providing continuous support as Android evolves. Thanks!

    Info about premium features and PayPal transaction ID verification system
    1) Those who supported development via PayPal donation can use their PayPal transaction ID to unlock premium features.
    As of v2.9.5, there's one premium feature: Backup/restore of GB settings.

    2) If you contributed to the project by providing translations, code fragments, or by any other way
    you can apply for a free transaction ID by contacting me via PM.

    3) Be aware that there's a system that can identify potential transaction ID
    abuse. E.g. when one ID is being used by more users. Such IDs will get blocked automatically.
    This can also happen when you previously exposed your ID in public forum and other users took
    advantage of it. If this is the case, contact me via PM so I can issue new, special ID.
    In case you own more devices, you can use one transaction ID on up to 10 of them.

    4) If you are using your own custom builds of GB for personal use, you will get hash mismatch
    upon verifying your ID as verification system accepts requests only from official releases of GB.
    If you want to be able to verify IDs with your custom build, contact me via PM so I can setup
    a special hash for your build.
    If you are using a custom build that you provide for broader group of users (e.g. in a custom ROM),
    it is necessary to ask for new hash everytime your new custom version is released for public use.
    These rules are based on mutual trust so please, do not violate them.

    Credits
    - @bgcngm for his code contributions to the project
    - @MohammadAG for Xperia specific contributions to the project
    - @rovo89 for his ultimate Xposed framework and "Volume keys to skip track" mod
    - @peptonib for starting me up with this project
    - THL W8 owners for providing support and feedback
    - CyanogenMod project
    - ParanoidAndroid project
    - SlimBean, RootBox, AOKP, OmniROM projects
    - Sergey Margaritov for ColorPickerPreference
    - @Tungstwenty for MasterKey vulnerabilities patch
    - All those who provided translations for different languages (Mr.Premise, peptonib, kidmar, ch-vox, romashko, Indiant, lelemm, oicirbaf, unavix, LuHash, WedyDQ10, mp3comanche, awaaas, liveasx, samsonbear, Eric850130, xtrem007, benjoe1, asmb111, ...)
    - and finally, all those who keep the project alive by supporting me via donations (you know who you are)

    Changelog
    https://github.com/GravityBox/GravityBox/blob/jellybean/CHANGELOG.txt

    XDA:DevDB Information
    GravityBox [JB] Xposed Framework Module, Tool/Utility for the Android General

    Contributors
    C3C076, bgcngm
    Source Code: https://github.com/GravityBox/GravityBox/tree/jellybean


    Version Information
    Status: Stable
    Current Stable Version: 3.7.2
    Stable Release Date: 2017-04-30

    Created 2013-11-30
    Last Updated 2017-04-30
    195
    Changelog 3.7.2 - 30/04/2017
    - Download Progress Bar: implemented extensions from SBDP module
    --- added option for progress bar animation
    --- added option for centered progress bar
    --- added option for progress bar thickness
    --- added option for edge margin
    --- added support for multiple concurrent progress bar notifications
    --- keeps track of all available progress bar notifications and switches between them
    --- added support for clearable notifications containing progress bar
    --- added logic for auto-hiding progress of idle notifications
    --- added option for sound notification
    --- added option for playing sound only when screen is off
    - Made screenshot faster by introducing dynamic context-aware delay
    - Adjusted for compatibility with the latest GravityBox Unlocker v1.4.3
    --- improved reliability of license validation
    --- !!! won't work with older versions of the Unlocker !!!
    - Updated Chinese (Simplified) translations (thanks to liveasx)
    - Updated Hungarian translations (thanks to benjoe1)

    Complete commit history for 3.7.1->3.7.2
    34
    Regarding Quick Settings tiles, is it possible to;

    1) Add more than one Quick App tile
    2) Allow the Quick App tile to activate a Shortcut instead of an Application

    If it's possible and easy to do, I and others would really appreciate it.
    Gravity box is THE reason for having Xposed, IMO. It's the most amazing selection of mods I've ever come across. :good:

    Thank you guys for the positive feedback. Let me say some words about the current situation and future plans.
    Some of you maybe remember couple of months ago when I was deciding weather to introduce support for other, non-mtk devices.
    One of the reasons that held me back was that I was aware of a risk that this would sooner or later get to a state when there is no time for new cool features because most of the time would be needed to address issues related to diversity between devices and their systems.
    This is basically what's happening now. GB got big and became hard to maintain. Maintaining GB, keep track of this thread, working on other projects @ work in parallel and stil trying to save some time for my family is a bit too much for a one-man show.
    New features will certainly come in the future but current situation needs to calm down a bit. And here are my plans I'd like to go through before some new features will start appearing.

    1) to solve the most critical issues for JellyBean and KitKat (in case I can manage to solve them without a device)
    while waiting for my KitKatk device to arrive
    2) split GB into two separate branches: JB and KK. All irrelevant functionality will be removed from KK branch to keep it clean, manageable and not bloated with unrelated code.

    After this happens, I believe there will be some space for new features to come.

    Regarding MTK support. Although my MTK device will be probably given away that doesn't necessarily mean that support for MTK will be completely dropped. While I expect myself to focus mainly on KK branch, I guess I will still be able to merge features suitable for JB into JB branch for the users with older Android and MTKs to benefit from. However, the ideal would be if there was any dev willing to take over JB branch to keep track of what's happening in the main branch and potentially merge new functionality or even other way around - to possibly bring new features into JB branch that KK branch could also benefit from. This would definitely save me even more time I could dedicate for developing new features.

    This might sound a bit unfair to MTK users. But I think I have given quite a lot of support already and brought many new possibilities to this closed-source platform. Did it even deserve so much love?? Well, it did, at least from my point of view. Since it's the platform that made me start doing something that fills me up.
    But evolution is unstoppable and I think it's time to move forward and start exploring new horizonts.
    I definitely think it's now time for MTK to consider they stupid closed-source policy. While from my experience I find this platform pretty good, on the other hand, I am becoming fed up with supporting something that benefits from Android being an open-source project and not allowing the devs to go beyond what's dictated by manufacturers.

    I just read today that there's some progress about further CM development for Faea F2 (they are currently looking for a team to continue working on CM project that was started 2 months ago). So maybe one day the ice will break and MTK will become more open-source friendly.
    31
    Version 2.7.0 available

    Changelog 2.7.0 - 12/11/2013
    - Improved transparency management:
    --- Wallpaper now correctly scales behind navbar when it has transparency set. Works for majority of launchers, including Google Experience Launcher (KitKat)
    --- Support for animated transitions between transparent/non-transparent states
    - Statusbar Icon Colors:
    --- Improved icon quality (fixed blurriness)
    --- Support for coloring bluetooth, alarm, ringer vibrate, headset icons
    - Navigation Bar Tweaks:
    --- Reorganized menu
    --- Options for navigation bar colors (key color, glow color, navbar background color)
    - Lockscreen:
    --- Option for disabling lockscreen shade (removes dark tint from lockscreen)
    --- Hide statusbar clock support added for common 3rd party widgets (Chronus, DashClock, DeskClock)
    - Pie: improved sensitivity by being less strict about swiping direction
    - Improved detection of existing battery percent text (fixes double percent on some devices)
    - Improved determination of Circle Battery size (fixes circle being too small on some devices)
    - Increased Circle Battery left margin
    - Application launcher: run app immediately when it's the one and only app in the list
    - Updated Master Key Vulnerabilities patch (thanks to bgcngm and tungstwenty)
    - GravityBox Settings improvements:
    --- Enabled color hex value editor for all color pickers
    --- Added fine-tuning up/down buttons for sliders
    - Added Greek translations (thanks to vagosofron)
    - Updated French translation (thanks to ch-vox)
    - Updated Japanese translations (thanks to WedyDQ10)
    - Updated Polish translations (thanks to xtrem007)
    - Updated Chinese (Simplified) translations (thanks to liveasx)
    - Updated Chinese (Traditional) translations (thanks to Eric850130)
    - Updated Italian translations (thanks to pitone02)
    - Updated Portuguese (PT) translation (thanks to bgcngm)
    - Updated Portuguese (BR) translation (thanks to bgcngm)
    - Updated Hungarian translations (thanks to benjoe1)
    - Updated Russian translations (thanks to smb.roman AKA romashko)
    30
    No. In gm2, that's already integrated.
    You don't need to install anything while on gm2 not even gravitybox.apk.
    This would replace one installed in the system already and it will stop working.
    This thread is mainly for those not running gm2.