使用了一段时间的 Dhizuku ,在自己的网站写了一篇[水文]( https://www.alpacabro.com/archives/use-3rd-apk-installer-with-dhizuku.html),全文如下,权当抛砖引玉,欢迎大佬们不吝赐教。
---
如果把 Android 手机比喻为一栋房屋,那么解锁 Bootloader 后,你才真正拥有了这座房屋的“所有权”而非“使用权”;而诸如 Dhizuku / Shizuku 这类免解锁玩机工具则更像是与房东“扯皮”来获得更多对房屋装修的“支配权”,虽然有种戴着脚铐跳舞的妥协感,但是在部分场景下足矣。
### 解锁玩机已经愈发困难,折腾需求依然存在
由于众所周知的原因,手机厂商对于用户的“折腾”、“玩机”行为不断限制,解锁 Bootloader 的难度与日俱增,就看看[小米 BL 解锁答题裸考]( https://www.bilibili.com/video/BV1bi421e7Y6)下面的热门评论吧:
> KernelSU 作者 weishu 在小米解锁 bootloader 考试中获得了 30 分的好成绩 你也快来试试吧!
小米“高考”果然名不虚传!
当然,忽略“房间里的大象”而直接指责手机厂商固然不妥,但是厂商的一些“流氓行径”着实令人不爽。那么如果跳过成本愈发高昂的解锁,我们是否还能实现一些玩机需求?比如绕过烦人的官方安装器,使用更方便的第三方安装器?
### Shizuku —— 巧借 adb ,获取更高的权限玩机
根据 Shizuku [官网]( https://shizuku.rikka.app/zh-hans/) 和 [GitHub 主页]( https://github.com/RikkaApps/Shizuku) 上面的介绍,开发者将其定义为“让你的应用直接使用系统 API”的工具,其最大亮点就在主页上的“支持 adb 使用”,也就是“如果你的「需要 root 的应用」只需要 adb 权限,则可以使用 Shizuku 轻松地扩大用户群体。”
虽然对于大多数玩机发烧友已经是陈词滥调,但是还是援引一下[Android 调试桥 (adb) - Android Developers]( https://developer.android.google.cn/tools/adb?hl=zh-cn)上面的定义:Android 调试桥 (`adb`) 是一种功能多样的命令行工具,可让您与设备进行通信。`adb` 命令可用于执行各种设备操作,例如安装和调试应用。`adb` 提供对 Unix shell (可用来在设备上运行各种命令)的访问权限……简单来说,adb 就是谷歌给予开发者的一个调试工具,其本意是便于开发者调试应用,不过在 Android 11 或更高版本上,您可以直接从您的设备启动无线调试并启动 Shizuku ,而无需连接到计算机。
![]( https://pic.alpacabro.com/archives/use-3rd-apk-installer-with-dhizuku/1.jpg)
正因为如此,目前已经有大量玩机应用适配了 Shizuku ,具体可以看 [timschneeb/awesome-shizuku]( https://github.com/timschneeb/awesome-shizuku) 上面整理的列表,其中就有可以包含你正在使用的部分甚至所有玩机应用,在此处不再赘述。
不过,由于对于 adb 的强依赖,虽然理论上 Shizuku 在正常开关机后依然能保持激活状态,其易用性在不同厂商的设备上也因不同厂商的“优化”而不尽相同——某些厂商的“安全管家”会把 “USB 调试”作为风险项目,在扫描时关闭;某些厂商的“USB 调试”被魔改,或在高版本 AOSP 中隐藏“无线调试”选项,或需要手动调整为“生产模式”才能使用 adb 完整权限;更有甚者,在拔掉数据线时会自动禁用 adb 权限……在我的设备上,即使允许 Shizuku 后台运行、自启动并忽略省电优化,其依然会在重新开机(不是重启或者更新)后失去激活状态,这样即使使用 Shizuku 激活第三方安装器,也免不了一遍又一遍的重新激活,外加烦人的 USB 安装风险提示对话框,与预期的流畅优雅的安装器体验相去甚远。
### Dhizuku —— 共享 DeviceOwner 权限,更稳定的“旁门左道”
不过,除了方便开发者使用 USB 调试而带来的 adb 权限,Google 为了方便企业进行企业移动管理( EMM )而引入了 DeviceOwner ,相比被频繁“关照”的 adb ,其更为冷门,在部分场景下甚至更为强大。
由于其过于冷门,为了方便后续行文并且让读者不被,还是援引一些资料补充一下背景信息:根据[设备管理概览 - Android Developers]( https://developer.android.google.cn/work/device-admin)中的内容,结合[Android Device Admin and Device Owner Explained]( https://www.esper.io/blog/android-device-admin-and-device-owner-explained)中的内容稍加整理,你会发现 Google:
- 在 2010 年,Android 在 Android 2.2 ( API 级别 8 )中推出了一项名为“Device Admin”(设备管理员)的功能。它从未真正打算用作企业设备管理解决方案,尽管 Google 确实鼓励使用它;
- 在 2014 年,Google 在 Android 5.0 Lollipop 中[推出了“Device Owner”]( https://developer.android.google.cn/about/fersions/lollipop/android-5.0?hl=zh-cn#DeviceOwner),这是 Device Admin 的替代品。Device Owner 提供了更多功能、更好的安全性,并为真正的企业设备配置系统铺平了道路;
- 在 2018 年,Android 9.0 ( API 级别 28 )发布,这是最后一个支持 Device Admin 的 Android 版本;
- 在 2019 年,Android 10.0 ( API 级别 29 )发布,这是第一个不支持设备管理员的 Android 版本;
- 在 2022 年(及以后),Device Admin 已经 4+ 年没有得到 Google 的支持。早在 2014 年,Device Owner 就被引入以取代 Device Admin ,但在 2019 年 Android 10.0 推出之前,Android 同时支持这两种功能。
如果你是从 Android 4.4 时代开始玩机的老发烧有,或许对一些应用(安全软件或是恶意软件)请求激活设备管理员权限来进行“加固”,那便是已经在 Android 10.0 中消亡的“Device Admin”(设备管理员);拜“Device Owner”的广泛支持所赐,本文的主角 Dhizuku 也能能够实现 Android 5.0 ~ 14 的广泛且一致的支持。
好的,现在忘掉那些繁琐的概念,根据 Dhizuku 的[GitHub 主页]( https://github.com/iamr0s/Dhizuku) 介绍,其“参考 Shizuku 的设计思想,分享 DeviceOwner (设备所有者) 权限给其余应用”。不过由于 Android 的一些奇妙限制,其激活过程略显繁琐。根据[激活指南]( https://github.com/iamr0s/Dhizuku/discussions/16),我使用[AndroidAccounts]( https://github.com/iamr0s/AndroidAccounts)找到了所有创建了账户的应用并且使用[雹 Hail]( https://github.com/aistra0528/Hail)进行冻结。不过在我遇到的场景下,“小米账号”和“Google Play 服务”作为系统应用无法使用 Shizuku 模式进行冻结,退出登录,在成功激活后重新登录即可;此外,在 2.8 版本中,通过 Shizuku 激活后会提示“已激活但是权限不完整”,还需要 ADB 运行额外命令才能完成激活,而在最新的 2.9-alpha 版本中,已经无需连接电脑执行额外的命令。
![]( https://pic.alpacabro.com/archives/use-3rd-apk-installer-with-dhizuku/2.jpg)
恭喜,现在不出意外的话,你已经完成了 Dhizuku 激活,此时你的手机锁屏页面和通知页面底部会多出一行小字——“此设备归贵单位所有”(英文版系统为“This device belong to your organization”)。此提示无法隐藏(可能是处于安全和隐私考虑),但是可以通过爱玩机工具箱或者[OwnDroid]( https://github.com/BinTianqi/OwnDroid)自定义“贵单位”/"your organization"的内容。顺带一提,OwnDroid 在最新的 6.0 版已经支持 Dhizuku API 激活,此后便可根据其[文档]( https://owndroid.pages.dev/zh_CN/)体验 Google 为企业管理提供的细致的权限管理。
![]( https://pic.alpacabro.com/archives/use-3rd-apk-installer-with-dhizuku/3.jpg)
Dhizuku 由于起步较晚,现阶段提供支持的应用还相对较少,除了上文提到的 雹 Hail 和 OwnDroid ,目前还有 [Amarok]( https://github.com/deltazefiro/Amarok-Hider) 支持借助 Dhizuku 隐藏应用和文件。不过我个人目前认为最好用的应用当 InstallX 莫属,从其[Telegram Channel]( https://t.me/InstallerX)下载最新版后,在“配置”选项卡新建一个配置,授权器选择“Dhizuku”,此后在设置的默认配置选择刚刚的配置,如果单击“锁定为默认安装器”提示“锁定成功”,即可体验优雅丝滑的安装体验。Dhizuku 在 2.9-alpha 也修复了重启后无法自启动的问题,因此无论是开关机、重启还是更新,Dhizuku 的激活状态依然有效。
![]( https://pic.alpacabro.com/archives/use-3rd-apk-installer-with-dhizuku/4.jpg)
### 瑕不掩瑜——免解锁方案的缺陷
如果说此方案有什么瑕疵,那当属在安装应用后会有一条通知——“……已由您的管理员安装”,此通知和提示文字一样为系统级设计,如果介意可以考虑使用第三方通知收纳软件,不属于本文讨论范围;另外根据酷安社区的讨论,尽管 DeviceOwner 冷门且通用,部分厂商还是通过系统自带的不可删除的账户、屏蔽部分 adb 命令等方式限制 Dhizuku ,而且部分厂商的系统安装器是写死在内核中,无法使用 root 以外的方式修改或绕过,本文的方法同样不适用于这类设备。
当然,此方案还有不少值得优化之处,本文就权当抛砖引玉,欢迎大佬们不吝赐教。 |
|