当前位置:首页 > 闲鱼技术 > 正文内容

Flutter瘦身大作战

xianyu3年前 (2021-03-09)闲鱼技术244

作者:闲鱼技术-三莅

微信号:pps688888
添加微信, 免费测试软件
复制微信号

背景

闲鱼技术团队于2018年上半年率先引入了Flutter技术实现客户端开发,到目前为止成功改造并上线了复杂的商品详情和发布业务。随着改造业务的增多,安装包体积急剧上增。安装包体积决定了用户等待下载的时间和可能会耗费的流量,如何控制安装包体积,减小flutter产物的大小成为当务之急。本文从闲鱼客户端项目实践角度给出了一些通用的包大小检测以及优化方案,希望为对Flutter感兴趣的团队提供参考。

闲鱼客户端采用的Flutter和Native混合开发的模式,下面我们以ios端为例分析项目中flutter产物的大小(ipa包瘦身需求更为急切)。

ios工程对Flutter有如下依赖:

  • Flutter.framework : Flutter库和引擎
  • App.framework: dart业务源码相关文件
  • Flutter Plugin:编译出来的各种plugin的framework
  • flutter_assets:Flutter依赖的静态资源,如字体,图片等

第一次引入flutter版本改造详情页后,ipa包大小增加近20M,其中包括flutter引擎代码+被改造业务代码,继续发布页flutter改造后,ipa增加4M+。进一步分析解压ipa文件后发现Flutter.framework稳定保持在20M+的大小, 增加新的flutter业务——发布页之后,App.framework增幅近10M!

Flutter.framework是Flutter库和引擎的代码,我们能做的优化空间有限,先把目标放在dart业务相关的文件App.framework上。

Flutter产物大小分析

执行如下命令编译出一个release模式下的App.framework,并使用参数打印出产物具体大小

结果如下:

Instructions:代表AOT编译后生成的二进制代码大小

ReadOnlyData:代表生成二进制代码的元数据(例如PcDescriptor, StackMap,CodeSourceMap等)和字符串大小

VMIsolate/Isolate:代表剩下的对象的大小总和(例如代码中定义的常量和虚拟机特定元数据)

具体到业务层,想要分析各个业务模块所占用的大小该怎么办呢?

  1. 执行如下命令编译出一个arm64架构的App.framework,并将它的包组成结构放到指定目录build/aot.json文件中
  2. 使用dart命令将上一步生成的aot.json文件转化成结构可视化的网页

run_binary_size_analysis.dart是dart提供的一个分析工具,在flutter引擎源码中路径如下:

  1. 打开生成文件夹中的index.html即可分析具体业务所占用的大小,右上角的Large Symbols和Large Files按钮可以直接定位体积占比从大到小的方法/文件。

举个例子,上面的分析显示方法占用了大量体积,跟踪发现这个方法主要的操作是将Map数据转化成对象

由此我们可以推断这种类型转换的操作会导致编译生成一些体积很大的代码。

优化措施

  1. 减少显示类型转换操作

按照上述分析发现显示的类型转换  这类操作会导致App.framework体积显著增加,主要是它会增加类型检查以及抛出异常的处理逻辑:

通过提取静态公用方法的方式可以成功减少400k+体积。

  1. 通过编译参数 和减小生成代码的体积

表示在生成的动态库文件中,不使用堆栈跟踪符号

表示混淆,通过减少变量名/方法名的方式减小代码体积

  1. 通过修改ios打包脚本xcode_backend.sh,删除dSYM符号表信息文件,App.framework成功减小20%的大小。dSYM 是保存 16 进制函数地址映射信息的中转文件,包含我们调试的 symbols,用来分析 crash report 文件,解析出正确的错误函数信息。

使用xcrun命令将dSYM从framework中剥离出来,可以大大减小App.framework的体积。

  1. 减少flutter和native资源重复造成的体积增大

利用桥接的方式,flutter直接使用Platform端资源文件,避免因为资源文件重复导致的包大小增加问题。

主要方式是通过BasicMessageChannel在Flutter和Platform端传递信息。Flutter端将资源名AssetName传递给Platform端,Platform端接收到AssetName后,根据name定位到资源文件,并将该文件以二进制数据格式,通过BasicMessageChannel传递回Flutter端。

总结

引入Flutter带来的安装包体积问题会给很多技术团队带来困扰。通过以上措施,Flutter产物App.framework的大小减少30%+,闲鱼技术团队后续也会考虑采取下载并懒加载等方式减少资源占用的体积;继续代码生成中的各种对比,排查避免较大产物的写法,同时也会和Google一起进一步寻找优化空间。

<

扫描二维码推送至手机访问。

版权声明:本文由中客网络发布,如需转载请注明出处。

本文链接:http://www.zzzmc.cc/61.html

分享给朋友:

相关文章

闲鱼助理自动发布批量发布软件

闲鱼助理自动发布批量发布软件

  172020   07   随着7月份联盟对闲鱼口令淘客的出手,闲鱼口令淘客项目应该是到了尾声了。我想用文字来记录下这3年操作这个项目的过程。同时也进行了一些反思。希望对看文章的你有点启发和帮助。接触闲鱼淘宝客时间回到2017年,当时还在做着微信群淘客,忘了在哪里看到一篇文章介绍闲鱼淘客的,于是就下载了闲鱼APP测试下。因为闲鱼只能在手机上操作,电脑上是没有软件的。手动试着上传几个商品,当时第一个问题就是口令复制不上去。因为直接复制好口令,打开闲鱼是会直接弹出的,所以只能分断复制口令。可想而知这个工作量,只上了几个就花了1   作者:gzbar | 分类:闲鱼赚钱 | 浏...

都有哪些功能呢?

都有哪些功能呢?

  说起闲鱼,就不得不提闲鱼助手,顾名思义,闲鱼助手作用就是为闲鱼服务的,但是我们很多其他小伙伴都不可以知道闲鱼助手的具体分析功能需求是什么,那么对于今天小编就来给大家通过说一说,闲鱼助手的具体管理功能有哪些?一起发展来看一看吧!   首先,在商品管理方面,小钱吉先宇助理支持多商品一键批量采集,这意味着我们不需要逐个选择,节省了我们很多时间。 并为我们的最大利益支持20多个国内外供应平台。   另一方面,在发射时,支持全国定位发射,也就是说,免费的鱼类助理支持在全国任何地方发射,我们都知道发射定位的位置,在很大程度上,决定了我们的交通和曝光,选择一些用户更多的一线和二线城市,对我们...

如何改善您商品的浏览量

如何改善您商品的浏览量

  闲鱼的浏览量直接关系到了商品的成交量,所以这个对很多的信誉商家是很重要的,但是很多的闲鱼小白并不知道怎样提高自己的商品的浏览量。为此也很苦恼,所以今天我就来为大家分享一下,如何提高自己的浏览量。   如果我们的免费鱼想要增加点击量,他们可以做一些免费的活动,但不是真的免费发送,可以进入一些相对低成本的商品,然后邮资设置高于成本,这样我们仍然可以赚钱,虽然利润不高,但可以为我们以后的店铺流量打下基础。让自己的店铺流量提高,那我们的商品成交量一定会提高,因此不在乎前期做一些投入。   还有可能就是因为我们在回复客户的时候,一定要快速的回复,这样可以的话学生能够给客户提供一个具有很好...

闲鱼上架软件,批量操作新手必备

闲鱼上架软件,批量操作新手必备

  【闲鱼排名】闲鱼上架软件,批量操作新手必备      2020年12月25日   闲鱼排名   55 views   0   闲鱼是处置闲置物品的好地方,也是电商运营很值得操作的一个平台,这里的用户群很多,只要懂得运营技巧,就能在这里赚到钱。要想在闲鱼上拥有更多的用户和流量,产品就不能少,对于新手来说,产品上架是一个大问题,这个时候就可以利用闲鱼批量上架软件来进行店群操作。   批量软件使用有什么条件?只要单账号试运营的时候没有出现什么问题,那么就可以使用批量上架软件。批量软件的条件很简单,最为重要的是批量软件的选择。新手运营闲鱼的时候,可以先去了...

闲鱼怎样提高排名?_闲鱼浏览量_闲鱼流量暴增系统_闲大师版闲鱼助手_闲鱼增加浏览量曝光率

闲鱼怎样提高排名?_闲鱼浏览量_闲鱼流量暴增系统_闲大师版闲鱼助手_闲鱼增加浏览量曝光率

  【闲鱼浏览量】闲鱼怎样提高排名?      2020年11月10日   闲鱼浏览量   42 views   0   很多在闲鱼上卖货的卖家都不会没有注意到学生自己的闲鱼排名。闲鱼排名世界是什么呢?你可以同时将你的商品进行链接信息分享给朋友,用朋友的账号需要打开该链接,如果你用朋友的账号,能够在首页上搜索到你的店铺销售商品管理的话,那么我们说明你的闲鱼排名还不错。如果教师不能通过搜索到你的商品经济的话,那么你就应该不断提高你的闲鱼排名了。   我们怎样才能提高游手好闲的鱼的等级呢? 让我来分享一下我的方法。   首先,你可以通过提高你的芝麻信...

除了擦亮之外,怎样才能获得更多的闲鱼流量?

除了擦亮之外,怎样才能获得更多的闲鱼流量?

  大家都知道,擦亮能够给自己的闲鱼店铺带来更多的曝光量。可是,仅仅凭借着擦亮带来的曝光量是不够的,我们还要通过一些其他手段来提高自己的闲鱼流量。作为一个资深的闲鱼卖家,让小编来告诉你:除了擦亮之外,还有其它方法能够获得更多的闲鱼流量。   方法一:再次编辑你的宝贝。很多卖家都不知道闲鱼这一漏洞,只要你再次编辑你的宝贝,你的宝贝排名就会提升,流量也会上涨。   方法二:利用其他手段提高自己的宝贝的互赞和想要,也可以用朋友或者家人的号直接将宝贝买下来,这样就能提高店铺的成交率。店铺的流量也会随着成交率的增长而增加。   方法三:一定要保持在线。保持在线的最佳方法就是每隔几个小时...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。