跳到正文
发现
移动应用开发者工具

Shizuku:Android 高级权限调用工具

让普通 App 通过 ADB 或 root 权限直接调用系统 API 的 Android 工具与授权框架。

admin
发布于 2026-10-28
浏览
4
访问
0
下载
0
版本
v13.6.0
平台
Android
该作品还没有经过官方审核。访问演示、下载或复制命令前,请自行确认来源可信。

详细介绍

项目简介

Shizuku 是一个 Android 应用与配套服务,让普通 App 在无需 root 的情况下,借助 ADB 或 root 启动的服务进程,以更高权限直接调用系统 API。

传统做法是在 su shell 里执行命令(例如用 pm enable/disable 启停组件),缺点很明显:进程反复创建导致极慢、需要解析文本输出极不可靠、能力受限于可用的命令,而且即使 ADB 权限已经足够,App 仍需要 root 才能执行。

Shizuku 换了一种思路:先由用户通过 root 或 ADB 启动 Shizuku server 进程,App 启动时同样会收到指向 Shizuku server 的 binder。Shizuku 充当中间人——接收 App 的请求,转发给 system server,再把结果回传。对 App 来说,这几乎等同于直接使用系统 API,但权限更高。

主要功能

  • 以 root 或 ADB 身份运行 Shizuku server,向 App 提供 Binder 转发能力(核心方法见 rikka.shizuku.server.ShizukuService#transactRemote 与 moe.shizuku.api.ShizukuBinderWrapper)
  • 让 App 使用系统 API 时获得比自身更高的权限,无需 root,并且避免 shell 命令方式的速度与可靠性问题
  • 通过 SystemServiceHelper.getTransactionCode 等方式定位系统服务事务码,配合 ShizukuBinderWrapper 完成跨进程调用
  • 提供 API 与示例工程,供开发者接入(见 Shizuku-API 仓库)

安装与使用

用户使用指南与下载地址:https://shizuku.rikka.app/

开发者接入所需的 API 与示例:https://github.com/RikkaApps/Shizuku-API

从 v11 之前的版本迁移可参考 API 仓库中的迁移指南,已有应用仍然可以正常工作。

自行编译 Shizuku 本体:

git clone --recurse-submodules

然后运行 gradle 任务 :manager:assembleDebug 或 :manager:assembleRelease。其中 :manager:assembleDebug 会生成可调试的 server,可以把调试器附加到 shizuku_server 上调试服务端;在 Android Studio 中需要勾选 “Run/Debug configurations” → “Always install with package manager”,以确保服务端使用最新代码。

注意事项

  • ADB 权限有限:ADB 的权限在不同系统版本上各不相同。调用 API 前可用 ShizukuService#getUid 判断 Shizuku 是否以 ADB 用户身份运行,或用 ShizukuService#checkPermission 检查服务端权限是否足够。
  • Android 9 起的隐藏 API 限制:普通应用使用隐藏 API 受限,需要另寻办法(例如 AndroidHiddenApiBypass)。
  • Android 8.0 与 ADB:服务端通过 IActivityManager#registerProcessObserver 与 IActivityManager#registerUidObserver(26+)组合来感知应用进程启动;但在 API 26 上 ADB 没有权限使用 registerUidObserver,如果需要在并非由 Activity 启动的进程中使用 Shizuku,建议通过启动一个透明 Activity 来触发 binder 发送。
  • 直接使用 transactRemote 需谨慎:不同 Android 版本 API 可能不同,android.app.IActivityManager 在 API 26 及以后为 aidl 形式,android.app.IActivityManager$Stub 只在 API 26 存在;SystemServiceHelper.getTransactionCode 也可能取不到正确的事务码(如 API 25 上 TRANSACTION_getInstalledPackages 不存在,只有 TRANSACTION_getInstalledPackages_47),使用 ShizukuBinderWrapper 方式则不会遇到该问题。
  • 许可证:代码以 Apache 2.0 授权。根据第 6 条,禁止在非展示 Shizuku 本身的场景使用 manager/src/main/res/mipmap*/ic_launcher*.png 图片;禁止把 Shizuku 作为应用名、使用 moe.shizuku.privileged.api 作为 application id,或声明 moe.shizuku.manager.permission.* 权限。

本作品整理自 GitHub 开源项目 RikkaApps/Shizuku,原作者 @RikkaApps,许可证 Apache-2.0。中文介绍由 AI 根据项目 README 整理,以原仓库为准。

更新记录

  1. v13.6.0当前版本

    支持 Android 16 QPR1;更新启动命令,可将文件复制到任意可执行位置(如 /data/local/tmp/shizuku);Android 13+ 连接可信 WLAN 时支持免 root 自启动。

评论