還在為維護老舊項目頭疼?AI 或許是你的救星。本文作者是一位有多年 Android 開發經驗的工程師,在離開原生開發多年之後,決定藉助 Copilot 等 AI 開發工具,花兩周時間將一個 7 年前的 Android 應用從頭重寫為現代架構版本。
原文鏈接:https://www.reddit.com/r/androiddev/comments/1lawxue/i_rewrote_my_7yearold_android_app_in_2_weeks_with/
大約 7 年前,我發佈了一個名為 SDK Monitor 的小工具應用,用來監控設備上安裝的所有應用使用的 targetSDK API 級別。當時正值 Google 開始強制推行 targetSDK 最低版本限制(現在要求至少是去年的版本),於是我的原始應用很快就變舊了。隨着時間的推移,我甚至已經無法再打開 Android Studio去維護它了——開發環境和技術體系早已煥然一新。
趁着 GitHub Copilot 的「免費無限使用」即將結束之前,我決定沖一把:看看能否藉助 AI,把這個老項目重寫一遍。
(項目地址:https://github.com/bernaferrari/SDKMonitor)
AI 驅動的開發流程
整個重寫過程用了大約兩周時間。
我一開始讓 AI 把每個文件都進行「現代化」重寫,例如將 MainViewModel 升級為 ModernMainViewModel。等所有文件都對應完成後,我就逐步刪除舊代碼並替換為新版本。
雖然整個過程也不完全輕鬆,但要是沒有 AI 的幫助,這樣的工作量幾乎無法想像。我主要使用 Claude Sonnet 4,原因是它響應快、生成效果好;相比之下,Gemini 2.5 Pro 雖然質量不錯,但速度慢,且幾乎每一行代碼都加註釋,顯得有些冗餘。
在重寫過程中,我發現了很有意思的一點:早在 2018 年,Google 的 API 就在不斷廢棄,今天這種趨勢依舊;可當年剛推出的庫如 Room 和 WorkManager,現在不僅依然存在,而且還支持良好。
大模型偶爾會導入錯誤的庫,或者忘記給圖標加上 autoMirrored 屬性,但總體來說,大模型基本很少再使用舊 API 或不推薦使用的 API 了。
Jetpack Compose 的發佈時間點也恰到好處——既不太早(不會到處都是過時內容),也不太新(大部分 LLM 目前對像 shadcn/ui 這樣的東西還比較陌生)。相比過去需要引入大量第三方庫,現在除了 Google 自家的庫外,我只手動引入了少數幾個,比如 Coil 圖像加載庫。
我的開發工作流比較獨特:我一邊用 VS Code 與 AI 快速交互(主要用「編輯模式」迭代代碼),一邊用 Android Studio 寫代碼和調試——畢竟 VS Code 至今還沒有 Kotlin 的語言服務器支持。
那麼,AI 重寫過後的 SDK Monitor 2.0 有哪些變化?
可以說,這是一個徹底重寫的全新版本。我專註於用最新的技術,打造一個簡潔、高效、實用的 App,主要亮點包括:
- 100% Kotlin 編寫,完全採用 Jetpack Compose + Material 3 Expressive 設計語言(雖然該套件仍處於 Alpha 階段,但我儘可能實踐了其中的設計理念)。
- 支持動態主題切換,兼容手機、平板和摺疊屏(受到 Grok App 的啟發)。
- 新增視覺化圖表,可展示 SDK 版本分佈和近期應用更新情況。
- 自定義快速滾動條,可按首字母或 SDK 版本快速定位應用(靈感來源於 Niagara Launcher)。
- 支持多種語言,包括葡萄牙語、意大利語、法語、德語、日語、中文和西班牙語,由 AI 翻譯完成。
為了讓 AI 更好地理解上下文,我還對項目結構做了些調整,把相關的 ViewModel、界面組件等文件統一放進同一個目錄(這種結構在 Web 開發中更常見)。這樣我只需拖一個文件夾到 AI 的上下文窗口,它就能理解所有依賴關係。
一點個人感想
我知道,這個應用的用途非常小眾,可能對大多數人都沒什麼幫助。不過自 2018 年以來,還是有一些用戶持續使用這個工具並積極反饋 bug。
如果你覺得「這個項目挺有意思,但不適合我」,我也完全理解,畢竟我也從未將它發佈到 Play Store上。一方面是因為它需要查詢所有已安裝應用,另一方面,是因為它本身就不是面向大眾的 App。
但這個應用其實還有一個「隱藏功能」:它可以作為一個很棒的 App 模板:項目規模適中、不依賴於網絡、便於定製。你可以 Fork 它,然後在此基礎上構建全新的項目。無論是 ViewModel 架構、Hilt 依賴注入,還是 Jetpack 組件的廣泛使用,都能為你節省不少時間——要知道, 目前Google連個官方的 WorkManager 示例模板都沒有。
說實話,我早就不是 Android 開發者了——先轉向了 Flutter,後面又跳進了 Web 開發。不過,這次重寫項目的過程非常有趣,也讓我重新燃起了對老項目的熱情。
最後,我希望這篇文章能啟發你,去重拾曾經的老項目、用 AI 更快地啟動新項目,或者也可以乾脆 Fork 我的項目,打造一個全新的產品。