由於在整合國際牌的推播套件,搞了一星期遇卡關,iOS 測試沒問題,Android 取得裝置 Token 噴錯,最後發現是 Debug 包和 Release 包的問題,然後大陸工程師 10/1-10/9 假期中⋯⋯剛好趁這時候來徹底角解兩者差異。🥸
絕大部分時刻我都是包 Release 版本,而在上海的夥伴則是包 Debug 版本,在測試時發現兩包有不同反應,後來追問題才曉得套件有 Release/Debug 差異。
flutter build apk --flavor dev --release
flutter build apk --flavor dev --debug
在 Flutter 開發中,Debug 與 Release 版本扮演著不同的角色,開發者需要了解兩者差異,才能在開發與上架流程中正確選擇。
.
Debug 版本主要用於開發與測試。它啟用了 Flutter 的 Hot Reload 與 Hot Restart,讓開發者能快速驗證修改結果。程式碼使用 JIT(Just-In-Time)編譯,啟動較慢、效能較低,但換來靈活的除錯體驗。Debug 版本通常包含完整的日誌輸出、Debug Banner,以及可以透過 DevTools 檢查 widget tree、記憶體與效能。它使用系統提供的 debug key 簽名,因此無法上架商店。
相對地,Release 版本則是提供給最終用戶的正式包。Flutter 在這個模式下會使用 AOT(Ahead-Of-Time)編譯,將 Dart 程式轉換為原生機器碼,大幅提升效能與啟動速度。Release 版本會進行最佳化,例如代碼壓縮與資源精簡,App 體積更小、更流暢。它不支援 Hot Reload,也不允許連接 DevTools,日誌輸出也會受到限制。最重要的是,Release 版本需要使用正式的 keystore 簽名,才能提交到 Google Play。
簡而言之,Debug 版本適合開發與測試,強調靈活性;Release 版本則面向使用者,追求效能與穩定性。開發者必須在不同階段切換模式,才能兼顧效率與品質。
在 Flutter(以及原生 Android/iOS)裡,Debug 包和 Release 包最大的差別在於:
🔹 Debug 包
- 用途:本地開發、調試
- 特性:
- 未最佳化:編譯速度優先,程式碼沒有做最佳化,體積大、效能差。
- 啟用 Debug 功能:
- Flutter Debug Banner 會顯示在 App 右上角。
- 支援 Hot Reload / Hot Restart。
- 可以連接 DevTools(效能檢測、Widget Tree、Network Inspector 等)。
- 簽章:使用系統自帶的 debug key 簽名,不能上架 Google Play / App Store。
- 日誌輸出完整:可以看到
print()、debugPrint(),以及 Flutter/原生的 debug log。
🔹 Release 包
- 用途:正式上線給使用者下載
- 特性:
- 最佳化:
- Dart AOT (Ahead-of-Time) 編譯,程式碼轉成原生機器碼,啟動速度快。
- 啟用 代碼壓縮 / 混淆 (ProGuard / R8)(若有設定)。
- 體積更小、效能更高。
- 停用 Debug 功能:
- 沒有 Hot Reload。
- DevTools 不能連接。
- Debug Banner 不會顯示。
- 簽章:需要使用 release keystore 簽名,才能上架商店。
- 日誌輸出受限:
print()仍然會執行,但某些情況(尤其是 Android release)會被過濾掉,不像 Debug 那麼完整。
- 最佳化:
🔹 Flutter Debug vs Release 對照表
| 項目 | Debug 版本 | Release 版本 |
|---|---|---|
| 用途 | 開發、除錯 | 正式上架、用戶使用 |
| 編譯方式 | JIT(Just-In-Time),方便 Hot Reload | AOT(Ahead-Of-Time),轉換成原生機器碼 |
| 效能 | 較慢、耗電,未最佳化 | 高效能、啟動快、流暢 |
| 體積 | 較大 | 較小(經過壓縮與最佳化) |
| Hot Reload / Restart | ✅ 支援 | ❌ 不支援 |
| Debug 工具 | ✅ 可連接 DevTools,完整日誌輸出 | ❌ 不支援 DevTools,日誌輸出有限 |
| 簽章 | 使用系統提供的 debug key | 必須使用 release keystore(才能上架) |
| UI 顯示 | 預設會顯示 Debug Banner | 不顯示 Debug Banner |
| 是否可上架 | ❌ 不可 | ✅ 可上架 Google Play / App Store |
實際我來打包,debug 比較快,但體積大,打開時比較慢進入首頁;release 則相反。

隨意留個言吧:)~