Matrix 精选
Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。
文章代表作者个人观点,少数派仅对标题和排版略作修改。
我们并不能在每一台设备上都轻松获取到 root 权限,这背后的原因也多种多样:设备厂商根本就没有开放 bootloader 解锁(如华为)、解锁需要遭受不可逆的功能损失(如索尼和三星)、解锁后会丢掉保修等等。
求稳并不是一件坏事,毕竟选择 Android 并非就意味着一定要选择「折腾」。但在没有 root 权限的大前提下,想要为压制毒瘤、保护隐私做些什么还有可能性吗?
答案自然是肯定的。
adb 激活的分类和典型用例
很多 Android 用户都或多或少接触过 adb(Android Debug Bridge,Android 调试桥) ,作为一个相对高级的开发和调试工具,我们可以借助 adb 进行一些平时难以接触到的隐藏操作,同样达到压制毒瘤、保护隐私的目的。而那些原本需要 root 权限才能使用的优化工具大多也在此基础上进行发挥,给出了基于 adb 的非 root 模式。
Tips:有关 adb 的信息,可以查看这份 官方文档,在 Windows 上安装 adb 也可以查看这份 教程。
以 adb 来进行隐藏操作,达到系统原本达不到的目的,实现方式其实有许多种。为了方便介绍,在这里我先简单分成以下三类:
- A类:通过 adb 启动一个 .sh 脚本进行提权,从而获得极高的权限,对 app 持有生杀大权。这一类因其难度较低,能实现的功能也比较全面,所以相对普遍。缺点是重启后就需要重新进行 adb 提权操作。
- B类:通过 adb 将一个 app 任命为「设备管理员」,为你掌管设备权限,权限也比较高。重启后不会失效,但是任命的步骤繁琐、在一些国产 ROM 上有兼容问题。
- C类:通过 adb 赋予 app 部分敏感权限,权限较低,获得的能力也极为有限。但好在步骤不繁琐、重启也不会失效。
相比 root 模式「直接授权就能用」的爽快,这三类实现方式都需要使用 adb 进行一些操作,多了些繁琐,但也少了一些风险。虽然它们各自有一些优缺点长短处,但也架不住我们三驾齐驱,共同运用、相互弥补。那些对系统自带的 app 管理不满意的朋友,可以在下面的方案中多多尝试,各取所需。
PS:图中所列的压制毒瘤的功能,从力度上来说可近似于按从小到大排列。额外功能和价格等信息可以参看此 Google Sheets 。
A类:以 Shizuku Manager 为例
提到A类激活方式,除了凶名远扬的黑阈,大家比较熟知的可能就是来自人气开发者 Rikka 的 Shizuku Manager。与 Riru 系列的思路相似,Shizuku Manager 也是「占坑后提供 API 分配授权」的典范。如果需要使用多个A类授权的 app,比如冰箱、App Ops 等,那么先激活 Shizuku Manager ,再透过它对其它 app 进行授权会是一个比较省心的方案。
方式:将手机连上电脑,输入对应指令 adb shell sh /sdcard/Android/data/moe.shizuku.privileged.api/files/start.sh
即可。其余 app 的激活指令各不相同,但一般都以 .sh 结尾,会在引导界面给出。
注意事项:不要改动手机 USB 默认选项、不要关闭开发者选项或者是 adb 调试,这些将会导致授权失效。
花式玩法:市面上有售许多「黑阈激活器」之类的小玩意,为了尝鲜我也买了一个。想在没有电脑的情况下使用,除了激活器以外还需要一个 USB-A 口电源和一条 A2C 之类的数据线,使用起来也相当繁琐。还有就是一些A类授权的应用在提权完毕后,可以代替电脑上的终端来「执行指令」,给其它A类、B类、C类进行授权。比如黑阈在完成提权后,可以激活 Shizuku Manager,甚至简单输入 reboot 来重启。
B类:以小黑屋为例
冰箱和小黑屋都是冻结类优化 app 中的翘楚,我也都付费各自体验过一阵。相比冰箱的老牌持稳,我想讲讲用心创新的小黑屋。小黑屋同时支持单独使用A类激活和B类激活,也支持使用冰箱、Shizuku Manager 等激活。付费后还能添加静默安装等实用功能。
方式:进入手机的设置——账号,将所有账号都删除,同时关闭多用户、应用双开、访客模式等功能。将手机连接到电脑,输入对应指令 adb shell dpm set-device-owner web1n.stopapp/.receiver.AdminReceiver
即可。成功后重启,将会看到「手机被小黑屋管理」(可自定义)。
注意事项:国产厂商以及三星可能修改了许多 Android 的底层机制,导致使用这个具有风险。请先查看 小黑屋的文档 和 冰箱的文档 。
花式玩法:小黑屋的B类激活可以通过 root 达成,免去了删除账号再加入的麻烦,适合有能力获取临时 root 权限、但为了保持 OTA 等原因而不长期持有权限的玩家。小黑屋的衍生品权限狗也主打控制 App Ops 。权限狗除了依靠 Shizuku Manager 激活外,还可以透过已经成为设备管理员的小黑屋激活,如此一来控制权限的功能就算重启也不会失效。
C类:以绿色守护为例
绿色守护的鼎鼎大名,我想没有哪个玩家还没听说过。就算是非 root 模式,绿色守护也能起到一定的辅助优化作用,其中个人觉得最为突出的便是嗜睡模式,强制手机在熄灭屏幕后进入 Doze ,可以起到显著节电的效果。
类似功能的还有来自国外著名内核、应用开发者 Franco 的 Naptime。BBS 是 BetterBatteryStats 的简称,主要作用是检测 CPU 的 Deep Sleep 时长、Alarms 以及 Wakelock 唤醒锁的发生情况,帮助玩家抓住幕后的唤醒凶手,可谓是神探一名。
方式:大体上来说,还是复制粘贴 adb 命令,不过这些命令的作用不是激活脚本或是任命设备管理员,而是赋予某个 app 某个敏感权限罢了。
以 绿色守护 为例,
连接手机至电脑后,依次在终端输入:
adb -d shell pm grant com.oasisfeng.greenify android.permission.WRITE_SECURE_SETTINGS
adb -d shell pm grant com.oasisfeng.greenify android.permission.DUMP
adb -d shell pm grant com.oasisfeng.greenify android.permission.READ_LOGS
adb -d shell pm grant com.oasisfeng.greenify android.permission.GET_APP_OPS_STATS
之后可以强行停止一次绿色守护再运行,确保权限生效。
Naptime、BBS 的授权过程也类似,app 的引导界面也附上了相应的 adb 指令。
花式玩法:C类激活胜在持久,重启后依旧有效,可以在A类激活失效后依旧起到一些辅助优化作用。BBS 在 Play 商店需要付费,但是却可以在 XDA 论坛 里免费获取。
实例演示,以三星健康唤醒为例
前篇文章 提到我将三星 Galaxy Watch Active 从 iPhone 换绑到了 Pixel 2 上,获得更多功能的同时,我也有了一些烦恼:与手表绑定,Pixel 安装了 4 个三星 App,我明显感觉手机的待机耗电增加。为了一探究竟,我首先派遣前面提到的追凶神探——BBS。将 Pixel 连接到电脑,输入引导界面的三条 adb 指令后,我成功地激活了 BBS。
将 Pixel 使用一段时间后,我带着一丝好奇打开 BBS,在两个小时的待机中,我消耗了 4% 的电,这个成绩不是很糟糕,但是也不符合 Pixel 的一贯水平。首先查看重要指标 Deep Sleep,如果在没有充电的情况下,熄屏状态下 Deep Sleep 占比不够高甚至是没有,那么手机的待机续航成绩一定不好看。BBS 同时也给出了另一个指标,就是熄屏唤醒时长,同理。其次查看第二个重要指标 Partial Wakelocks 局部唤醒锁,这里会显示当前安装 app 的唤醒锁次数和时长,显然三星健康的名为 PedometerLib 时长有些偏多。看来三星健康会利用手机的传感器进行(我不需要的)计步,对步数数据进行补充。最后查看第三个重要指标 Alarms,一看三星健康居然在过去的两小时不到里,唤醒了 242 次。
仔细进行思索:三星健康并不直接和手表同步,只负责导入被同步到 Watch Active Plugin 中的数据;三星健康也并不需要一直计量步数;我没有使用三星健康的社交功能。因此三星健康并不需要常驻我的后台,我需要压制。我首先想到的是 Android Pie 自带的后台限制(并没有用,我已经开了),然后使用绿色守护强行停止。但是很快强行停止会被另外的三星 app 唤醒。最后适合我的方案有黑阈的激进模式、以及各家的冻结/停用。
三星健康只是一个简单的实例,它其实也并没有很过分,只是它的耗电从我的角度来说太过多余。但当越来越多的毒瘤爬满你的 Android 手机,而系统自带的管理功能还在「防君子不防小人」的时候,你该如何抉择呢?面对「仰天大笑出门去,手机半路就没电」的窘境,你是佛系一把多充电,还是毒瘤堆中惊坐起、流畅使用又一年呢?