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

本文微信公众号「AndroidTraveler」首发。

前言

之前的博客我们都是在 debug 的模式下进行开发的。

实际发布到市场或者给到用户的都是 release 包。

而对于 Android 来说,release 包一个重要的步骤就是混淆。

Android 如何混淆

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

当运行到 Flutter 对应代码,会 crash。

因此我们需要在 Android 项目的 proguard-rules.pro 文件进行配置。

配置的混淆文本以官网链接为主:
https://flutter.dev/docs/deployment/android#enabling-proguard

dart 混淆

官网 Flutter WIKI 里面说了

Dart 的混淆还没有完全测试。因此是否添加看你。

就算添加了,也要记得测试是否会影响到你的 Flutter 相关功能使用。

对于 Android 来说是添加下面到 /android/gradle.properties:

具体详情见 Flutter WIKI:

https://github.com/flutter/flutter/wiki/Obfuscating-Dart-Code

Flutter FAQ

在 Flutter 的 FAQ 链接上面,明确说明了 Flutter 暂时不支持 x86 架构的手机。

因此假设你们公司要选型 Flutter,你要确认是否可以割舍掉使用 x86 架构手机的用户。

当然 x86 的 Android 手机相对比较少,不过还是有的。

当 Flutter 代码运行到 x86 平台上面,会 crash。

如果你要验证,可以在 Android 模拟器上面创建一个 x86 的手机模拟器,比如 nexus 4。

然后安装嵌入 Flutter 代码的 Android APK,当运行到对应 Flutter 代码时,APP 会 crash。

这个时候有两种方案:

判断当前手机架构,如果是 x86,对应 Flutter 功能不显示。APP 设置不支持 x86 架构。这样 x86 手机就没法安装了。

推荐第二种,因为第一种会导致不同架构手机表现不一致,而且需要自己代码手动做控制。容易漏掉。

当然你单独编译一个支持 x86 的 Flutter 包是可以的,但是要同时支持 x86 和 arm 还不行。