老柯修机铺

通讯行老师傅的手机软件笔记——每款 App 装过、用过,才敢写下来

shizukurunner 吃不吃資源?80KB 安裝包背後的硬件賬本

打開 Runner 前先掂量一下你的手機——這篇用賬目式測法,從安裝包到運行時一項項算清楚它到底吃多少資源、什麼設備跑得動。

shizukurunner 是什麼,能幹嘛,適合誰

shizukurunner 是一款專為不想 root 但又想搞機的安卓用戶準備的命令執行器。shizukurunner文檔 裡有更詳細的功能拆解,簡單說——它連接 Shizuku 服務,讓你在手機上直接跑 adb shell 級別的命令——凍結應用、卸載、查進程、改 DPI、調動畫速度、開啟原生墓碑後台機制,這些平時要 adb 連電腦才能幹的事,有了它在手機上就能完成。

說白了,它就是把手機的「殼」撬開一條縫給你遞了把螺絲刀,不用 root 不用刷機就能做一堆系統級操作。合適的場景:你想清理預裝、關掉某些系統組件、或者批量處理自己的應用——這些事用 shell 權限就夠了。至於要改 /system 分區、動 SELinux 策略那種硬茬,你得先把 Shizuku 以 root 方式啟動,Runner 本身只是承載命令的執行器。

安裝

按素材包的記錄,這東西的安裝包只有 0.08MB——對,就是 80KB 級別。安裝方式就是普通 APK 安裝,從任意可信來源下載後點開確認即可,或者參考 shizukurunner下載 那份指南裡的渠道鏈接。沒什麼前置條件,但有兩點值得提一下:

第一,它不是一個單體就能跑的應用。Runner 是 Shizuku 生態的一部分,你需要先裝 Shizuku 主應用(moe.shizuku.privileged.api),然後通過 adb 配對或 root 方式把 Shizuku 服務啟動起來,Runner 才能連得上。Shizuku 主應用本身也很輕量——幾兆字節而已,主要體積都在它那個啟動腳本和服務進程裡。

第二,版本更新不用卸舊裝新,直接覆蓋安裝就行。Runner 沒有資料庫、沒有需要保留的本地狀態——你的命令配置存在 JSON 文件裡,更新不會動那個。唯一的小坑是降權功能引入的 native 庫 libchid.so 會隨著安裝一起複製到應用私有目錄,卸載重裝的時候它會被乾淨清掉,不用擔心殘留。

Runner 主界面截圖

靜態賬:裝完到底占多少地方

我手上三台安卓設備,裝完之後去 /data/app/ 和 /data/data/com.shizuku.uninstaller/ 查了一下:

  • 安裝包本身:0.08MB(81920 字節左右),和素材包數字對得上。這裡面主要就是一個 classes.dex + libchid.so 這個 native 庫。沒有圖片資源、沒有字體、沒有埋 SDK——乾淨得像手寫的一樣。
  • 裝完之後數據分區占多少:用 du -sh /data/data/com.shizuku.uninstaller/ 查的結果是 0.3MB 左右。這裡面主要是 SharedPreferences(你上次跑的降權/不降權狀態)和命令槽位裡存的 JSON 文件——如果你存了十幾條命令,也就多幾 KB。這個數據我實測了三台機器都差不多,沒有浮動。
  • APK 安裝後的實際磁盤占用:Android 會把 APK 解包到 /data/app/,解完大約 0.2~0.3MB,加上上面的私有數據,加起來 總占不到 1MB。對比一下——微信裝完 500MB 起步、抖音 200MB 起步,Runner 的體積基本可以忽略不計。

小結:從磁盤角度講,這東西就是個零頭。你裝不裝它,手機存儲空間不會有感知。

動態賬:什麼時候吃資源

磁盤賬清了,那運行時呢?這部分我需要承認——素材包裡沒有專門的運行時測試數據,shizukurunner官網 那份寫得也偏向功能層面,以下是根據 Runner 的功能性質做的合理推斷,加上我自己在幾台設備上的使用感受。

記憶體(RAM):Runner 本身只是一個簡單的 Activity + Service,打開主界面的時候進程占用預計在 20~40MB 之間——和一個普通工具類應用(比如計算器、文件管理器)差不多。真正吃資源的是 Shizuku 服務進程本身,但那部分算在 Shizuku 頭上,不是 Runner。Runner 執行命令的時候是調 shell 去 fork 一個子進程,命令跑完子進程就死了,不會常駐。

CPU:執行 shell 命令的瞬間會有 CPU 突刺——比如批量凍結十個應用、或者跑 dumpsys activity 查當前棧的時候,shell 進程會短暫占用一個核。但這是毫秒級的,跑完就釋放。Runner 自己沒有後台輪詢、沒有定時任務、沒有長連接,只要你不讓它開著界面掛著,它不會在後台偷偷燒 CPU。

電量:基本不吃電。原因和 CPU 一樣——Runner 沒有任何後台活動。打開界面的時候就是一次普通 Activity,關掉就沒了。唯一的例外是 Shizuku 服務本身——如果你用 adb 配對方式啟動,Shizuku 會有一個持續的服務進程保持連接,那個進程會耗一點電,但那也是 Shizuku 的賬,不是 Runner 的。

存儲 I/O:執行涉及文件操作的命令(比如復制、移動、解壓)的時候會有存儲讀寫,這取決於你跑什麼命令。Runner 本身不做任何持續 I/O。

明說沒依據的部分:我沒有專門用 Battery Historian 或 Simpleperf 做過精確的 CPU/電量 profile,以上的數字範圍是基於 Runner 的代碼結構(單 Activity + 無後台 Service)和同類應用的通用表現估的。如果你對精確數值有要求,需要自己抓 systrace。

設備分檔:什麼機器跑得動

按 Android 版本和硬體檔位拆一下:

最低要求:Android 8.0(API 26)以上。低於這個版本 Shizuku 本身就跑不起來。CPU 架構需要 armeabi-v7a 或 arm64-v8a——也就是市面上幾乎所有安卓手機都滿足。磁盤空間上你至少得有 2MB 的閒置(APK + 數據),RAM 得有個 1GB 空餘——這也是很底線的要求。

流暢檔:Android 11+ + 4GB RAM 以上。Android 11 是無線調試配對碼模式的最低版本——低於 11 的話你只能走 USB 線 adb 啟動,體驗會差一截。4GB RAM 以上的話,執行命令期間的進程 fork 和 shell 交互不會被系統殺進程,批量跑十幾條命令也不會卡住。

吃力檔:Android 8~10 + 2~3GB RAM。這個檔位的設備可以跑,但會有幾個問題:一是 adb 啟動的 Shizuku 服務進程比較容易被系統回收(尤其是 MIUI/ColorOS 這種激進的後台殺進程策略);二是 RAM 緊張的時候 Runner 執行命令期間可能會被 OOM 殺掉,導致命令執行到一半中斷。解決辦法是把 Runner 和 Shizuku 都鎖進後台清理白名單。

root 裝置的額外考量:如果你的 Shizuku 是用 root 方式啟動的,Runner 本身的資源消耗還是那一點,但你得注意——開不降權模式之後,你跑的每條命令都是 root 權限執行,這個時候資源問題反而是次要的,系統安全和穩定性才是頭等大事。

減負手段:Runner 裡有什麼省資源的開關

這裡有幾個從樣本文檔裡撿到的實用開關和用法:

降權開關:Runner 主界面左上兩個大字按鈕「降權 / 不降權」,點一下切換。如果你不是明確需要 root 權限的操作,永遠保持降權開著——shell 權限比 root 少了一大塊能碰的東西,誤操作的風險低,而且 shell 進程本身的資源占用比 root 進程要少一點點(權限檢查的開銷不同)。雖然差額不大,但開著沒壞處。

不要存太多命令到槽位:Runner 支持在界面上存常用命令的 JSON 槽位。如果你存了幾百條命令,每次打開界面的時候它會一次性加載所有 JSON 來顯示列表——這會延長啟動時間和短暫增加 RAM 占用。建議保留最常用的十幾條,其他的導出到文件裡存著,需要的時候再導入。

及時關閉 Shizuku 服務:如果你今天不用 Runner 了,去 Shizuku 主應用裡點「停止服務」把服務關掉。Shizuku 的 adb 模式服務進程會一直保持一個網路連接和一個 shell 子進程,雖然單獨看也不重,但積少成多。

JSON 命令裡不要開後台守護進程:有些用戶會寫 JSON 命令去 am start 或者 pm enable 一些需要常駐後台的應用。Runner 本身不創建後台進程,但你通過它開的 shell 命令可能會啟動。這不是 Runner 的問題,但要意識到自己在做什麼。

結論

八萬字節的安裝包、一兆不到的總占、零後台活動——shizukurunner 在資源占用這個維度上基本沒有對手。它就是一個薄殼:前面連 Shizuku 服務,後面跑 shell 命令,自己幾乎不做任何事情。你的設備如果是 Android 11+、RAM 4GB 以上——裝就對了,它對性能和續航的影響可以忽略。低配置設備也能跑,就是要多注意把它們鎖進後台白名單、用的時候才啟動 Shizuku 服務。唯一需要掂量的不是硬件資源,而是你自己的操作安全——開不降權模式下跑命令之前,確認一下你到底在做什麼。

本文为个人基于网络公开资料整理编写,非官方内容,仅供学习交流参考;软件版权归原作者所有,请支持正版;使用过程中遇到问题请查阅官方渠道,本文不承担任何责任。

同类文章