V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
alpacabro
V2EX  ›  Android

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

  •  2
     
  •   alpacabro · 16 天前 · 2551 次点击

    使用了一段时间的 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:

    • 在 2010 年,Android 在 Android 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 版本中,已经无需连接电脑执行额外的命令。

    恭喜,现在不出意外的话,你已经完成了 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 以外的方式修改或绕过,本文的方法同样不适用于这类设备。

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

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

    hail 开源要支持,但是效果确实不如收费的冰箱。
    TrembleBeforeMe
        7
    TrembleBeforeMe  
       15 天前
    @ysxb1145 小米系的解锁后不会 TEE 假死
    colorbeta
        8
    colorbeta  
       15 天前
    安装器也可以试试 PI 了
    alpacabro
        9
    alpacabro  
    OP
       15 天前
    @colorbeta 下载下来看了下,目前只支持 Root/Shizuku 工作模式,并且根据两个已经关闭的 issue ,开发者暂时不计划支持 dhizuku ,有点遗憾
    Zaden
        10
    Zaden  
       15 天前
    好,激活了。op 能不能介绍一些好用的支持 Dhizuku 的 app
    alpacabro
        11
    alpacabro  
    OP
       15 天前
    @Zaden Dhizuku 目前还处于很初步的阶段,如果不算上需要 DAX 这种方式激活的 APP ,目前原生支持的只有 InstallX 、OwnDroid 、雹 Hail 和 Amarok 这几个 APP……
    mpky
        12
    mpky  
       5 天前
    小心用 Dhizuku 修改后重启进不了系统~~~~~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5668 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 01:51 · PVG 09:51 · LAX 18:51 · JFK 21:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.