我們并不能在每一台設備上都輕松獲取到 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 的底層機制,導緻使用這個具有風險。請先查看 小黑屋的文檔 和 冰箱的文檔 。
還可通過臨時 root 方便激活
花式玩法:小黑屋的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。
居然比 GMS 更惱人
将 Pixel 使用一段時間後,我帶着一絲好奇打開 BBS,在兩個小時的待機中,我消耗了 4% 的電,這個成績不是很糟糕,但是也不符合 Pixel 的一貫水平。首先查看重要指标 Deep Sleep,如果在沒有充電的情況下,熄屏狀态下 Deep Sleep 占比不夠高甚至是沒有,那麼手機的待機續航成績一定不好看。BBS 同時也給出了另一個指标,就是熄屏喚醒時長,同理。其次查看第二個重要指标 Partial Wakelocks 局部喚醒鎖,這裡會顯示當前安裝 app 的喚醒鎖次數和時長,顯然三星健康的名為 PedometerLib 時長有些偏多。看來三星健康會利用手機的傳感器進行(我不需要的)計步,對步數數據進行補充。最後查看第三個重要指标 Alarms,一看三星健康居然在過去的兩小時不到裡,喚醒了 242 次。
仔細進行思索:三星健康并不直接和手表同步,隻負責導入被同步到 Watch Active Plugin 中的數據;三星健康也并不需要一直計量步數;我沒有使用三星健康的社交功能。因此三星健康并不需要常駐我的後台,我需要壓制。我首先想到的是 Android Pie 自帶的後台限制(并沒有用,我已經開了),然後使用綠色守護強行停止。但是很快強行停止會被另外的三星 app 喚醒。最後适合我的方案有黑阈的激進模式、以及各家的凍結/停用。
在優化後,我的待機續航終于回到一個相對滿意的成績
三星健康隻是一個簡單的實例,它其實也并沒有很過分,隻是它的耗電從我的角度來說太過多餘。但當越來越多的毒瘤爬滿你的 Android 手機,而系統自帶的管理功能還在「防君子不防小人」的時候,你該如何抉擇呢?面對「仰天大笑出門去,手機半路就沒電」的窘境,你是佛系一把多充電,還是毒瘤堆中驚坐起、流暢使用又一年呢?
,