[APP][KK][XPOSED] GravityBox v3.6.2 - tweak box for Android 4.4 [23/04/2017]

Search This thread

SiperX

Senior Member
Jan 28, 2007
162
1
Officially supported ROMs are AOSP or close to AOSP. Lenovos stock ROMs aren't close enough to AOSP to be officially supported.

Well, for a ROM that is not officially supported I guess that I am very lucky since all the GB tweaks I enabled so far work perfectly fine on my Lenovo stock ROM.

BTW, I just figured out that by setting "Battery indicator style" to "None" and at the same time unchecking the "Show percent text" option, finally the native/stock battery icon disappeared from the status bar, just as I wished.

Perhaps someone can suggest me how (and where) to manually edit the value to increase the volume panel timeout?

Thanks :)
 
Last edited:

DB126

Senior Member
Oct 15, 2013
15,280
10,076
Then again, I guess that I am lucky since all the other GB tweaks I enabled work fine... Hopefully I will figure out another way to hide the native/stock battery icon.

Perhaps someone can suggest me how (and where) to manually edit the value to increase the volume panel timeout?

Thanks :)
It's not binary with most ROMs that deviate from AOSP. I have used GB on numerous devices and ROMs that are not officially supported. Some functions fully/partially work, others are overridden by the ROM. I am grateful for the former, not fussed by the latter and never considered asking the developer to extend support beyond the defined envelope.

As for your volume panel question read back a few posts for a potential solution (here). TTBOMK there is no file/setting where timeout values can be edited. If it were that easy we wouldn't need Xposed modules to perform the magic.
 
  • Like
Reactions: C3C076

SiperX

Senior Member
Jan 28, 2007
162
1
In battery bar at what respective percentile values are the Low Battery color and the Critical Battery color showing?

Are these values fixed or are they user-configurable?

Thanks
 

SiperX

Senior Member
Jan 28, 2007
162
1
Is there a way to disable / enable the Wi-Fi priority option?

I noticed that this (apparently always active) option drains my battery as my device keeps on wanting to connect to a weaker and more distant network only because its SSID is on top of GB priority list rather than connecting to the nearest access point with the strongest signal.

I am frequently moving around in areas where there are multiple access points and I would really prefer to disable the Wi-Fi priority option in GB and simply let Android switch automatically to the nearest access point with the strongest signal.

Thanks :)
 

exadeci

Senior Member
Jul 21, 2010
855
315
Sydney
@C3C076

I have a bug with the fingerprint unlock of my phone, I enabled and then disabled the fingerprint launcher but after countless reboots, sometimes I put my finger the screen turns on but doesn't unlock.

Here's what's probably the relevant xposed log (if the feature is off it shouldn't be active should it?):

Code:
10-17 15:48:14.561 E/Xposed  ( 2071): java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Intent android.content.Context.registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter)' on a null object reference
10-17 15:48:14.561 E/Xposed  ( 2071): 	at com.ceco.nougat.gravitybox.ModFingerprint$2.afterHookedMethod(ModFingerprint.java:62)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:353)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at com.android.server.fingerprint.FingerprintService.<init>(<Xposed>)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at com.android.server.fingerprint.FingerprintServiceEx.<init>(FingerprintServiceEx.java:37)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at java.lang.reflect.Constructor.newInstance0(Native Method)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at com.android.server.SystemServiceManager.startService(SystemServiceManager.java:92)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at com.android.server.SystemServer.startOtherServices(SystemServer.java:1315)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at com.android.server.SystemServer.run(SystemServer.java:357)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at com.android.server.SystemServer.main(SystemServer.java:242)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at java.lang.reflect.Method.invoke(Native Method)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:103)

I've attached the full log

There is also another error with the carrier text (that I didn't change):
Code:
10-17 15:52:38.900 E/Xposed  ( 2559): java.lang.ClassCastException: com.android.keyguard.CarrierText cannot be cast to android.widget.TextView
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.ceco.nougat.gravitybox.ModLockscreen$17.afterHookedMethod(ModLockscreen.java:522)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:353)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.keyguard.CarrierText.updateCarrierText(<Xposed>)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.keyguard.CarrierText$1.onRefreshCarrierInfo(CarrierText.java:95)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.keyguard.KeyguardUpdateMonitor.sendUpdates(KeyguardUpdateMonitor.java:2047)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.keyguard.KeyguardUpdateMonitor.registerCallback(KeyguardUpdateMonitor.java:2038)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.keyguard.CarrierText.onAttachedToWindow(CarrierText.java:398)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.view.View.dispatchAttachedToWindow(View.java:15436)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2995)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3002)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3002)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.view.ViewGroup.addViewInner(ViewGroup.java:4535)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.view.ViewGroup.addView(ViewGroup.java:4337)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:339)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.view.ViewGroup.addView(<Xposed>)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.view.ViewGroup.addView(ViewGroup.java:4309)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:339)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.view.ViewGroup.addView(<Xposed>)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.lge.systemui.widget.SwipeEffectView.createIndicationView(SwipeEffectView.java:171)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager.reset(StatusBarKeyguardViewManager.java:221)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager.show(StatusBarKeyguardViewManager.java:141)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.systemui.keyguard.KeyguardViewMediator.handleShow(KeyguardViewMediator.java:2236)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.systemui.keyguard.KeyguardViewMediator.-wrap18(KeyguardViewMediator.java)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.systemui.keyguard.KeyguardViewMediator$8.handleMessage(KeyguardViewMediator.java:1984)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.os.Handler.dispatchMessage(Handler.java:102)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.os.Looper.loop(Looper.java:154)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.app.ActivityThread.main(ActivityThread.java:6247)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at java.lang.reflect.Method.invoke(Native Method)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:103)
 

Attachments

  • xposed_error_20171017_165034.log
    119 KB · Views: 8
Last edited:

C3C076

Inactive Recognized Contributor
Dec 15, 2012
7,749
24,727
Bratislava
ceco.sk.eu.org
@C3C076

I have a bug with the fingerprint unlock of my phone, I enabled and then disabled the fingerprint launcher but after countless reboots, sometimes I put my finger the screen turns on but doesn't unlock.

Here's what's probably the relevant xposed log (if the feature is off it shouldn't be active should it?):

Code:
10-17 15:48:14.561 E/Xposed  ( 2071): java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Intent android.content.Context.registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter)' on a null object reference
10-17 15:48:14.561 E/Xposed  ( 2071): 	at com.ceco.nougat.gravitybox.ModFingerprint$2.afterHookedMethod(ModFingerprint.java:62)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:353)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at com.android.server.fingerprint.FingerprintService.<init>(<Xposed>)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at com.android.server.fingerprint.FingerprintServiceEx.<init>(FingerprintServiceEx.java:37)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at java.lang.reflect.Constructor.newInstance0(Native Method)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at com.android.server.SystemServiceManager.startService(SystemServiceManager.java:92)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at com.android.server.SystemServer.startOtherServices(SystemServer.java:1315)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at com.android.server.SystemServer.run(SystemServer.java:357)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at com.android.server.SystemServer.main(SystemServer.java:242)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at java.lang.reflect.Method.invoke(Native Method)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
10-17 15:48:14.561 E/Xposed  ( 2071): 	at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:103)

I've attached the full log

There is also another error with the carrier text (that I didn't change):
Code:
10-17 15:52:38.900 E/Xposed  ( 2559): java.lang.ClassCastException: com.android.keyguard.CarrierText cannot be cast to android.widget.TextView
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.ceco.nougat.gravitybox.ModLockscreen$17.afterHookedMethod(ModLockscreen.java:522)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:353)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.keyguard.CarrierText.updateCarrierText(<Xposed>)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.keyguard.CarrierText$1.onRefreshCarrierInfo(CarrierText.java:95)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.keyguard.KeyguardUpdateMonitor.sendUpdates(KeyguardUpdateMonitor.java:2047)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.keyguard.KeyguardUpdateMonitor.registerCallback(KeyguardUpdateMonitor.java:2038)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.keyguard.CarrierText.onAttachedToWindow(CarrierText.java:398)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.view.View.dispatchAttachedToWindow(View.java:15436)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2995)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3002)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3002)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.view.ViewGroup.addViewInner(ViewGroup.java:4535)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.view.ViewGroup.addView(ViewGroup.java:4337)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:339)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.view.ViewGroup.addView(<Xposed>)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.view.ViewGroup.addView(ViewGroup.java:4309)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:339)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.view.ViewGroup.addView(<Xposed>)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.lge.systemui.widget.SwipeEffectView.createIndicationView(SwipeEffectView.java:171)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager.reset(StatusBarKeyguardViewManager.java:221)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager.show(StatusBarKeyguardViewManager.java:141)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.systemui.keyguard.KeyguardViewMediator.handleShow(KeyguardViewMediator.java:2236)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.systemui.keyguard.KeyguardViewMediator.-wrap18(KeyguardViewMediator.java)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.systemui.keyguard.KeyguardViewMediator$8.handleMessage(KeyguardViewMediator.java:1984)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.os.Handler.dispatchMessage(Handler.java:102)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.os.Looper.loop(Looper.java:154)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at android.app.ActivityThread.main(ActivityThread.java:6247)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at java.lang.reflect.Method.invoke(Native Method)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
10-17 15:52:38.900 E/Xposed  ( 2559): 	at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:103)
You are using the wrong thread, we have a dedicated one for Nougat.
Anyway, the first error is not related to FingerprintLauncher. It is related to "Disable imprint vibrations" feature available in Lockscreen tweaks.
This error is only logged and does not have any side-effect nor impact on fingerprint sensor functionality.
Also make sure you did not enable "Wake only" as Imprint mode in Lockscreen tweaks.
From the second error I can only judge you are running GB on an incompatible device (is it LG?). Modifications to Android done by OEM always affect how GB behaves.
Some features may work, some not and it is not in my power to make GB compatible without physically working with such device.
 
  • Like
Reactions: exadeci

exadeci

Senior Member
Jul 21, 2010
855
315
Sydney
You are using the wrong thread, we have a dedicated one for Nougat.
Anyway, the first error is not related to FingerprintLauncher. It is related to "Disable imprint vibrations" feature available in Lockscreen tweaks.
This error is only logged and does not have any side-effect nor impact on fingerprint sensor functionality.
Also make sure you did not enable "Wake only" as Imprint mode in Lockscreen tweaks.
From the second error I can only judge you are running GB on an incompatible device (is it LG?). Modifications to Android done by OEM always affect how GB behaves.
Some features may work, some not and it is not in my power to make GB compatible without physically working with such device.

So I've not enabled anything there, I guess it's probably because I'm on an LG phone.
Wouldn't it be possible to not load feature that are not altered ?
Thanks for infos, I'll double check the thread title next time.
 

AkosPaha

Senior Member
Aug 20, 2016
215
35
21
Budapest
@C3C076

The ultimate notification control part does not work, I click and the application stops!!!! Can you fix it?

This part:

Sent from my Samsung Galaxy Ace II using XDA Labs
 

Attachments

  • IMG_20171017_203717.jpg
    IMG_20171017_203717.jpg
    92.9 KB · Views: 113

C3C076

Inactive Recognized Contributor
Dec 15, 2012
7,749
24,727
Bratislava
ceco.sk.eu.org
just extract the .rar file, the logcat file in the rar!!!!!!
This error is very strange. Are you running some kind of instrumentation tools on your device?
Code:
E/AndroidRuntime( 7929): java.lang.VerifyError: com/ceco/kitkat/gravitybox/ledcontrol/LedMainActivity
E/AndroidRuntime( 7929): 	at java.lang.Class.newInstanceImpl(Native Method)
E/AndroidRuntime( 7929): 	at java.lang.Class.newInstance(Unknown Source)
E/AndroidRuntime( 7929): 	at android.app.Instrumentation.newActivity(Unknown Source)
E/AndroidRuntime( 7929): 	at android.app.ActivityThread.performLaunchActivity(Unknown Source)
E/AndroidRuntime( 7929): 	at android.app.ActivityThread.handleLaunchActivity(Unknown Source)
E/AndroidRuntime( 7929): 	at android.app.ActivityThread.access$800(Unknown Source)
E/AndroidRuntime( 7929): 	at android.app.ActivityThread$H.handleMessage(Unknown Source)
E/AndroidRuntime( 7929): 	at android.os.Handler.dispatchMessage(Unknown Source)
E/AndroidRuntime( 7929): 	at android.os.Looper.loop(Unknown Source)
E/AndroidRuntime( 7929): 	at android.app.ActivityThread.main(Unknown Source)
E/AndroidRuntime( 7929): 	at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 7929): 	at java.lang.reflect.Method.invoke(Unknown Source)
E/AndroidRuntime( 7929): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(Unknown Source)
E/AndroidRuntime( 7929): 	at com.android.internal.os.ZygoteInit.main(Unknown Source)
E/AndroidRuntime( 7929): 	at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
E/AndroidRuntime( 7929): 	at dalvik.system.NativeStart.main(Native Method)
 

AkosPaha

Senior Member
Aug 20, 2016
215
35
21
Budapest
Are you sure you are using the official version of GravityBox installed from either
official Xposed Framework repository or from the second post of this thread?
I don't use the official gravitybox version , I use a 4pda version!! I have a problem the gravitybox unlocker may not function correctly in my phone !!

Sent from my Samsung Galaxy Ace II using XDA Labs
 

Top Liked Posts

  • There are no posts matching your filters.
  • 1068
    GravityBox - all-in-one tweak box - Xposed module for devices running AOSP 4.4
    Version 3.6.2 [KitKat]

    Version for JellyBean is available in this thread: http://forum.xda-developers.com/showthread.php?t=2316070

    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.4, 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.4 (ROM close enough to AOSP).
    This project wouldn't be possible without rovo's Xposed framework, so huge kudos to him.

    Feature highlight
    --- CyanogenMod Pie controls
    --- Expanded Desktop
    --- Statusbar QuickSettings tile management with tile reordering
    --- Lockscreen targets
    --- Statusbar icon coloring
    --- Statusbar Brightness Control
    --- 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, Camera 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 including cursor control keys
    --- Navigation bar ring targets
    --- Low battery warning policy
    --- Disable LED flashing when battery low
    --- Disable LED while charging
    --- 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
    --- CRT screen off animation
    --- Minimal brightness setting
    --- Autobrihtness levels adjustment
    --- Lockscreen tweaks - show widgets maximized, lockscreen background style (color fill, custom image)
    --- Lockscreen rotation
    --- Hardware key actions - menu long-press/double-tap, back long-press, home long-press
    --- 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)
    --- Dialer (Phone) tweaks
    --- Launcher tweaks
    --- Screen recording
    --- GravityBox Actions - interface for 3rd party apps
    --- Smart Radio
    --- Notification control (per-app notification LED/sounds/vibrations)
    --- Ascending 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.4 (AOSP)
    - supports "Google devices" like Nexus, HTC One Google play edition, and others running vanilla Android 4.4
    - supports Motorola Moto G Dual SIM running stock KitKat
    - supports ThL 5000 running stock KitKat and potentially other MediaTek devices running pure MediaTek ROMs
    - Samsung Touchwiz, HTC Sense, MIUI, LeWa, Xperia, Lenovo, 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, OMNI AND THEIR OTHER CLONES... 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

    As is detailed in the OP, GravityBox is designed to be used with stock, vanilla AOSP ROMs, not OEM and custom ROMs. In other words, Google Play Edition and Nexus devices. All OEM ROMs (TouchWiz, Sense, Xperia, Moto, etc.), and custom ROMs (CyanogenMod, ParanoidAndroid, etc.) differ significantly in their code base from pure AOSP. And as most of these ROMs are closed source, and the developer does not have access to all the devices, it means that GravityBox is not designed for, or tested on, these devices and ROMs.

    Even though the Moto devices look like stock Android, they are as much custom under-the-hood as TouchWiz or Sense. It's just that Motorola decided to implement a skin that resembles stock Android, rather than a custom skin like Samsung has done. But the changes to the core code mean that many of GravityBox's features will not work, and actually do cause some well-known bugs. The same goes for ParanoidAndroid, there are just too many changes to the core code for GB to be reliable.

    If you choose to use GravityBox on a ROM it was never intended to be used with, then you do so at your own risk, and without any support. You should always have a good nandroid backup and be familiar with ADB and Fastboot. At any time, a ROM update or GravityBox update may cause any/all GravityBox features to break, and worst case, send your device into a bootloop. This is just an unfortunate reality of using a mod on a device it wasn't intended to be used on. Any user who wishes to improve or fix bugs on their unsupported ROM is more than welcome to download the source code for GravityBox (links to Git in the OP) and work on debugging and fixing the bugs on their own.

    Prerequisites
    To use this module, the following conditions must be met
    - You have a device running Android 4.4 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 KitKat version has been developed and tested on Nexus 5

    Installation
    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 from the second post, rename it to GravityBox.apk and install it.
    Alternatively, you can download the latest GravityBox directly from Xposed Installer (search for GravityBox [KK] module).

    6) Make sure GravityBox app is installed into internal memory. If it was installed into phone storage or external storage,
    move it into the internal memory first (applies only to devices having additional or external storage)

    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)

    Documentation
    Thanks to @cadarn07, there's a comprehensive and searchable User Guide listing
    all of the GravityBox features. It's an EverNote document located at https://www.evernote.com/pub/cadarn07/gravitybox

    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:
    /data/data/de.robv.android.xposed.installer/log

    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 device so it is not guaranteed that
    it will work flawlessly on yours.


    Click here tor ead additional, more detailed info on Reporting bugs provided by @trjlive

    Multilanguage support
    Volunteers are welcome to translate GravityBox to other languages.
    Simply download this file: https://github.com/GravityBox/GravityBox/raw/kitkat/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/tree/kitkat
    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/kitkat/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
    - @Tungstwenty for Fake ID vulnerability patch
    - THL W8 owners for providing support and feedback
    - CyanogenMod project
    - ParanoidAndroid project
    - SlimBean, RootBox, AOKP, OmniROM projects
    - Sergey Margaritov for ColorPickerPreference
    - 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/kitkat/CHANGELOG.txt

    XDA:DevDB Information
    GravityBox [KK] Xposed Framework Module, Xposed for the Android General

    Contributors
    C3C076
    Source Code: https://github.com/GravityBox/GravityBox/tree/kitkat

    Xposed Package Name: com.ceco.kitkat.gravitybox

    Version Information
    Status: Stable
    Current Stable Version: 3.6.2
    Stable Release Date: 2017-04-23

    Created 2013-12-03
    Last Updated 2017-04-23
    98
    Many of you are already aware of the fact that making GB for lollipop will require a lot of time. To avoid further speculations, my plans are as follows:
    1) to bring very first version as fast as possible although missing some of the complex features that require major rework (such as quick settings, lock screen tweaks, etc.) . The first version should bring all the features that are not that hard or time consuming to adjust for lollipop.
    2) to work step by step on complex features that require complete rework.
    More versions will be released during the process; every time remarkable progress is made
    74
    Changelogs

    Changelog 3.6.2 - 23/04/2017
    - Download Progress Bar: implemented extensions from SBDP module
    --- 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
    - QuietHours: implemented Wear mode
    --- available only when Android Wear app is installed
    --- mutes notification sounds and device-wide vibrations while preserving vibrations on a paired watch
    --- can be toggled from QuietHours tile or via dedicated GravityBox Action
    - 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)

    Full Changelog: https://github.com/GravityBox/GravityBox/blob/kitkat/CHANGELOG.txt

    Alternative downloads: directly via Xposed Installer or at: http://repo.xposed.info/module/com.ceco.kitkat.gravitybox
    73
    Version 2.9.4 now available

    Changelog 2.9.4 - 25/01/2014
    - Expanded desktop revised:
    --- Immersive mode now fully working without the need of reentering app
    --- Immersive navbars now re-hides itself correctly in apps where it previously didn't
    --- Added new mode: Immersive status bar - keeps navbar in normal mode and statusbar in immersive mode
    - Smart Radio reworked from scratch - based on connectivity manager events
    --- Option to force power saving mode when screen turns off
    --- Option to ignore switching to normal mode after screen turns on until device is unlocked
    --- Option to set delay of network mode change to filter out temporary connection state changes
    - Lockscreen tweaks:
    --- Added option for custom carrier text (default/custom/empty: when space entered as value)
    --- Fixed crop size when cropping image for custom lockscreen background
    --- Last screen:
    ------- preserves original orientation regardless of lockscreen orientation (won't rotate with lockscreen)
    ------- fixed orientation for devices having flipped screen (thanks to superdragonpt for hints)
    --- Added option for specifying blur effect intensity
    - QuickSettings tiles:
    --- Sync tile: added long-press action to open sync settings
    --- Network mode tile: added long-press action to open mobile network settings
    - Pie Controls: Implemented support for handling long-press on pie keys
    - Phone tweaks
    --- Added answer/dismiss call actions to non-intrusive incoming call notification
    --- Unblocked SIP calls over mobile network
    - Power tweaks: Added option for battery charged sound
    - Key actions and GB Actions:
    --- Added action for taking screenshot
    --- Added action for showing volume panel
    - Display tweaks:
    --- Added option for controlling pulse notification light delay (frequency)
    --- Added option for enabling/disabling translucent decors (thanks to scaryuncledevin)
    - Misc tweaks:
    --- Added setting to change tap vs long-press modes of clearing recent tasks (thanks to scaryuncledevin)
    --- Extended option for controlling overflow menu button
    - Notification drawer style: Added option for custom carrier text
    - Added option to disable power menu on lockscreen
    - Added delay to screenshot action
    - Hide 'Torch auto off' option if device has no flash (thanks to bgcngm)
    - Fixed data traffic monitor not showing values on some devices (thanks to PeterCxy)
    - Updated Portuguese (PT) translation (thanks to bgcngm)
    - Updated Spanish translations (thanks to jvbferrer)
    - Updated Polish translations (thanks to xtrem007)
    - Updated Chinese (Simplified) translations (thanks to liveasx)
    - Updated Italian translations (thanks to pesa1234, valerioscifoni)
    - Updated Japanese translations (thanks to WedyDQ10)
    - Updated Russian translations (thanks to gaich)
    - Updated French translation (thanks to ch-vox)
    - Updated Chinese (Traditional) translations (thanks to Eric850130)
    - Updated Slovak and Czech translations
    68
    Just had a 12 hour coding marathon. Things go slow. Too many surprises awaiting in L. This is going to take some time. Please, don't ask for progress. I'll write when I have some news. For those who try to report bugs please make sure you do that the proper way. I won't be tracking this thread fully as I'd like to dedicate all time to development. Thanks for understanding.