去年幫家人換手機
就很普通的那套流程,開機、連 Wi-Fi、登入帳號、更新系統,然後一直按下一步下一步下一步
按到我都快忘記自己是誰
全部弄完之後滑到桌面第二頁,嗯,很精彩
某某影音
某某遊戲中心
某某瀏覽器
還有一個叫「安全助理」的東西
我本來以為它可以幫忙掃毒之類的
結果點進去裡面一堆廣告
看起來就超安全的啦👍👍👍
確實有幫到生活啦,幫你更珍惜沒有廣告的人生
反正這些 App 一看就不會用,我就長按,準備拖去垃圾桶
結果沒有垃圾桶
只有「停用」跟「關閉通知」
有幾個更囂張,連停用都是灰色的
蛤
手機是我買的,錢是我付的,帳號也是我登入的
結果裡面有些東西我連刪都不能刪
那一刻真的會覺得,這支手機好像有一小塊不是我的
你可以把它們塞進資料夾,丟到桌面最後一頁,再把通知全部關掉
假裝沒這回事
但它們還是在那邊
佔空間、偶爾背景醒來一下,系統更新完還可能突然傳個通知跟你說哈囉
非常有毅力,比我運動還規律
所以接下來這 30 天,我想來處理這件事
不是去下載一個「手機清理大師 2026 超強版」
然後它自己又塞三個廣告給我
我要自己寫一個
簡單講就是,你自己從商店裝的 App,大多放在 /data/app
這個地方系統可以讀寫,所以不想用了就刪掉,沒什麼大問題
但原廠預載的 App 不一樣
它們通常躺在 /system/app、/system/priv-app,有些則是在 /product 或 /vendor 裡面
這幾個地方開機後基本上是唯讀的
沒有 root 的情況下,你就是動不了裡面的檔案
所以那些預載 App 不是單純在跟你裝死
它們是真的住在一個你不能隨便拆的地方
這也能解釋一個很煩的東西
有些 App 明明可以按「解除安裝更新」,結果按完它沒有消失
只是瞬間變回三年前那個很醜的版本
因為你刪掉的只有後來放在 /data 裡的更新包
原本 /system 裡的本體還活得好好的
你以為你把它送走了
沒有,它只是換回舊衣服再走出來而已
查過移除預載 App 的話,八成看過這一行
adb shell pm uninstall --user 0 com.example.bloatware
接上電腦、貼上指令、按 Enter
然後 App 就不見了
很神奇,沒有 root,也沒有真的去改 /system
因為它做的事情不是把系統裡的 APK 挖掉
而是告訴 Android:
這個 App 對 user 0 不用了,先幫我移掉謝謝
user 0 通常就是手機主要使用者,也就是你現在正在用的那個帳號
所以系統檔案其實還在,只是對你來說像是被移除了
之後通常也有辦法裝回來
詳細到底發生什麼事、怎麼救回來、跟停用差在哪
第三天第四天再講,不然第一天就寫到像論文,大家會直接關掉
總之這個方法有一個很現實的問題
要接電腦
人在外面突然想清預載 App,沒辦法
手機重刷完想再弄一次,要再接
去親戚家幫忙處理,還要記得帶線
而且一定會帶錯線,這是自然定律
所以 Shizuku 才會出現
它也是這 30 天真正的主角
目標是一個 Android App
用 Kotlin、Jetpack Compose、Material 3
再透過 Shizuku 取得 shell 等級的操作能力
講白一點,就是把原本要在電腦上打的指令
做成手機裡按一下就能執行的按鈕
除了處理預載 App,我還想順便做這些:
Android/data
聽起來很多
對,確實很多,我現在也有點後悔
所以不會第一天建專案,第二天就假裝全部完成
前面會先玩 ADB 指令,搞懂 Android 到底在管什麼
第二週再開始寫 Kotlin
大概第三週中間,這個 App 才會第一次進入「欸,好像真的可以用」的狀態
大概啦
第一,不需要 root
不解鎖 bootloader、不刷機,也不碰 Magisk
這系列主要就是 ADB、Shizuku 跟 Android 自己提供的能力
第二,不要看到系統 App 就全部刪
有些東西名字看起來很廢,實際上可能跟相機、通知、桌面甚至開機有關
手滑刪錯的話,相機可能打不開,通知可能不會來
到時候不是手機變乾淨
是手機變安靜,安靜到有點可怕
雖然這種移除方式通常可以救回來
但哪些能動、哪些最好不要亂碰,我還是會另外花一天整理
第三,程式碼會盡量每天都能跑
我希望每天結束時,專案至少可以編譯、可以裝、也看得到今天到底做了什麼
不要留一整片 TODO,最後一天才通靈把它們補完
這 30 天想做的其實不只是一個刪預載 App 的工具
我比較想知道的是
手機都花錢買回來了,到底能不能真的把它變成自己的