Flutter 即學即用系列博客——10 混淆

前言

以前的博客咱們都是在 debug 的模式下進行開發的。android

實際發佈到市場或者給到用戶的都是 release 包。git

而對於 Android 來講,release 包一個重要的步驟就是混淆。github

Android 如何混淆

如何你不作任何處理,直接在原有混淆基礎上打出 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測試

dart 混淆

官網 Flutter WIKI 裏面說了gradle

Note that Dart obfuscation has not yet been thoroughly tested

Dart 的混淆尚未徹底測試。所以是否添加看你。ui

就算添加了,也要記得測試是否會影響到你的 Flutter 相關功能使用。debug

對於 Android 來講是添加下面到 /android/gradle.properties:

extra-gen-snapshot-options=--obfuscate

具體詳情見 Flutter WIKI Obfuscating Dart Code
https://github.com/flutter/flutter/wiki/Obfuscating-Dart-Code

Flutter FAQ

在 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。

這個時候有兩種方案:

  1. 判斷當前手機架構,若是是 x86,對應 Flutter 功能不顯示。
  2. APP 設置不支持 x86 架構。這樣 x86 手機就無法安裝了。

推薦第二種,由於第一種會致使不一樣架構手機表現不一致,並且須要本身代碼手動作控制。容易漏掉。

FAQ

更多閱讀:
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 妙用及 .. 使用

相關文章
相關標籤/搜索