Shizuku+-API is an enhanced, developer-friendly version of the Shizuku API. It provides a modernized interface for interacting with Shizuku+, while maintaining full backward compatibility with standard Shizuku and Sui servers.
Shizuku+-API eliminates the boilerplate associated with standard Shizuku development:
InputStream, ErrorStream, and threads. Get a clean CommandResult in one line.DevicePolicyManager binder without requiring the user to perform a factory reset or complex ADB setup.Shizuku.newProcess shell execution on standard Shizuku.Shizuku+-API includes exclusive interfaces for advanced system interaction:
Manage isolated Linux environments via the Android Virtualization Framework.
Bypass SAF (Storage Access Framework) limitations for verified power-user tools.
FileDescriptors for restricted paths like /data/data/.Access privileged system intelligence and hardware accelerators.
Take control of the desktop windowing experience.
Expose privileged overlay management.
Manage network restrictions and routing.
Advanced memory and process management.
Seamless multi-device state synchronization.
Add the following to your build.gradle:
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
implementation 'com.github.thejaustin:Shizuku+-API:13.2.0-plus'
}
Execute any command and get the output synchronously (call off the main thread):
// String shorthand
ShizukuPlusAPI.CommandResult result = ShizukuPlusAPI.executeShell("whoami");
if (result.isSuccess()) {
Log.d("API", "Output: " + result.output);
}
// Explicit arg array (preferred — avoids shell-quoting issues)
ShizukuPlusAPI.CommandResult result2 = ShizukuPlusAPI.executeShell(
new String[]{"pm", "list", "packages", "-3"});
Easily read or modify system, secure, and global settings:
ShizukuPlusAPI.Settings.putSecure("now_bar_enabled", "1");
String scale = ShizukuPlusAPI.Settings.getSystem("font_scale");
Force an app into free-form mode even if restricted by its manifest:
ShizukuPlusAPI.WindowManager.forceResizable("com.example.app", true);
Access a file in an app's private data directory (requires user confirmation):
ParcelFileDescriptor pfd = ShizukuPlusAPI.StorageProxy.openFile(
"/data/data/com.example.app/files/config.json",
ParcelFileDescriptor.MODE_READ_ONLY);
Shizuku+-API dispatches through the AIDL stub (IShizukuService) when a Plus
server is detected, giving direct typed access to all Plus interfaces with no
magic transaction codes. On a standard Shizuku server the shell helpers fall
back to Shizuku.newProcess; Plus-only AIDL features return null/false.
Result: Your app works everywhere, but gets richer capabilities on Shizuku+.
For the core logic, UserService documentation, and AIDL definitions, please refer to the original Shizuku-API repository. Shizuku+-API includes all original rikka.shizuku.Shizuku methods.
72 commits
Java
79.2%
AIDL
15.4%
C++
4.8%
Shizuku+-API is an enhanced, developer-friendly version of the Shizuku API. It provides a modernized interface for interacting with Shizuku+, while maintaining full backward compatibility with standard Shizuku and Sui servers.
Shizuku+-API eliminates the boilerplate associated with standard Shizuku development:
InputStream, ErrorStream, and threads. Get a clean CommandResult in one line.DevicePolicyManager binder without requiring the user to perform a factory reset or complex ADB setup.Shizuku.newProcess shell execution on standard Shizuku.Shizuku+-API includes exclusive interfaces for advanced system interaction:
Manage isolated Linux environments via the Android Virtualization Framework.
Bypass SAF (Storage Access Framework) limitations for verified power-user tools.
FileDescriptors for restricted paths like /data/data/.Access privileged system intelligence and hardware accelerators.
Take control of the desktop windowing experience.
Expose privileged overlay management.
Manage network restrictions and routing.
Advanced memory and process management.
Seamless multi-device state synchronization.
Add the following to your build.gradle:
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
implementation 'com.github.thejaustin:Shizuku+-API:13.2.0-plus'
}
Execute any command and get the output synchronously (call off the main thread):
// String shorthand
ShizukuPlusAPI.CommandResult result = ShizukuPlusAPI.executeShell("whoami");
if (result.isSuccess()) {
Log.d("API", "Output: " + result.output);
}
// Explicit arg array (preferred — avoids shell-quoting issues)
ShizukuPlusAPI.CommandResult result2 = ShizukuPlusAPI.executeShell(
new String[]{"pm", "list", "packages", "-3"});
Easily read or modify system, secure, and global settings:
ShizukuPlusAPI.Settings.putSecure("now_bar_enabled", "1");
String scale = ShizukuPlusAPI.Settings.getSystem("font_scale");
Force an app into free-form mode even if restricted by its manifest:
ShizukuPlusAPI.WindowManager.forceResizable("com.example.app", true);
Access a file in an app's private data directory (requires user confirmation):
ParcelFileDescriptor pfd = ShizukuPlusAPI.StorageProxy.openFile(
"/data/data/com.example.app/files/config.json",
ParcelFileDescriptor.MODE_READ_ONLY);
Shizuku+-API dispatches through the AIDL stub (IShizukuService) when a Plus
server is detected, giving direct typed access to all Plus interfaces with no
magic transaction codes. On a standard Shizuku server the shell helpers fall
back to Shizuku.newProcess; Plus-only AIDL features return null/false.
Result: Your app works everywhere, but gets richer capabilities on Shizuku+.
For the core logic, UserService documentation, and AIDL definitions, please refer to the original Shizuku-API repository. Shizuku+-API includes all original rikka.shizuku.Shizuku methods.
72 commits
Java
79.2%
AIDL
15.4%
C++
4.8%