iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
Software Development

從 Fragment 到 Compose — 老 Android App 重寫的架構取捨 系列

一個維護了九年的 Android 外勤 App:Java 與 Kotlin 各半、一個一萬兩千行的 Activity、沒有 DI、沒有測試。這個系列記錄我用 Jetpack Compose 多模組架構把它重寫的 30 天:每天一個真實的架構決定,寫下選項、代價與理由,並附上去識別化的程式碼。主題涵蓋 DI、狀態管理、導航、藍牙硬體抽象、離線上傳佇列,以及可跨產品覆用的 core 模組設計。

參賽天數 5 天 | 共 5 篇文章 | 0 人訂閱 訂閱系列文 RSS系列文
DAY 1

Day 01|為什麼重寫:一個一萬兩千行 Activity 的診斷書

這個只供內部人員用的老產品,我最印象深刻的是, 它的底部導航列按鈕的業務邏輯,要靠 MainActivity 的 f instanceof DoSomeTh...

2026-09-15 ‧ 由 Jim 分享
DAY 2

Day 02|目標架構總覽:分層、模組圖、依賴方向

今天的取捨問題 昨天決定另開 repo 重寫。第一個要回答的問題不是「用什麼函式庫」,而是:程式碼要怎麼切,才能同時滿足三件事? 30 天內要交出能在真實硬體...

2026-09-16 ‧ 由 Jim 分享
DAY 3

Day 03|建置骨架:多模組、version catalog、convention plugin,以及 secrets 為什麼不能再進 git

今天的取捨問題 三件事同時要解: 多模組的設定重複。每個 Android library 模組都要設 compileSdk、minSdk、Java 版本、f...

2026-09-17 ‧ 由 Jim 分享
DAY 4

Day 04|DI 取捨:從 ServiceLocator 與 17 分支的工廠到 Hilt

程式碼片段 舊世界的 ServiceLocator:想做的兩件事都沒做到 ServiceLocator 是結合本地跟遠端兩個 data source, 形成 A...

2026-09-18 ‧ 由 Jim 分享
DAY 5

網路邊界:後端信封與 `d: Any?` 的約束,`AppResult` 的誕生 | core:network |

先從"信封"兩字講起, ┌───────────────────────────┐│ Backend Envelope │...

2026-09-19 ‧ 由 Jim 分享