Shizuku 完全指南 — 让普通 App 拥有系统级权限
Shizuku 是一个开源的 Android 系统工具,由开发者 Rikka 创建。它的核心能力是:让普通应用通过 ADB 或 Root 权限直接调用系统 API,无需应用自身拥有 Root 权限。
名字来源于《小林家的龙女仆》中的角色「托尔」(Tohru,日语读音 Shizuku)—— 强大、可靠,默默守护。
一句话总结:Shizuku = 在普通 App 和 Android 系统之间的一座权限桥,让 App 能以更高权限调用系统服务。
一、工作原理
Android 中,App 调用系统 API(如 PackageManager、ActivityManager)本质上是 Binder IPC 进程间通信。系统服务端通过 Binder 获取调用方的 UID/PID 来校验权限。
- 普通 App:通过 Binder 调用系统 API,但受限于自身 UID 的权限范围
- Shizuku Server:以 Root(UID 0) 或 ADB(UID 2000) 身份运行的后台 Java 进程
- System Server:Android 系统核心服务,根据调用方 UID 判断授权
Shizuku 的工作流程:
- Shizuku 引导用户以 Root 或 ADB 启动一个 Shizuku Server 进程
- App 启动时,Shizuku Server 将 Binder 发送给 App 进程
- App 通过这个 Binder 与 Shizuku Server 通信,Server 代理转发请求到 System Server
- 由于 Server 进程拥有更高的 UID 权限,System Server 接受操作
二、Shizuku vs 传统方案
传统方案(su 命令模式)
传统 Root 类 App 通过执行 su 命令来调用系统指令,每次操作都创建多个进程:
su # 1. 执行 su(进程创建)
pm disable com.example # 2. 执行 pm 命令(进程创建)
# 3. 解析文本输出(不可靠)
# 4. 获取结果
传统方案的缺点:
- 速度极慢 — 每次操作都创建新进程
- 可靠性差 — 需解析文本输出,极易出错
- 功能受限 — 只能使用现有命令
- 必须 Root — 非 Root 设备无法使用
Shizuku 方案
Shizuku 一次启动后,App 通过 Binder IPC 直接调用系统 API,速度极快且类型安全:
// Shizuku 方案:一次启动,直接 API 调用
Shizuku.bindUserService(userServiceArgs, connection);
PackageManager pm = ...;
pm.getInstalledPackages(0);
三、三种启动方式
方式一:Root 启动 🦊
最简单的方式,适合已 Root 的设备(Magisk / KernelSU / APatch)。
- 安装 Shizuku(Google Play 或 GitHub Release)
- 打开 Shizuku App,点击「启动」按钮
- Root 管理工具弹出授权请求,允许即可
- 界面显示「Running」,可在设置中开启「开机启动」
方式二:无线调试 📶(Android 11+)
无需电脑,完全在手机上操作。
Step 1:开启开发者选项和无线调试
- 设置 → 关于手机 → 连续点击「版本号」7 次,直到提示进入开发者模式
- 返回设置 → 系统 → 开发者选项,开启「USB 调试」
- 找到并开启「无线调试」



Step 2:配对(仅需一次)
- 在 Shizuku App 中点击「配对」按钮
- 下拉通知栏,系统会显示无线调试配对通知
- 在「无线调试」中点击「使用配对码配对设备」
- 将显示的 6 位配对码输入到 Shizuku 通知栏中




Step 3:启动
- 配对成功后,返回 Shizuku 主界面
- 点击「启动」按钮,等待状态变为「Running」
注意:无线调试启动方式在每次重启手机后需要重新执行启动步骤(配对只需要一次)。
方式三:电脑 ADB 💻(Android 10 及以下)
适合无 Root、系统版本低于 Android 11 的设备。
安装 ADB
- 下载 SDK Platform Tools 并解压
# Windows
https://dl.google.com/android/repository/platform-tools-latest-windows.zip
# Linux
https://dl.google.com/android/repository/platform-tools-latest-linux.zip
# Mac
https://dl.google.com/android/repository/platform-tools-latest-darwin.zip
- 在解压目录打开终端,验证安装:
adb version
# 能看到版本信息即安装成功
开启 USB 调试并连接
- 手机开启「开发者选项」→「USB 调试」
- USB 连接电脑,手机上确认「允许 USB 调试」
- 终端输入
adb devices验证连接
启动 Shizuku
复制以下命令到终端(Shizuku v11.2.0+):
adb shell sh /data/user_de/0/moe.shizuku.manager/start.sh
提示:如果使用 PowerShell,adb 需要替换为 ./adb。启动成功后手机界面会显示「Running」。
注意:电脑 ADB 模式同样每次重启后需重新执行命令。
四、常见问题排查
无线调试一直显示「正在搜索配对服务」
App 在后台被限制了网络访问权限。搜索你的机型如何「允许后台运行」并设为「无限制」。
输入配对码后立即失败
MIUI/澎湃用户:将通知样式切换为「Android 原生」。路径:设置 → 通知 → 通知显示设置 → 样式改为「Android」。
ADB 权限不足
- 小米/Redmi:开启「USB 调试(安全设置)」— 这是单独的选项
- OPPO/OnePlus:关闭「权限监控」(开发者选项内)
- 魅族:关闭「Flyme 支付保护」
- 华为/EMUI:开启「仅充电模式下允许 ADB 调试」
Shizuku 无故停止运行
- 确保 Shizuku 已被加入后台白名单/自启动列表
- 开启「禁用 ADB 授权超时」(Android 11+)
- 将 USB 使用模式改为「仅充电」
- 索尼设备注意:连接 USB 后弹出的对话框不要点击
GrapheneOS 用户
系统设置 → 「安全」→ 「Secure app spawning」可能需要关闭。
五、使用 Shizuku 的知名应用
Shizuku 被广泛应用于各类需要系统权限的工具 App 中:雹(Ice Box)、剪切板工具、冰箱/小黑屋、存储重定向、88mm 水印相机、应用伪装、WiFi 密码查看、场景工具(Tasker)等。
这些应用利用 Shizuku 实现:冻结/卸载系统应用、管理应用权限、修改系统设置、查看 WiFi 密码、存储重定向等功能,而无需 App 自身获取 Root 权限。
六、开发者接入指南
添加依赖
def shizuku_version = '13.1.5'
implementation "dev.rikka.shizuku:api:"
implementation "dev.rikka.shizuku:provider:"
注册 Provider
<provider
android:name="rikka.shizuku.ShizukuProvider"
android:authorities="${applicationId}.shizuku"
android:multiprocess="false"
android:enabled="true"
android:exported="true"
android:permission="android.permission.INTERACT_ACROSS_USERS_FULL" />
获取 Binder
import rikka.shizuku.Shizuku;
// 监听 Binder 接收
Shizuku.addBinderReceivedListener(() -> {
// Binder 已就绪
});
// 监听 Binder 断开
Shizuku.addBinderDeadListener(() -> {
// Binder 丢失
});
请求权限
private boolean checkPermission(int requestCode) {
if (Shizuku.isPreV11()) {
return false;
}
if (Shizuku.checkSelfPermission() == PERMISSION_GRANTED) {
return true;
} else if (Shizuku.shouldShowRequestPermissionRationale()) {
return false;
} else {
Shizuku.requestPermission(requestCode);
return false;
}
}
UserService
UserService 类似 Android 的 Bound Service,但运行在 Root 或 Shell 身份下的独立进程中,可以执行 Java 代码甚至通过 JNI 调用 Native 代码。
// 定义服务
public class MyService extends IMyInterface.Stub {
@Override
public void doSomething() {
// 这里的代码以 Root/Shell 身份运行
}
}
// 绑定服务
Shizuku.bindUserService(
new Shizuku.UserServiceArgs(
new ComponentName(context, MyService.class)
).daemon(true),
new ServiceConnection() { ... }
);
判断 Root 或 ADB
int uid = Shizuku.getUid();
if (uid == 0) {
// Root 身份
} else if (uid == 2000) {
// ADB Shell 身份(权限有限)
}
七、下载与资源
- GitHub 仓库:RikkaApps/Shizuku — 27K+ Stars · Apache 2.0
- Google Play:搜索「Shizuku」即可安装
- 官方文档:shizuku.rikka.app — 完整用户手册
- Sui:如果已 Root,也可考虑 Sui(Magisk 模块版,安装即用无需额外启动)
本文基于 Shizuku 开源项目编写 · Apache 2.0 License