Just My Life & My Work

[Flutter] Debug 包和 Release 包

由於在整合國際牌的推播套件,搞了一星期遇卡關,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 開發中,DebugRelease 版本扮演著不同的角色,開發者需要了解兩者差異,才能在開發與上架流程中正確選擇。

.

Debug 版本主要用於開發與測試。它啟用了 Flutter 的 Hot ReloadHot 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 包

  • 用途:本地開發、調試
  • 特性
    1. 未最佳化:編譯速度優先,程式碼沒有做最佳化,體積大、效能差。
    2. 啟用 Debug 功能
      • Flutter Debug Banner 會顯示在 App 右上角。
      • 支援 Hot Reload / Hot Restart
      • 可以連接 DevTools(效能檢測、Widget Tree、Network Inspector 等)。
    3. 簽章:使用系統自帶的 debug key 簽名,不能上架 Google Play / App Store。
    4. 日誌輸出完整:可以看到 print()debugPrint(),以及 Flutter/原生的 debug log。

🔹 Release 包

  • 用途:正式上線給使用者下載
  • 特性
    1. 最佳化
      • Dart AOT (Ahead-of-Time) 編譯,程式碼轉成原生機器碼,啟動速度快。
      • 啟用 代碼壓縮 / 混淆 (ProGuard / R8)(若有設定)。
      • 體積更小、效能更高。
    2. 停用 Debug 功能
      • 沒有 Hot Reload。
      • DevTools 不能連接。
      • Debug Banner 不會顯示。
    3. 簽章:需要使用 release keystore 簽名,才能上架商店。
    4. 日誌輸出受限print() 仍然會執行,但某些情況(尤其是 Android release)會被過濾掉,不像 Debug 那麼完整。

🔹 Flutter Debug vs Release 對照表

項目Debug 版本Release 版本
用途開發、除錯正式上架、用戶使用
編譯方式JIT(Just-In-Time),方便 Hot ReloadAOT(Ahead-Of-Time),轉換成原生機器碼
效能較慢、耗電,未最佳化高效能、啟動快、流暢
體積較大較小(經過壓縮與最佳化)
Hot Reload / Restart✅ 支援❌ 不支援
Debug 工具✅ 可連接 DevTools,完整日誌輸出❌ 不支援 DevTools,日誌輸出有限
簽章使用系統提供的 debug key必須使用 release keystore(才能上架)
UI 顯示預設會顯示 Debug Banner不顯示 Debug Banner
是否可上架❌ 不可✅ 可上架 Google Play / App Store

實際我來打包,debug 比較快,但體積大,打開時比較慢進入首頁;release 則相反。

隨意留個言吧:)~

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

標籤雲