iT邦幫忙

2026 iThome 鐵人賽

DAY 1
0
Software Development

Android 工具箱開發系列 第 1

Day 1 手機是我買的,但裡面的 App 好像不是我的

  • 分享至 

  • xImage
  •  

去年幫家人換手機

就很普通的那套流程,開機、連 Wi-Fi、登入帳號、更新系統,然後一直按下一步下一步下一步
按到我都快忘記自己是誰

全部弄完之後滑到桌面第二頁,嗯,很精彩

某某影音
某某遊戲中心
某某瀏覽器
還有一個叫「安全助理」的東西

我本來以為它可以幫忙掃毒之類的
結果點進去裡面一堆廣告
看起來就超安全的啦👍👍👍

確實有幫到生活啦,幫你更珍惜沒有廣告的人生

反正這些 App 一看就不會用,我就長按,準備拖去垃圾桶

結果沒有垃圾桶

只有「停用」跟「關閉通知」
有幾個更囂張,連停用都是灰色的

手機是我買的,錢是我付的,帳號也是我登入的
結果裡面有些東西我連刪都不能刪

那一刻真的會覺得,這支手機好像有一小塊不是我的

你可以把它們塞進資料夾,丟到桌面最後一頁,再把通知全部關掉
假裝沒這回事

但它們還是在那邊

佔空間、偶爾背景醒來一下,系統更新完還可能突然傳個通知跟你說哈囉
非常有毅力,比我運動還規律

所以接下來這 30 天,我想來處理這件事

不是去下載一個「手機清理大師 2026 超強版」
然後它自己又塞三個廣告給我

我要自己寫一個

所以到底為什麼刪不掉

簡單講就是,你自己從商店裝的 App,大多放在 /data/app

這個地方系統可以讀寫,所以不想用了就刪掉,沒什麼大問題

但原廠預載的 App 不一樣

它們通常躺在 /system/app/system/priv-app,有些則是在 /product/vendor 裡面

這幾個地方開機後基本上是唯讀的
沒有 root 的情況下,你就是動不了裡面的檔案

所以那些預載 App 不是單純在跟你裝死
它們是真的住在一個你不能隨便拆的地方

這也能解釋一個很煩的東西

有些 App 明明可以按「解除安裝更新」,結果按完它沒有消失
只是瞬間變回三年前那個很醜的版本

因為你刪掉的只有後來放在 /data 裡的更新包
原本 /system 裡的本體還活得好好的

你以為你把它送走了
沒有,它只是換回舊衣服再走出來而已

那網路上的 ADB 指令又是什麼

查過移除預載 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 11 之後變得很難碰的 Android/data
  • 幫 Tasker 這類 App 一次補上需要的權限
  • 調整螢幕解析度跟 DPI
  • 關掉狀態列上某些很礙眼的圖示
  • 把手機裡已安裝 App 的 APK 抽出來

聽起來很多
對,確實很多,我現在也有點後悔

所以不會第一天建專案,第二天就假裝全部完成

前面會先玩 ADB 指令,搞懂 Android 到底在管什麼
第二週再開始寫 Kotlin
大概第三週中間,這個 App 才會第一次進入「欸,好像真的可以用」的狀態

大概啦

開始前先講三件事

第一,不需要 root

不解鎖 bootloader、不刷機,也不碰 Magisk
這系列主要就是 ADB、Shizuku 跟 Android 自己提供的能力

第二,不要看到系統 App 就全部刪

有些東西名字看起來很廢,實際上可能跟相機、通知、桌面甚至開機有關
手滑刪錯的話,相機可能打不開,通知可能不會來

到時候不是手機變乾淨
是手機變安靜,安靜到有點可怕

雖然這種移除方式通常可以救回來
但哪些能動、哪些最好不要亂碰,我還是會另外花一天整理

第三,程式碼會盡量每天都能跑

我希望每天結束時,專案至少可以編譯、可以裝、也看得到今天到底做了什麼
不要留一整片 TODO,最後一天才通靈把它們補完

這 30 天想做的其實不只是一個刪預載 App 的工具

我比較想知道的是

手機都花錢買回來了,到底能不能真的把它變成自己的


下一篇
Day 2 ADB 到底在幹嘛
系列文
Android 工具箱開發6
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言