Dhizuku,更优雅地免解锁使用第三方安装器

68 天前
 alpacabro

使用了一段时间的 Dhizuku ,在自己的网站写了一篇水文,全文如下,权当抛砖引玉,欢迎大佬们不吝赐教。


如果把 Android 手机比喻为一栋房屋,那么解锁 Bootloader 后,你才真正拥有了这座房屋的“所有权”而非“使用权”;而诸如 Dhizuku / Shizuku 这类免解锁玩机工具则更像是与房东“扯皮”来获得更多对房屋装修的“支配权”,虽然有种戴着脚铐跳舞的妥协感,但是在部分场景下足矣。

解锁玩机已经愈发困难,折腾需求依然存在

由于众所周知的原因,手机厂商对于用户的“折腾”、“玩机”行为不断限制,解锁 Bootloader 的难度与日俱增,就看看小米 BL 解锁答题裸考下面的热门评论吧:

KernelSU 作者 weishu 在小米解锁 bootloader 考试中获得了 30 分的好成绩 你也快来试试吧!

小米“高考”果然名不虚传!

当然,忽略“房间里的大象”而直接指责手机厂商固然不妥,但是厂商的一些“流氓行径”着实令人不爽。那么如果跳过成本愈发高昂的解锁,我们是否还能实现一些玩机需求?比如绕过烦人的官方安装器,使用更方便的第三方安装器?

Shizuku —— 巧借 adb ,获取更高的权限玩机

根据 Shizuku 官网GitHub 主页 上面的介绍,开发者将其定义为“让你的应用直接使用系统 API”的工具,其最大亮点就在主页上的“支持 adb 使用”,也就是“如果你的「需要 root 的应用」只需要 adb 权限,则可以使用 Shizuku 轻松地扩大用户群体。”

虽然对于大多数玩机发烧友已经是陈词滥调,但是还是援引一下Android 调试桥 (adb) - Android Developers上面的定义:Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作,例如安装和调试应用。adb 提供对 Unix shell (可用来在设备上运行各种命令)的访问权限……简单来说,adb 就是谷歌给予开发者的一个调试工具,其本意是便于开发者调试应用,不过在 Android 11 或更高版本上,您可以直接从您的设备启动无线调试并启动 Shizuku ,而无需连接到计算机。

正因为如此,目前已经有大量玩机应用适配了 Shizuku ,具体可以看 timschneeb/awesome-shizuku 上面整理的列表,其中就有可以包含你正在使用的部分甚至所有玩机应用,在此处不再赘述。

不过,由于对于 adb 的强依赖,虽然理论上 Shizuku 在正常开关机后依然能保持激活状态,其易用性在不同厂商的设备上也因不同厂商的“优化”而不尽相同——某些厂商的“安全管家”会把 “USB 调试”作为风险项目,在扫描时关闭;某些厂商的“USB 调试”被魔改,或在高版本 AOSP 中隐藏“无线调试”选项,或需要手动调整为“生产模式”才能使用 adb 完整权限;更有甚者,在拔掉数据线时会自动禁用 adb 权限……在我的设备上,即使允许 Shizuku 后台运行、自启动并忽略省电优化,其依然会在重新开机(不是重启或者更新)后失去激活状态,这样即使使用 Shizuku 激活第三方安装器,也免不了一遍又一遍的重新激活,外加烦人的 USB 安装风险提示对话框,与预期的流畅优雅的安装器体验相去甚远。

Dhizuku —— 共享 DeviceOwner 权限,更稳定的“旁门左道”

不过,除了方便开发者使用 USB 调试而带来的 adb 权限,Google 为了方便企业进行企业移动管理( EMM )而引入了 DeviceOwner ,相比被频繁“关照”的 adb ,其更为冷门,在部分场景下甚至更为强大。

由于其过于冷门,为了方便后续行文并且让读者不被,还是援引一些资料补充一下背景信息:根据设备管理概览 - Android Developers中的内容,结合Android Device Admin and Device Owner Explained中的内容稍加整理,你会发现 Google:

如果你是从 Android 4.4 时代开始玩机的老发烧有,或许对一些应用(安全软件或是恶意软件)请求激活设备管理员权限来进行“加固”,那便是已经在 Android 10.0 中消亡的“Device Admin”(设备管理员);拜“Device Owner”的广泛支持所赐,本文的主角 Dhizuku 也能能够实现 Android 5.0 ~ 14 的广泛且一致的支持。

好的,现在忘掉那些繁琐的概念,根据 Dhizuku 的GitHub 主页 介绍,其“参考 Shizuku 的设计思想,分享 DeviceOwner (设备所有者) 权限给其余应用”。不过由于 Android 的一些奇妙限制,其激活过程略显繁琐。根据激活指南,我使用AndroidAccounts找到了所有创建了账户的应用并且使用雹 Hail进行冻结。不过在我遇到的场景下,“小米账号”和“Google Play 服务”作为系统应用无法使用 Shizuku 模式进行冻结,退出登录,在成功激活后重新登录即可;此外,在 2.8 版本中,通过 Shizuku 激活后会提示“已激活但是权限不完整”,还需要 ADB 运行额外命令才能完成激活,而在最新的 2.9-alpha 版本中,已经无需连接电脑执行额外的命令。

恭喜,现在不出意外的话,你已经完成了 Dhizuku 激活,此时你的手机锁屏页面和通知页面底部会多出一行小字——“此设备归贵单位所有”(英文版系统为“This device belong to your organization”)。此提示无法隐藏(可能是处于安全和隐私考虑),但是可以通过爱玩机工具箱或者OwnDroid自定义“贵单位”/"your organization"的内容。顺带一提,OwnDroid 在最新的 6.0 版已经支持 Dhizuku API 激活,此后便可根据其文档体验 Google 为企业管理提供的细致的权限管理。

Dhizuku 由于起步较晚,现阶段提供支持的应用还相对较少,除了上文提到的 雹 Hail 和 OwnDroid ,目前还有 Amarok 支持借助 Dhizuku 隐藏应用和文件。不过我个人目前认为最好用的应用当 InstallX 莫属,从其Telegram Channel下载最新版后,在“配置”选项卡新建一个配置,授权器选择“Dhizuku”,此后在设置的默认配置选择刚刚的配置,如果单击“锁定为默认安装器”提示“锁定成功”,即可体验优雅丝滑的安装体验。Dhizuku 在 2.9-alpha 也修复了重启后无法自启动的问题,因此无论是开关机、重启还是更新,Dhizuku 的激活状态依然有效。

瑕不掩瑜——免解锁方案的缺陷

如果说此方案有什么瑕疵,那当属在安装应用后会有一条通知——“……已由您的管理员安装”,此通知和提示文字一样为系统级设计,如果介意可以考虑使用第三方通知收纳软件,不属于本文讨论范围;另外根据酷安社区的讨论,尽管 DeviceOwner 冷门且通用,部分厂商还是通过系统自带的不可删除的账户、屏蔽部分 adb 命令等方式限制 Dhizuku ,而且部分厂商的系统安装器是写死在内核中,无法使用 root 以外的方式修改或绕过,本文的方法同样不适用于这类设备。

当然,此方案还有不少值得优化之处,本文就权当抛砖引玉,欢迎大佬们不吝赐教。

4036 次点击
所在节点    Android
14 条回复
jjxtrotter
68 天前
感谢分享 已收藏
stefwoo
67 天前
感谢感谢,学习了一下,有关键词就很不错了。
hicdn
67 天前
如果能用 Dhizuku 给 shiziku 授权就完美了
alpacabro
67 天前
@hicdn 忘记在文章里写了,有老哥尝试过使用 LSPatch 的 DAX 功能可以让部分应用强行支持 Dhizuku (比如 6.0 之前的 OwnDroid 、冰箱),但是前提是其和 Dhizuku 一样使用的是 DeviceOwner ;而 Shizuku 在原理上就必须要用到 ADB ,目前比较优雅的保活方案还是自制类似于“黑域激活器”的一类硬件或者干脆不关机……
ysxb1145
67 天前
root 也不是完全取得所有权,因为解锁会导致 tee 损坏,就好比房东把你拉到一个失信名单然后银行等 APP 拒绝服务。其实 root 有一个不能被取代的功能就是管理根目录文件,尤其是微信这种将数据存储在 data/data 来防止清理并为监管部门存储数据的,由于没有 root 无法访问文件夹而无法清理,卸载重装会丢失聊天记录和登录状态,这种情况就需要 root 清理微信垃圾。
junyee
67 天前
虽然 shizuku 应用多,但是在国内魔改系统上容易水土不服。
仅仅是冻结应用为主,dhizuku + hail 确实是不错的选择,已经使用一年多了。

hail 开源要支持,但是效果确实不如收费的冰箱。
TrembleBeforeMe
67 天前
@ysxb1145 小米系的解锁后不会 TEE 假死
colorbeta
67 天前
安装器也可以试试 PI 了
alpacabro
67 天前
@colorbeta 下载下来看了下,目前只支持 Root/Shizuku 工作模式,并且根据两个已经关闭的 issue ,开发者暂时不计划支持 dhizuku ,有点遗憾
Zaden
67 天前
好,激活了。op 能不能介绍一些好用的支持 Dhizuku 的 app
alpacabro
67 天前
@Zaden Dhizuku 目前还处于很初步的阶段,如果不算上需要 DAX 这种方式激活的 APP ,目前原生支持的只有 InstallX 、OwnDroid 、雹 Hail 和 Amarok 这几个 APP……
mpky
57 天前
小心用 Dhizuku 修改后重启进不了系统~~~~~
ren930480304
22 天前
请教大佬两个问题,前提是基于 vivo 系的 originOS4 系统的:
1. 通过 Dhizuku 授权 installerX 后,无法锁定默认安装器,之前找到的极少数资料提到过通过 LSPatch 安装模块之类的,但是由于资料太少,我没有成功;
2. 激活 Dhizuku 后,originOS4 的应用分身会无法使用,请问有没有其他三方双开方案可以使用呢?
alpacabro
21 天前
@ren930480304 不是大佬,只是来交流一些使用经验。
很遗憾,您使用的设备制造商可能正是我提到的“某些\部分厂商”。根据酷安社区 Dhizuku 话题下的讨论,vivo 系的 ROM 可能对内核进行了较激进的修改,其行为与 AOSP 有所不同,因此建议您在操作前务必备份数据。由于我手头没有合适的设备,暂时无法提供更多帮助,抱歉。
为了理解 Dhizuku 的设计,我查阅了设备管理员和设备所有者的相关资料。作为企业设备管理方案,它的设计较为复杂,而目前市面上的多开方案,除了简单粗暴的虚拟机之外,原理上多少会涉及”工作资料“等功能。我刚查阅了部分资料,暂时还没有完全理清思路。目前酷安上已经有人提出了取巧的共存方案,等我验证后会写篇博客再讨论。感谢您的反馈,也祝您找到适合自己的玩机方案。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1069736

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX