📈 GH Trending Explorer 🎲 Surprise me

← all repos

RikkaApps / Shizuku

git clone https://github.com/RikkaApps/Shizuku.git v13.6.0 · 1y ago 🔥 on GitHub Trending today

Lets normal Android apps call privileged system APIs through a server process started with adb or root privileges.

Why you might care

Apps that need elevated access can use system APIs via binder without repeated su shell commands, text parsing, or per-call root process creation. Developers use the Shizuku API to build on it; it is not tied to AI.

Categories

Alternatives

MagiskKernelSUSui
+59
stars, 24h · #673
+447
stars, 7 days · #491
+~1.8k
stars, 30 days · #468
32k
★ total · +1% this week
3.4k
forks · 593 open issues

Star history (as recorded here)

2026-10-22 · 31,937 ★ 2026-10-23 · 31,996 ★
LanguageKotlin
LicenseApache-2.0
Created2017-05-24 (9y ago)
Last push1y ago
Watchers617
OwnerOrganization

Seen on GitHub Trending

  • 2026-10-23 — #8 weekly in kotlin · +438 ★
  • 2026-10-22 — #13 weekly in kotlin · +447 ★

Links

README excerpt
# Shizuku
## Background
When developing apps that requires root, the most common method is to run some commands in the su shell. For example, there is an app that uses the `pm enable/disable` command to enable/disable components.
This method has very big disadvantages:
1. **Extremely slow** (Multiple process creation)
2. Needs to process texts (**Super unreliable**)
3. The possibility is limited to available commands
4. Even if ADB has sufficient permissions, the app requires root privileges to run
Shizuku uses a completely different way. See detailed description below.
## User guide & Download
## How does Shizuku work?
First, we need to talk about how app use system APIs. For example, if the app wants to get installed apps, we all know we should use `PackageManager#getInstalledPackages()`. This is actually an interprocess communication (IPC) process of the app process and system server process, just the Android framework did the inner works for us.
Android uses `binder` to do this type of IPC. `Binder` allows the server-side to learn the uid and pid of the client-side, so that the system server can check if the app has the permission to do the operation.
Usually, if there is a "manager" (e.g., `PackageManager`) for apps to use, there should be a "service" (e.g., `PackageManagerService`) in the system server process. We can simply think if the app holds the `binder` of the "service", it can communicate with the "service". The app process will receive binders of system services on start.
Shizuku guides users to run a process, Shizuku server, with root or ADB first. When the app starts, the `binder` to Shizuku server will also be sent to the app.
The most important feature Shizuku provides is something like be a middle man to receive requests from the app, sent them to the system server, and send back the results. You can see the `transactRemote` method in `rikka.shizuku.server.ShizukuService` class, and `moe.shizuku.api.ShizukuBinderWrapper` class for the detail.
So, we reached our goal, to use system APIs with higher permission. And to the app, it is almost identical to the use of system APIs directly.
## Developer guide
### API & sample
https://github.com/RikkaApps/Shizuku-API
### Migrating from pre-v11
> Existing applications still works, of course.
https://github.com/RikkaApps/Shizuku-API#migration-guide-for-existing-applications-use-shizuku-pre-v11
### Attention
1. ADB permissions are limited
 ADB has limited permissions and different on various system versions. You can see permissions granted to ADB here.
 Before calling the API, you can use `ShizukuService#getUid` to check if Shizuku is running user ADB, or use `ShizukuService#checkPermission` to check if the server has sufficient permissions.
2. Hidden API limitation from Android 9
 As of Android 9, the usage of the hidden APIs is limited for normal apps. Please use other methods (such as ).
3. Android 8.0 & ADB
 At present, the way Shizuku service gets the app process is to combine `IActi

Blurb generated by claude-haiku-5-5 today. Star deltas marked ~ are extrapolated from partial history.