在开发需要 root 用户的应用程序时,最常用的方法是在 su shell 中运行一些命令。例如,有一个应用程序使用 pm 启用/禁用命令来启用/禁用组件。
这种方法有很大的缺点:
极其缓慢(创建多个进程)
需要处理文本(超级不可靠)
这种可能性仅限于可用的命令
即使 ADB 有足够的权限,应用程序也需要 root 权限才能运行
阿雯使用了一种完全不同的方式。请参阅下面的详细描述。
应用指南:
应用截图
新版特性
- Fix RequestPermissionActivity takes forever to show
- Fix crash under Arabic language since some user submitted wrong translation string
Full Changelog: v13.2.0...v13.2.1
12.6.2 (2022-04-25)
– 改进有关 adb 配对的提示文字
12.6.0 (2022-02-19)
– 在 Android 13 DP1 上工作(使用 Shizuku 的应用可能也需要更改以适应系统变化)
12.5.0 (2022-02-11)
– 使用 Material Design 3 以达到和 Android 12 系统一样的观感(当然要是你不是 Android 12 或是不是原生系统那就不一致了)
– 修复处理 SIGWINCH 信号,rish 现在可以正常地相应窗口大小变化(需要再次导出 rish 的文件以更新)
– 改善了对无线调试的说明,增加了对于网络访问被限制的说明
12.4.3 (2021-11-01)
– 修复了配对成功后可能再次显示“正在搜索”通知的问题
– 改善了对无线调试的说明
12.4.2 (2021-10-27)
– 添加通知被禁用的提示
– 添加 MIUI 可能需要使用原生样式通知的提示
12.4.0 (2021-10-24)
– 支持通过通知输入无线调试配对码
– 修复 UserSerive 无法在 Android 6.0 上启动的问题
12.3.0 (2021-09-07)
– 修复使用 UserSerive 在部分设备上可能导致 Shizuku 服务停止运行的问题
12.2.0 (2021-08-19)
– Shizuku API 12
– 支持交互式 shell
– 使用新的交互式 shell 工具需要再次执行“导出文件”写入新文件。
– 新工具将所有参数传递给远程的 /system/bin/sh,因此旧工具中的参数都没了。例如,如果要运行命令并退出,应该使用 -c。
– 要将环境变量传递给远程,请将环境变量 RISH_PRESERVE_ENV 设置为 1(如果 Shizuku 使用 adb 运行,则默认值为 0,使用 root 运行时为 1)。
– 阅读 https://github.com/RikkaApps/Shizuku-API/blob/master/rish/README.md 了解更多。
11.7.0 (2021/06/30):
– 修复 UserService 从 Android 12 Beta 1 起不工作
11.6.1 (2021/05/30):
– 应该修好了部分人会出现的无法启动问题
11.6.0 (2021/05/25):
– 应该修好了部分人会出现的应用列表空白问题
11.5.0 (2021/05/19):
– 在 Android 12 Beta 1 上工作
11.4.1 (2021/05/05):
– 阻止 ? MIUI 的“强制深色模式”弄坏自己的主题
MIUI 有自己的“强制深色主题”,但是似乎即使应用正确地提供了深色主题,它也会继续起作用,从而把颜色改乱。
11.4.0 (2021/04/30):
– 尝试修复随机的应用显示在应用列表的问题(这是因为旧版本只记录 uid,如果 Shizuku 未在运行时系统复用了 uid,已记录的 uid 就会指向错误的应用;删除已有记录需要自行撤销权限一次)
– 只有曾经请求了权限的应用会显示在应用列表中(旧版本中,所有属于同一 uid 的应用都会被显示,例如 Termux 和 Termux:Styling;删除已有记录需要自行撤销权限一次)
– 为 Android TV 添加可见的入口(#105)
– 添加适用于 Android TV 的图标
– 让手表设备默认使用黑色主题(#107)
11.3.1 (2021/03/29):
– 修了一个可能的爆炸
– 使用自己编译的 libcxx 以避免 C++ 异常的引入造成体积增加
11.3.0 (2021/03/21):
– 增加命令行工具,可在任意终端应用中通过 Shizuku 执行指令
11.2.2 (2021/02/22):
– 对于 adb,在破烂 MIUI Android 11 上退回到使用 /data/user_de,这是因为破烂 MIUI 的 adb 竟然不能访问 Android/data
11.2.1 (2021/02/21):
– 可在 Android 12 工作(所有 Android 版本的有线 adb 用户请注意,指令发生了变化)
– 将服务的 dex 合并到本体
– 修了卸载后退出服务并没有起效
11.1.2 (2021/01/28):
– 无趣的小改动(划掉
11.1.1 (2021/01/24):
– 可在安装在主用户的 Shizuku 管理安装在其他用户中的使用 Shizuku 的应用
– 对于通过无线调试启动,在 Android 11 优先使用新增的方式
11.0.0 (2021/01/18):
– 主版本号现在跟随 Shizuku API 版本
– Shizuku API v11(参见 https://github.com/RikkaApps/Shizuku-API)
– 向 root 用户推荐 Sui(https://github.com/RikkaApps/Sui)
5.0.0:
* 增加 UserService 功能(请前往 GitHub 查看最近的提交和样例)
* 导入来自用户的翻译
* 当 Shizuku 被卸载时自动停止运行在 root/adb 的进程
* 跟随一个 Android 11 beta 3 的改动
4.2.2:
* 如果有 root 就把 root 启动放到第一位
4.2.1:
* 修了一个有关 root 启动的问题
* (root 用户)为一些高度定制系统的用户提供用于在开机时自动启动 Shizuku 的 Magisk 模块,再也不用担心辣鸡系统在作妖
* (root 用户)可关闭开机启动,关闭后重启可规避疑似的一加加卸载时爆炸(?),但是如果没人提供 log,这个“问题”永远不可能被解决/规避
4.2.0:
* 修了一个小小的启动时问题
* 加入 ShizukuSystemProperties
4.1.1:
* 修了在低版本系统上无法启动的问题
4.1.0:
* 使用无线调试启动时不再需要手动填写端口号
4.0.1:
* 修了开机启动(针对已 root 设备)在上个版本坏掉
4.0.0:
* 支持通过无线调试启动(包括来自 Android 11 的 adb over TLS)
* 可从菜单停止 Shizuku(防止有人想在已有运行在 root 上的 Shizuku 时通过 adb 再次启动)
* 将启动脚本移动到 /data
* 改变了图标
* 最低支持系统版本提升到 Android 6.0
* 不再支持旧式 Shizuku
3.6.1:
* 对支持现代 Shizuku 的应用请求旧式 Shizuku 的情况给予正确的提示
3.6.0:
* 支持 Android 11(但是使用者应用可能尚未支持)
* 修复与 newProcess 有关的 bug
* 由于系统变化,旧式 Shizuku 无法在 Android 10 以上运行,仅支持旧式 Shizuku 的应用将被隐藏
3.5.0:
* 使用 root 启动时,如无必要不再会使用 shell 的 SELinux context
* 一些 UI 变化
3.4.5:
* 一些 UI 变化(顺便还换了文档网站地址(小声
3.4.4:
* 修复在一个罕见情况无法启动
* 加回直接在应用内复制 adb 指令
3.4.2:
* 提供全新的文档
* 修复已授权应用数量
* 改进平板 UI
3.4.1:
* MD2 UI 更新
* 可选是否启动旧式(v2)服务
* 重命名应用名称为“Shizuku”
* adb 权限受限时显示提示(主要为了 MIUI 用户)
应用简介
Shizuku 是一个开源项目,你可以在 https://github.com/RikkaApps/Shizuku 找到源代码和更多详细信息。
Shizuku 的诞生主要有两大目的:
提供一个方便地使用系统 API 的方式。
为部分只需要 adb 权限的应用开发提供便利。