文档章节

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

o
 osc_w9s1w4o0
发布于 2019/03/29 19:16
字数 732
阅读 7
收藏 0

精选30+云产品,助力企业轻松上云!>>>

前言

之前的博客我们都是在 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.**  { *; }

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

dart 混淆

官网 Flutter WIKI 里面说了

Note that Dart obfuscation has not yet been thoroughly tested

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

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

对于 Android 来说是添加下面到 <ProjectRoot>/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 妙用及 .. 使用

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Flutter 即学即用系列博客——10 混淆

前言 之前的博客我们都是在 debug 的模式下进行开发的。 实际发布到市场或者给到用户的都是 release 包。 而对于 Android 来说,release 包一个重要的步骤就是混淆。 Android 如何混淆 如何你...

AndroidTraveler
2019/03/29
0
0
Flutter 即学即用系列博客总结篇

前言 迟到的总结篇,其实大家看我之前发的系列博客最后一篇,发文时间是 3 月 29 日。距离现在快两个月了。 主要是因为有很多事情在忙,所以这篇就耽搁了。 今天终于可以跟大家会面了。 系列...

AndroidTraveler
2019/05/28
0
0
Flutter 即学即用系列博客总结篇

前言 迟到的总结篇,其实大家看我之前发的系列博客最后一篇,发文时间是 3 月 29 日。距离现在快两个月了。 主要是因为有很多事情在忙,所以这篇就耽搁了。 今天终于可以跟大家会面了。 系列...

安卓小煜
2019/05/28
0
0
Flutter 即学即用系列博客总结篇

前言 迟到的总结篇,其实大家看我之前发的系列博客最后一篇,发文时间是 3 月 29 日。距离现在快两个月了。 主要是因为有很多事情在忙,所以这篇就耽搁了。 今天终于可以跟大家会面了。 系列...

osc_pll3h24t
04/16
11
0
Flutter map 妙用及 .. 使用

前言 本篇文章对于熟悉 flutter 或者 dart 的小伙伴来说可能觉得比较简单,但是对于初学者或者没用过的小伙伴还是有些收获的。 背景 说到 map 妙用的发现,还要归功于 Tooltip 的研究。 在研...

osc_030273w2
2019/03/17
1
0

没有更多内容

加载失败,请刷新页面

加载更多

设计模式(4) 建造者模式

什么是建造者模式 经典建造者模式的优缺点 对建造者模式的扩展 什么是建造者模式 建造者模式将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。创建者模式隐藏了...

zhixin9001
8分钟前
14
0
ArrayList源码分析 —— JDK8

ArrayList的特性 ArrayList内部使用数据作为存储结构,ArrayList可以理解为数组的扩展对象,封装了常用的和非常用的操作数组的方法。以及当数组长度不足以保存数组时,自动扩容数组,通常Arr...

XuePeng77
15分钟前
10
0
__slots__的用法? - Usage of __slots__?

问题: Python中__slots__的目的是什么-尤其是关于何时以及何时不使用它的目的? 解决方案: 参考一: https://stackoom.com/question/1ymu/slots-的用法 参考二: https://oldbug.net/q/1ym...

富含淀粉
26分钟前
17
0
Python分析42年高考数据,告诉你高考为什么这么难?

作者:徐麟 历年录取率 可能很多经历过高考的人都不知道高考的全称,高考实际上是普通高等学校招生全国统一考试的简称。从1977年国家恢复高考制度至今,高考经历了许多的改革,其中最为显著的...

爱码小哥
27分钟前
19
0
CKEditor 5 + SpringBoot实战(四):SpringBoot 实现文件上传

在本系列的文章中,我将介绍如何在Spring Boot Application中使用CKEditor编辑器。介绍的内容包括基本环境的搭建,文件上传,SpringData JPA数据持久化,CKEditor5的安装,CKEditor图片上传,...

树下魅狐
29分钟前
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部