| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> 【译】Flutter 延迟组件原理与自定义 【包体积优化 _ 动态化 -> 正文阅读 |
|
[移动开发]【译】Flutter 延迟组件原理与自定义 【包体积优化 _ 动态化 |
延迟组件主要通过 dart 中的 dart 中 加载单元 ID 然后通过 runtime controller、engine 和 platform view 传递到 Android 嵌入层中的 FlutterJNI。这里,加载单元 ID 被传递到 之后 请记住,多个加载单元可能包含在一个延迟组件中,但是 通过延迟组件名称进行安装我们还提供了 framework-side DeferredComponent utility class,它允许通过延迟组件名来直接安装。 这个方法可以有两个用途:
这个直接的 API 通过 platform channels 直接调用 卸载DeferredComponent 的工具类中还提供了 只能用将要卸载的组件名称来请求卸载。目前还不支持通过加载单元 id 或直接调用 dart 来卸载。 工具延迟组件必须构建为 Android App Bundles ( 延迟组件使用 构建过程还依赖于项目设置来发挥作用。每个延迟组件必须对应于应用程序的
因为错误地将延迟组件库作为非延迟组件库导入会导致文件被编译到基本加载单元中,所以延迟组件验证程序也有一种机制来防止对应用最终生成的加载单元的意外更改。如果生成的加载单元与缓存在 自定义实现可以不通过 Android Play 商店实现自定义下载。这只推荐给高级开发者,主要针对具有特殊需求的应用,如超大的静态资源,某些特定地下载行为,或无法访问 Play 商店的地区(如中国)。 简介Flutter 嵌入层允许自定义实现,处理自定义的的延迟组件下载和解压,同时仍然允许访问核心的 Dart 回调,该回调将加载单元注册到 Dart runtime。这个过程比默认的 play store 版本要复杂。 要实现一个自定义延迟组件系统,主要包含以下部分:
下面的部分会做详细的指导: DeferredComponentManager- 安卓嵌入层嵌入层负责下载和安装打包的组件文件。这可以通过在 Android 嵌入层中继承抽象类 DeferredComponentManager 来实现
为了将加载单元 id 解析为特定的组件,通常需要存储加载单元 id 到组件名称的映射。在默认实现中,我们通过在应用程序中的 你可以在 engine 源码中的 要加载 Dart 库,请提供加载单元 id 和路径列表并调用 要加载新静态资源,创建一个可以访问新下载的静态资源的资源管理器。通过
工具Flutter 的构建工具有引导 要让 文件服务器由于自定义实现通常不使用 Play 商店,用户应该实现一个文件管理服务。这部分的实现方式是很灵活的,唯一的要求是它能与 最后其实根据 Gallery 的案例,我们可以看出,如果安装包中静态资源占比很高时,延迟加载对于 app 体积优化非常明显。而国内必须要通过自定义的方式实现延迟组件的管理,这本身是有成本的。所以,这项技术是否真正适合落地于业务中还需要评估收益比。但从技术本身的角度来看,里面可玩性还挺高的,提供动态加载库的能力其实可以发散很多方向。后面有空也尝试实践落地,如果你也感兴趣欢迎关注,点赞,在评论区留下你的看法。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:43:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |