What Is Shizuku? A Guide to Using System APIs Without Root
Updated
Shizuku is a tool that lets Android apps call system APIs directly, using higher privileges than a normal app gets, without requiring a root shell. It is most useful when an app needs adb-level permission: instead of asking every user to run adb commands or root their device, the developer can rely on Shizuku to broker that access. According to the official site, Shizuku is also significantly faster than going through a shell, and it ships with detailed documentation so the main user-side requirement is simply installing Shizuku.
The problem Shizuku solves
Normally, an Android app runs in a sandbox with limited permissions. If it needs to do something privileged — grant a runtime permission, manage packages, or call a hidden system API — the usual options are:
- Root the device, which is invasive and excludes most users.
- Run adb shell commands, which is slow and awkward to wire into an app.
Shizuku takes a different route. It runs a process with elevated privileges (started via adb or root) and exposes those privileges to apps through a binder interface. The app then calls system APIs "directly" rather than shelling out, which the site describes as significantly faster than the shell approach.
How it works in practice
The core idea is that your app talks to system services through a ShizukuBinderWrapper instead of the normal binder. The official example shows granting a runtime permission:
private static final IPackageManager PACKAGE_MANAGER =
IPackageManager.Stub.asInterface(
new ShizukuBinderWrapper(
SystemServiceHelper.getSystemService("package")));
public static void grantRuntimePermission(
String packageName, String permissionName, int userId) {
try {
PACKAGE_MANAGER.grantRuntimePermission(
packageName, permissionName, userId);
} catch (RemoteException tr) {
throw new RuntimeException(tr.getMessage(), tr);
}
}
The site notes there are a few more steps involved — such as checking permission and confirming Shizuku is running — so this snippet is a starting point, not a complete integration.
Who it is for
Shizuku is aimed at two groups:
| Audience | What they get |
|---|---|
| App developers | A way to offer privileged features to users who have not rooted their device. If your "root required app" only actually needs adb permission, Shizuku lets you reach a much wider audience. |
| Users | A single install that unlocks those features, with documentation guiding the setup. |
Key points to remember
- Shizuku lets apps use system APIs directly with higher privileges.
- It removes the need for a root shell in cases that only require adb-level access.
- It is described as faster than shell-based approaches.
- The developer-facing requirement is mainly to have users install Shizuku; the project provides documentation to walk them through it.
For the exact setup steps and current details, refer to the official documentation at shizuku.rikka.app, since the integration involves permission checks and runtime-state handling beyond the example above.