ByteScope

pm trim-caches

唯讀

要求系統一直丟掉快取檔案,直到剩下你指定的空間為止。

指令
adb shell pm trim-caches
指令
套件(pm)
風險
唯讀

語法

pm trim-caches <free space target>[K|M|G]

旗標與參數

token意義
<target>希望留下的空間。後綴是 1024 的次方,所以 `512G` 是 512 GiB,比任何手機都大——這是「把你願意丟的都丟掉」的寫法。

範例

輸出怎麼讀

什麼都沒有。成功就是沒有輸出:它等平台做完,然後什麼都不印就返回,而且它不會回報釋放了多少——連「有沒有釋放到東西」都不會說。唯一誠實的「幫你空出 N MB」是用 `df` 或 `dumpsys diskstats` 前後各量一次。只要有任何輸出就是拒絕:後綴不合法、少了數字,或這個版本沒把所需權限給 shell 而拋出例外。

輸出欄位

欄位意義
(no output)trim 執行了。釋放多少不會回報。
Invalid suffix: …大小參數看不懂。
Error: expected number at: …大小參數不是數字。

版本與廠商注意事項

這個我們有 UI

Android Storage Analyzer 會透過 USB 執行這個指令並解析回應——只要 Chromium 系瀏覽器,不必安裝 SDK,也不會上傳任何東西。

開啟 Android Storage Analyzer

相關指令

和 pm trim-caches 會在同一次作業裡出現的指令。

指令做什麼
pm clear清除某個 app 的資料——在 Android 13 之後也可以只清快取。
dumpsys diskstats每個分割區的剩餘空間、一次磁碟寫入延遲的實測,以及一份快取起來的各 app 空間用量。
df回報每個已掛載檔案系統的剩餘與已用空間。
du回報一棵目錄樹占掉多少磁碟空間。

其他套件(pm)指令

指令做什麼
pm list packages列出已安裝的套件,也能一次帶出 APK 路徑、uid、版本碼與安裝來源。
pm path印出組成某個已安裝套件的 APK 檔絕對路徑。
pm uninstall移除套件,或只針對一個 Android 使用者移除——這是不用 root 也能處理掉預載 app 的方法。
pm disable-user在不移除的前提下,把套件對某個 Android 使用者關掉——比解除安裝安全,而且確定能還原。
pm install安裝一個已經在裝置上的 APK,也就是 `adb install` 底層在做的事。
pm install-create開一個安裝工作階段,讓 base 與它的 split 作為一個不可分割的整體一起安裝。

這些行為是在撰寫 Web ADB 工具背後的解析程式時,對照 AOSP、toybox 與核心原始碼查證的。真的會因 Android 版本或廠牌而異的地方,這一頁會直接說明,而不是給你一個在半數手機上都是錯的數字。

常見問題

adb shell 指令要怎麼執行?

在手機上打開開發者選項與 USB 除錯、接上線,然後從裝了 platform-tools 的機器執行 `adb shell <指令>`——或者只執行 `adb shell` 取得互動提示字元,再直接打指令、不用前綴。如果指令會輸出二進位資料(例如截圖),請改用 `adb exec-out` 而不是 `adb shell`:單純的 shell 服務會配一個終端機,而它會改寫換行位元組並毀掉資料。

adb shell 指令需要 root 嗎?

這份參考裡的都不用。它們以 `shell` 使用者身分執行,可以針對自己的 Android 使用者管理套件、讀取大多數 `dumpsys` 服務、寫入設定提供者、注入輸入,以及讀取共用儲存空間。需要 root 的是這份參考刻意避開的事:讀取其他 app 的私有資料(除了對可除錯版本使用 `run-as`)、寫入系統分割區,或直接讀 `/data/anr`。

為什麼在我的手機上輸出看起來不一樣?

不是 Android 版本就是廠商。有些旗標與欄位是從特定版本才有的,那些都在各指令頁註明了。其餘是廠商改動,而受影響最深的是 `dumpsys`:一份 dump 是除錯輸出,它的文字就是那個服務的作者最後印了什麼,而廠商既會改它也會把改動往回移植。請用名稱而不是位置來讀欄位,並把沒見過的格式當成差異而不是失敗。

可以用瀏覽器而不是終端機來跑嗎?

很多指令可以——本站的 Web ADB 工具從 Chromium 系桌面瀏覽器透過 WebUSB 和手機對話,不必安裝 SDK,也不會上傳任何東西。每一頁在有對應工具時都會連過去。有兩個限制值得知道:同一時間只有一個程式能持有 ADB 介面,所以桌面的 `adb server` 要先停掉;而 `adb forward` 與 `adb reverse` 在瀏覽器裡完全無法運作。

比較想按而不是打字?Web ADB Toolkit 會從瀏覽器透過 USB 執行這類指令。或者瀏覽全部指令