跳转到内容
View in the app

A better way to browse. Learn more.

彼岸论坛

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
欢迎抵达彼岸 彼岸花开 此处谁在 -彼岸论坛

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

发表于

使用了一段时间的 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 ,而无需连接到计算机。

1.jpg

正因为如此,目前已经有大量玩机应用适配了 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:

  • 在 2010 年,AndroidAndroid 2.2 ( API 级别 8 )中推出了一项名为“Device Admin”(设备管理员)的功能。它从未真正打算用作企业设备管理解决方案,尽管 Google 确实鼓励使用它;
  • 在 2014 年,Google 在 Android 5.0 Lollipop 中推出了“Device Owner”,这是 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 主页 介绍,其“参考 Shizuku 的设计思想,分享 DeviceOwner (设备所有者) 权限给其余应用”。不过由于 Android 的一些奇妙限制,其激活过程略显繁琐。根据激活指南,我使用AndroidAccounts找到了所有创建了账户的应用并且使用雹 Hail进行冻结。不过在我遇到的场景下,“小米账号”和“Google Play 服务”作为系统应用无法使用 Shizuku 模式进行冻结,退出登录,在成功激活后重新登录即可;此外,在 2.8 版本中,通过 Shizuku 激活后会提示“已激活但是权限不完整”,还需要 ADB 运行额外命令才能完成激活,而在最新的 2.9-alpha 版本中,已经无需连接电脑执行额外的命令。

2.jpg

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

3.jpg

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

4.jpg

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

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

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

Featured Replies

No posts to show

创建帐户或登录来提出意见

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.