Shizuku 免 Root 调用系统 API:从 ADB 到无线调试的完整上手指南

Shizuku 免 Root 调用系统 API:从 ADB 到无线调试的完整上手指南

【免费下载链接】Shizuku Using system APIs directly with adb/root privileges from normal apps through a Java process started with app_process. 【免费下载链接】Shizuku 项目地址: https://gitcode.com/gh_mirrors/sh/Shizuku

想让 App 直接调系统 API,传统做法是在 su shell 里跑命令,慢,而且不好用。Shizuku 换了个思路:用 ADB 或 Root 先起一个 Shizuku server 进程,App 通过它把请求转发到 system server,再拿回结果,对 App 来说跟直接调 API 几乎没区别。它解决的就是"普通 App 拿不到系统级权限"这件事。

它和 su shell 的差别

  • 走 binder IPC,不靠解析命令的文本输出
  • 不依赖 su,ADB 权限够就能跑
  • 单次 binder 调用替代 su shell 那种多次建进程,快一个量级
  • 能力受限于 ADB 实际拿到的权限,不是想要什么有什么
  • 得先在设备上起一次 server 进程,之后 App 才用得上

最短路径:ADB 启动 Shizuku 快速上手

推荐先从 USB ADB 跑通,最省事。

  1. 手机开开发者选项,打开 USB 调试
  2. adb devices 确认设备已连上
  3. 装好 Shizuku,打开 App
  4. 点首页"通过 ADB 启动",它会生成一条 adb shell /设备路径/libshizuku.so 命令
  5. 在弹出的对话框里点复制,贴到电脑终端执行
  6. 回到 App,状态栏显示 server 运行中,就跑通了
adb devices

替代路径与进阶场景怎么选

已有 Root

设备已解锁的话直接选 Root 启动,server 以 uid 0 跑,权限比 ADB 全,也不占 USB 口。server 是一次性进程,手机重启后要手动再启动一次。

不想连电脑

Android 11 及以上走无线调试:开开发者选项里的"无线调试",在 App 里选配对并输入配对码,再 adb connect 设备 IP 即可,省去数据线。11 以下得先用 USB 跑一次 adb tcpip 转成无线。完整分支逻辑见 manager 源码。

容易踩的 3 个坑

  • ADB 权限有限 — 权限随系统版本变化,不是全量 — 调 API 前先用 ShizukuService#checkPermission 确认 server 够不够
  • Android 9+ 隐藏 API 受限 — 普通 App 默认碰不了 hidden API — 换方案,比如 AndroidHiddenApiBypass
  • Android 8.0 用 ADB 时 binder 可能收不到 — ADB 缺 registerUidObserver 权限 — 起一个透明 Activity 触发发 binder

适配范围与已知边界

  • 最低 Android 7.0(API 24),更老的版本不支持
  • ADB 模式权限有限、各版本差异大;Root 模式权限更全
  • Android 9 起 hidden API 使用受限,需要额外处理

机制细节和开发者注意事项见 README。

写在最后

如果你的目标是让 App 免 Root 拿到系统级调用能力,先按 ADB 路径把 server 跑起来、确认状态栏变绿,再谈具体功能。跑通之后,server 源码 里的 transactRemote 是理解整套转发机制最好的入口。

【免费下载链接】Shizuku Using system APIs directly with adb/root privileges from normal apps through a Java process started with app_process. 【免费下载链接】Shizuku 项目地址: https://gitcode.com/gh_mirrors/sh/Shizuku

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值