ByteScope

Android Debloater

用 USB 把 Android 手機上的預載 App 剝掉——有分級、可還原,而且不用 root。

套件清單是透過 USB 線從手機讀出來的,只留在這個瀏覽器裡。你裝了哪些 App 不會被上傳。

正在檢查瀏覽器支援…

關於這個工具、FAQ 與相關工具

關於這個工具

把 Android 手機用 USB 接上 Chromium 系瀏覽器,這一頁就會列出手機上的每一個套件:名稱、系統或第三方、啟用/停用/已移除、版本、安裝來源,以及佔用多少空間。每一列都會對照自建的安全分級資料庫,說明這個套件在做什麼、少了它什麼會停掉,以及這個分級的依據是什麼——AOSP 的原始碼路徑、它在應用商店上架這件事、或是它在平台上被指定的角色。手機上不會被裝任何東西,也不會有任何內容被上傳;清單是裝置端的 pm list packages 產出的,我們只是透過線讀回來。

pm uninstall --user 0 到底做了什麼

它沒有刪掉任何東西。預載 App 住在唯讀的系統分割區上,沒有 root 就刪不掉;這條指令拿掉的是「這個 App 已安裝給使用者 0(也就是你,手機的主人)」這筆*紀錄*。APK 原封不動留在原地,所以 cmd package install-existing --user 0 <package> 可以立刻把它放回來,不用下載、也不用商店帳號。再加上 -k,App 的資料也會保留,還原之後你會回到原本的狀態,而不是一個全新的空 App。免 root 精簡的整套把戲就是這個:空間沒有被釋放(APK 還在那裡),但 App 不再執行、不再更新、不再出現、也不再耗電。pm disable-user --user 0 是更溫和的版本——App 仍然安裝著,只是停下來——而這應該是你第一個伸手去拿的工具,因為 pm enable 能百分之百把它還原。

四個分級,加上明確的第五個答案:我們不知道

套件分成 recommended(廣告、遙測、預載的一般 App,移掉只會失去那個 App)、advanced(有實際副作用的廠商服務)、expert(會弄壞真的有人在用的功能:列印、檔案選擇器、簡訊、無障礙)、unsafe(移除會變磚或毀掉資料)。最後一級的列預設鎖住,要展開並自己解鎖才能操作。另外有一小群東西在這一頁永遠不能移除:SystemUI、設定、shell 套件、套件安裝程式、權限控制器、電話、輸入法、Play 服務。挑選標準不是災情大小,而是唯一一個問題:出事之後,你還修不修得回來?其餘全部回報為**未知**,而未知在這裡被當成比任何一個有分級的層級**更危險**,不是更安全。它的意思是沒有人能為這個套件寫出一句可以查證的話,所以它用警戒色呈現、排序時被推到最遠端,而且批次選取永遠不會把它掃進去。少一筆資料只是不方便;一個沒有根據卻標成 recommended 的分級,代價是別人的手機。

還原的路,在移除的路之前就先鋪好

這些頁面上每一個 warning 與 danger 等級的操作,都會連同它的還原指令一起寫進這個瀏覽器裡的還原中心,按一個鍵就能把那條指令送到接上的手機執行。還原指令是從「這是什麼操作」*推導*出來的,不是由執行它的頁面提供,所以不可能顯示一帖根本不存在的解藥。在那之上還有一個常駐的救援區塊,把同樣的指令用桌面 adb shell 的形式印出來,給這一頁救不了的情況用——手機已經開不到可用畫面的時候。那不是假設:移錯套件真的可能讓你落到全黑畫面或開機循環,而且因為 USB 偵錯的授權畫面是 SystemUI 畫的,你連換一台電腦重新授權都做不到。唯一的出路是進 recovery 恢復原廠設定,那會清掉裝置上的所有東西。這一頁把這件事寫在按鈕旁邊,不是塞在註腳裡。

選取清單可以帶著走:勾好你要移掉的套件,把清單下載成 JSON,到下一台手機拖進來就好。檔案裡只有套件名稱,沒有分級也沒有指令——所以匯入永遠不可能引進一條這一頁自己沒有組出來的指令,而且摘要會直接告訴你,這份清單裡有幾個在這台裝置上根本找不到。反過來說:Web ADB Toolkit 主頁有裝置儀表板與其他工具,而儲存空間分析頁會在你決定移除什麼之前,先讓你看清楚是什麼在吃掉手機的空間。

常見問題

pm uninstall --user 0 裡的 --user 0 是什麼意思?

Android 支援多使用者,`0` 是主要使用者,也就是手機的主人。這個參數把解除安裝限縮到那個使用者身上,而不是整台裝置——這正是它不用 root 就能做到的原因:系統分割區上的 APK 完全沒被動到,被拿掉的只是「已安裝給你」這筆紀錄。也因此它可以用 `cmd package install-existing --user 0 <package>` 還原。不加這個參數的 `pm uninstall` 會試著對所有使用者移除,而系統 App 只會直接拒絕。

這跟用 root 移除差在哪裡?

root 是把 APK 從 `/system` 刪掉,空間會真的釋放;`--user 0` 是把 APK 留著,只是讓你看不到它。實務上的差別有三個:免 root 的移除不會釋放任何空間、恢復原廠設定之後全部會回來、而且一條指令就能還原;root 移除是永久的、真的空出空間,但可能弄壞 OTA 更新,因為系統分割區已經不是更新程式預期的樣子。如果目的只是擺脫你不想要的預載,免 root 幾乎在所有情況下都是比較划算的取捨。

OTA 系統更新之後,那些 App 會跑回來嗎?

常常會。因為 APK 從來沒被刪掉,系統更新可能會把套件重新掛回你的使用者底下,而恢復原廠設定則一定會全部回來。自己側載或從商店裝的 App 是另一回事。這裡的操作在設計上就不是永久的,而這個性質正是它安全的另一面:與其期待移除永遠有效,不如把匯出的選取設定檔留著,大版本更新之後再套一次。

精簡預載會不會影響保固?

用 ADB 不會改寫系統分割區、不會解鎖 bootloader,也不會觸發 Knox 之類的旗標——這些指令本來就是 Android 自己的 shell 工具的一部分,而且從手機端就能還原。這不是法律意見,廠商仍然可能對一台行為異常的裝置有話說;但這一頁不會寫入任何分割區,而恢復原廠設定會讓手機回到出貨時一模一樣的狀態。

我有可能用這個把手機弄壞嗎?

會,而且這一頁就是繞著這個事實設計的。移掉 SystemUI、輸入法、設定 App 或 Play 服務,可能讓裝置沒有介面、沒辦法打密碼,也沒辦法從另一台電腦授權 USB 偵錯——這種狀態只有恢復原廠設定能解,代價是裡面的所有東西。這一群東西在這裡被完全擋掉,就算從匯入的設定檔也選不到。其他真的會造成嚴重後果的,一律標成 unsafe 並鎖住,要展開那一列並自己解鎖才能操作。解除安裝之前先停用:`pm disable-user` 一定還原得回來。

支援哪些瀏覽器和手機?

桌面版的 Chrome 或 Edge,因為 WebUSB 只有 Chromium 系有;Firefox 和 Safari 根本不能開啟 USB 裝置。手機要在開發者選項裡打開 USB 偵錯,而在 Windows 上,它的 ADB 介面通常需要用 Zadig 裝 WinUSB 驅動程式——連線失敗時這一頁會帶你走完那個流程。macOS、Linux 和 ChromeOS 不需要驅動程式。