以前的博客咱們都是在 debug 的模式下進行開發的。android
實際發佈到市場或者給到用戶的都是 release 包。git
而對於 Android 來講,release 包一個重要的步驟就是混淆。github
如何你不作任何處理,直接在原有混淆基礎上打出 release 包。架構
當運行到 Flutter 對應代碼,會 crash。app
所以咱們須要在 Android 項目的 proguard-rules.pro 文件進行配置。less
#Flutter Wrapper -keep class io.flutter.app.** { *; } -keep class io.flutter.plugin.** { *; } -keep class io.flutter.util.** { *; } -keep class io.flutter.view.** { *; } -keep class io.flutter.** { *; } -keep class io.flutter.plugins.** { *; }
配置的混淆文本以官網連接爲主:👇
https://flutter.dev/docs/deployment/android#enabling-proguard測試
官網 Flutter WIKI 裏面說了gradle
Note that Dart obfuscation has not yet been thoroughly tested
Dart 的混淆尚未徹底測試。所以是否添加看你。ui
就算添加了,也要記得測試是否會影響到你的 Flutter 相關功能使用。debug
對於 Android 來講是添加下面到
extra-gen-snapshot-options=--obfuscate
具體詳情見 Flutter WIKI Obfuscating Dart Code
https://github.com/flutter/flutter/wiki/Obfuscating-Dart-Code
在 Flutter 的 FAQ 連接上面,明確說明了 Flutter 暫時不支持 x86 架構的手機。
Note Flutter currently does not support building for x86 Android (issue #9253) directly, however apps built for ARMv7 or ARM64 run fine (via ARM emulation) on many x86 Android devices.
所以假設大家公司要選型 Flutter,你要確認是否能夠割捨掉使用 x86 架構手機的用戶。
固然 x86 的 Android 手機相對比較少,不過仍是有的。
當 Flutter 代碼運行到 x86 平臺上面,會 crash。
若是你要驗證,能夠在 Android 模擬器上面建立一個 x86 的手機模擬器,好比 nexus 4。
而後安裝嵌入 Flutter 代碼的 Android APK,當運行到對應 Flutter 代碼時,APP 會 crash。
這個時候有兩種方案:
推薦第二種,由於第一種會致使不一樣架構手機表現不一致,並且須要本身代碼手動作控制。容易漏掉。
更多閱讀:
Flutter 即學即用系列博客
Flutter 即學即用系列博客——01 環境搭建
Flutter 即學即用系列博客——02 一個純 Flutter Demo 說明
Flutter 即學即用系列博客——03 在舊有項目引入 Flutter
Flutter 即學即用系列博客——04 Flutter UI 初窺
Flutter 即學即用系列博客——05 StatelessWidget vs StatefulWidget
Flutter 即學即用系列博客——06 超實用 Widget 集錦
Flutter 即學即用系列博客——07 RenderFlex overflowed 引起的思考
Flutter 即學即用系列博客——08 MethodChannel 實現 Flutter 與原生通訊
Flutter 即學即用系列博客——09 EventChannel 實現原生與 Flutter 通訊(一)
Flutter 即學即用系列博客——09 MethodChannel 實現原生與 Flutter 通訊(二)
Flutter & dart
dart 如何優雅的避空
Flutter map 妙用及 .. 使用