2,767
stars
+3
1,328
forks
170
watchers
136
prs
425
issues
2
releases
0
discussions
README
Shizuku-API Shizuku API is the API provided by Shizuku and Sui. With Shizuku API, you can call your Java/JNI code with root/shell (ADB) identity. Requirements To use Shizuku APIs, you need to guide the user to install Shizuku or Sui first. Both of them require Android 6.0+. Shizuku Shizuku is a standard Android application. You can guide the users to download Shizuku from https://shizuku.rikka.app/download/. Shizuku works for both rooted and non-rooted devices. On non-rooted devices, Shizuku needs to be manually restarted with adb every time on boot. Before Android 11, a computer is required to run adb. Android 11 and above have built-in wireless debugging support, and users can start Shizuku directly on the device. Sui Sui is a Magisk module. Magisk requires an unlocked bootloader. No additional setup is required except for the installation. You can guide the rooted users (searching su in PATH is enough) to download Sui from Magisk or https://github.com/RikkaApps/Sui. Demo A demo project is provided. See demo for more. Guide I'll say the difficult words first, using Shizuku APIs is similar to framework or system app development, some experience in developing common applications may not be enough. You have to get used to digging into Android source code to find out how things work, cs.android.com and AndroidXref sites will be your best friend. Add dependency !Maven Central groovy def shizuku_version = (the version above) implementation "dev.rikka.shizuku:api:$shizuku_version" // Add this line if you want to support Shizuku implementation "dev.rikka.shizuku:provider:$shizuku_version" Acquire the Binder The first step is to acquire the Binder from Shizuku or Sui. Shizuku class provides listeners, ShizukuaddBinderReceivedListener() and Shizuku.addBinderDeadListener(), that allows you to track the life of the binder. You should call methods in Shizuku class when the binder is alive or you will get an IllegalStateException. The steps to get a Binder from Sui and Shizuku are different. Sui Call Sui.init(packageName) before using Shizuku class. This method only needs to be called once. If this method returns true, means Sui is installed and available. For multi-process applications, call this method in every process that needs to use Shizuku API. Note, request the binder for Sui only requires two times of binder IPC, this is significantly cheaper than initialize Shizuku which uses ContentProvider. Sui.init(packageName) can be used in main thread, you don't need to worry about performance. Shizuku Add ShizukuProvider to AndroidManifest.xml. xml For multi-process applications, you need to call ShizukuProvider.enableMultiProcessSupport() in every process which needs to use Shizuku API. Starting from v12.1.0, Sui is initialized automatically in ShizukuProvider. You can opt-out this behavior by calling ShizukuProviderdisableAutomaticSuiInitialization() before ShizukuProvideronCreate() is called. Unless there are sp
Top issues
#518Unlimited diamond💎33 comments · 2026-08-28#300Draft issue: Please provide additional details10 comments · 2025-11-15#175OLED9 comments · 2024-12-29#14一些第三方工具(测试了Tasker和MacroDroid)无法调用Shizuku的rish8 comments · 2022-05-03#544Android Download 👉: https://st.simpledesign.ltd/fqy2M3 iOS Download 👉: https://apps.apple.com/app/id16362548206 comments · 2026-09-21#240Will HiddenApiBypass cause issues on Android 16 (ART changes)?6 comments · 2025-08-26#548111110005 comments · 2026-09-25#514brew install gh5 comments · 2026-08-26
Latest release
v12.2.0 v12.1.0 2022-10-07- Fix onServiceDisconnected is not called if the UserService is stopped by ShizukuunbindUserService