==============================================
2026 年了,Android 的 Jetpack Compose 終於支援了 Hot Reload,但它不是由 Google 或 JetBrains 推出,而是個人開發者 Jaewoong Eum(skydoves)實作的一個 IDEA 外掛: **Compose HotSwan** 。
Compose HotSwan 作為 Android Studio/IntelliJ IDEA 的外掛,其核心功能是讓 Jetpack Compose 程式碼支援類似 Flutter 的 Hot Reload(熱重載)。
事實上 Compose Multiplatform(CMP)在 1.8.0 的時候就推出過 Hot Reload,1.10 預設啟動,但 JetBrains 只支援桌面 JVM 的場景,因為 CMP 的 Hot Reload 嚴重依賴 JetBrains Runtime(JBR)這個客製化的 JVM,JBR 使用 DCEVM(Dynamic Code Evolution VM)補丁強制回退到解釋執行模式以支援 Hot Reload。
所以 CMP 的 Hot Reload 不支援 Android,而 Compose HotSwan 的作用就是做一個支援這個流程的外掛,讓使用者在修改完 UI 程式碼或資源檔後,在 Android 平台也可以即時 Hot Reload。
根據官網描述,HotSwan 支援的場景有:
.class 或 .dex 位元組碼remember 狀態的情況下重新渲染
也就是 HotSwan 會監聽 IDE 的檔案儲存,當使用者儲存 .kt 或資源檔時,外掛會透過比對檔案路徑與專案模組結構來識別該檔案屬於哪個 Gradle 模組。
所以 HotSwan 只在包含變更檔案的模組上執行增量建置,如果你編輯了 :feature:home 裡的檔案,那麼只有這個模組會被編譯:
而對於資源檔(res/ 目錄),HotSwan 採用不同的同步路徑,它直接不編譯 Kotlin,而是執行 processDebugResources 生成編譯後的資源 APK 檔案,然後套用到裝置上進行即時補丁。

另外,HotSwan 會有一個執行在應用內的本地代理,當你的應用開啟偵錯模式後,代理會被載入到 Android 執行時,而這也就要求 Android API 等級為 28(Android 9.0 Pie)以上。
Gradle 外掛會自動將偵錯變體的 minSdk 設為 28,不影響 Release。
同時,HotSwan 外掛支援以下 Android Studio 與 IntelliJ IDEA 2024.3 及以上版本:
當然,最重要的是,HotSwan 外掛是針對 Kotlin 2.3.0 編譯器 API 設計,所以編譯器外掛必須基於特定的最低版本建置,也就是 Kotlin 2.3.0 以上。
另外,不可避免地,HotSwan 外掛依賴 AGP 8.7.3 版本的具體 Gradle 任務名稱與輸出目錄,所以你的 AGP 也必須 ≥ 8.7.3 。

當然,由於 Android ART 對類別重新定義有嚴格限制(不允許在執行時更改類的結構、記憶體佈局或方法簽名),按照 ART 的常規限制,執行時類別重定義通常不允許修改類結構,但 HotSwan 透過額外的編譯器與執行時處理,對部分結構性變更做了擴充支援,例如同一檔案新增函式、data class 新增屬性等,不過這類能力並不是無限制的,而且在 API 30+ 上體驗更完整,API 28/29 更容易回退到完整建置,其他如:
函式新增與刪除:
inline 函式(內聯函式在編譯時會被展開,沒有獨立單元可供替換)Data Class(資料類別)修改:
建構子(Constructor):
介面與父類:
資源檔(Resources):
R 類的欄位分配,導致 ID 位移Lambda 表達式:
所以,API 30+ 支援更廣的 Hot Reload,例如新增函式、新增 enum 值、新增 data class 屬性等,而 API 28/29 對這些通常要做完整重新建置(full rebuild)。
當然,從另一個角度看,其實最大的限制是,它是一個付費外掛:

雖然它比 "Live Edit" 更強大,但付費這點確實會讓外掛的推廣面臨較大難度。當然,外掛還帶了一些其他增強功能,例如自動截圖支援:
每次成功 Hot Reload 後自動擷取裝置截圖,並將它與觸發重載的 git diff 配對,然後在 IDE 工具視窗中出現一條按時間順序排列的縮圖列,可以即時查看 UI 變更歷史
底部還有細節面板,會包含各種元資料(時間戳、建置時長)和導致變更的 git 差異,可以精確看到導致每種視覺狀態的程式碼變動:

另一個增項是,HotSwan MCP 伺服器支援透過 MCP 將任何 AI 助手連接到正在執行的 Android 應用,所有的 AI 工具都可以編輯 Compose 程式碼、觸發熱重載、擷取裝置截圖,也就是可以讓 AI 更便捷地除錯 UI,在 2026 年這點還蠻貼心的。
整體來看,HotSwan 的設計哲學是「盡可能熱重載,不行就自動重建」,它透過魔改編譯器外掛繞過了 Android 系統的部分限制,但對於徹底改變類結構的操作,仍然必須依賴傳統的重啟式增量更新。不過思路確實別出心裁,整個外掛實作也相對完善,特別還有針對 AI 的支援,整體來說確實不錯。
那麼,你覺得這個外掛如何?你會為了這個外掛買單嗎?