[Xposed Framework Modules] C3C076:
GravityBox - all-in-one tweak box - Xposed module for devices running Android Pie

Version 9.2.1 [Pie]

Version for JellyBean is available in this thread: https://xdaforums.com/showthread.php?t=2316070

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

Version for Lollipop is available in this thread: https://xdaforums.com/showthread.php?t=3037566

Version for Marshmallow is available in this thread: https://xdaforums.com/showthread.php?t=3251148

Version for Nougat is available in this thread: https://xdaforums.com/showthread.php?t=3653953

Version for Oreo is available in this thread: https://xdaforums.com/showthread.php?t=3739929

READ THIS POST CAREFULLY BEFORE PROCEEDING ANY FURTHER

Introduction

The app utilizes Riru and EdXposed Magisk module which uses original Xposed Framework API created by rovo89.

!!!!!! WARNING !!!!!!

This module utilizes EdXposed Framework which is still in early development stage and may contain bugs or might not be fully compatible with system of your Android device. I take no responsibility for any issues arising from using GravityBox with EdXposed and strongly recommend creating a full backup of your device before activating the module.

Requirements

- Magisk v17 or later

- Riru v16 or later

- EdXposed v0.3.0.0-beta2 or later

- EdXposed Installer v2.2.1 or later

Installation

This procedure assumes you have working Magisk installation.

1) Install Riru and EdXposed modules using Magisk Manager

2) Install EdXposed Installer app

3) Reboot and open EdXposed Installer app to check if EdXposed works and is active

4) Install GravityBox and enable it in EdXposed Installer

5) Reboot

Required whitelisted packages

In case you use blacklist/whitelist functionality of EdXposed make sure all the following packages are whitelisted (not blacklisted respectively) for full GravityBox experience.

- Android System (android)

- System UI (com.android.systemui)

- Call Management (com.android.server.telecom)

- Download Manager (com.android.providers.downloads)

- Phone (com.android.dialer or com.google.android.dialer)

- Phone (com.android.incallui) (OxygenOS only)

Feature highlight

--- Lockscreen tweaks

--- QuickSettings tile management with additional tiles

--- Statusbar tweaks

--- Navigation bar tweaks

--- Pie controls

--- Power tweaks

--- Display tweaks

--- Phone tweaks

--- Media tweaks

--- Hardware/navigation key actions

--- GravityBox Actions - interface for 3rd party apps

--- Notification control (per-app notification LED/sounds/vibrations)

--- Fingerprint launcher

--- Advanced tuning of Framework and System UI parameters

... and many more

Compatibility

GB's main concept is to make most of the preference changes to be done on the fly without need to reboot a device to achieve custom-ROM like experience.

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 to a situation when you installed ROM built from source for Nexus to some Xperia device - it won't work.

GB is a complex module and is not suitable for 1 purpose scenario. This means, if you are running custom ROM built from source, 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.

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 9 (AOSP)

- officially supports devices/systems it was developed and tested on

- 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 MODULE WAS NOT EXPLICITLY DESIGNED FOR

-

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

GravityBox [P] has been designed for and tested on

- Nexus 5X running Pixel Experience Android Pie 9.0

- OnePlus 3T running OxygenOS

- OnePlus 7 Pro running OxygenOS

- Pixel 3a running Google OS

Reporting bugs

If possible, please use Github issue reporting interface for reporting bugs.

If you experience problems with certain feature, provide the full-detailed info that can help me

to reproduce the bug and attach error.log file you'll find in:

/data/user_de/0/com.solohsu.android.edxp.manager/log

If you use different manager or there is no log file present, use ADB to capture log: adb logcat -s EdXposed-Bridge

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 to read 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/pie/GravityBox/src/main/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/pie

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/pie/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 more than 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 are two premium features:

- Backup/restore of GB settings.

- Ultimate notification control

- Advanced tuning

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

- @simmac for app icon

- @romracer for Motorola specific code contributions

- @firefds for Samsung specific code contributions

- CyanogenMod project

- ParanoidAndroid project

- Slim, 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, Fatih Firinci, ...)

- 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/pie/CHANGELOG.txt