【译】Flutter 延迟组件原理与自定义 【包体积优化 _ 动态化

本文介绍了Flutter应用如何利用延迟组件减少包体积,详细阐述了延迟组件的生命周期、加载单元机制,并探讨了自定义下载和解压实现。通过延迟加载,Flutter应用能在运行时按需下载组件,显著降低初始安装尺寸,同时提供了通过组件名称直接安装和卸载的方法。
摘要由CSDN通过智能技术生成
  • 安装包大小: 50,214,681 bytes

未使用延迟组件:

  • base-arm64_v8a.apk - 12,521,900 bytes
  • base-master.apk - 80,605,796 bytes
  • 安装包大小: 93,127,696 bytes

我们可以看到编译后的代码大小(base-arm64_v8a.apk) 减少了约 200kB,初始包体积(base-master.apk)减少了约 43MB。总体而言,初始安装尺寸减少了46%。dart代码、资源文件等会被移动到单独的组件中,只有在需要时才会在运行时下载。安装了所有组件后应用的体积只比非延迟安装的应用仅多几 KB。

延迟组件的应用结构

延期的 Dart 库通过 gen_snapshot(Dart编译器)生成「加载单元」,当以 profile 或者 release 模式构建的时候,每个加载单元输出为一个拆分的 AOT 共享库(.so 文件)。加载单元是代码中用 deferred 关键字引入库的最小的集合,可以从基础库中分离出来。

下图展示了使用延迟组件的应用程序结构,和延迟 dart 库被编译成加载单元并打包成 .aab 文件的「生命周期」。

这个例子有以下特点:

  • 四个 Dart 库,其中 Dart 库 lib1 依赖于 lib2。lib1、lib3 和 lib4 被作为延迟组件导入到 flutter 应用程序的主代码中。
  • 四个加载单元,其中 id 为 1 的是基本单元࿰
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值