Flutter 即學即用系列部落格——10 混淆

AndroidTraveler發表於2019-03-29

Flutter 即學即用系列部落格——10 混淆

前言

之前的部落格我們都是在 debug 的模式下進行開發的。

實際釋出到市場或者給到使用者的都是 release 包。

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

Android 如何混淆

如何你不做任何處理,直接在原有混淆基礎上打出 release 包。

當執行到 Flutter 對應程式碼,會 crash。

因此我們需要在 Android 專案的 proguard-rules.pro 檔案進行配置。

#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.**  { *; }
複製程式碼

配置的混淆文字以官網連結為主:?
flutter.dev/docs/deploy…

dart 混淆

官網 Flutter WIKI 裡面說了

Note that Dart obfuscation has not yet been thoroughly tested
複製程式碼

Dart 的混淆還沒有完全測試。因此是否新增看你。

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

對於 Android 來說是新增下面到 /android/gradle.properties:

extra-gen-snapshot-options=--obfuscate
複製程式碼

具體詳情見 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 妙用及 .. 使用

Flutter 即學即用系列部落格——10 混淆

相關文章