Flutter 热更新功能实现

Flutter 官方在 GitHub 上声明是暂时不支持热更新的,但是还是有很多能人,通过一些自己的手段,在Android端是能够实现动态更新的功能的。

先看下flutter 的apk 和普通的apk区别

flutter产物apk:

普通apk :

可以发现有很大不用

jni :该目录下存在文件 libflutter.so,该文件为 Flutter Engine (引擎) 层的 C++实现,提供skia(绘制引擎),Dart,Text(纹理绘制)等支持;

libs:该目录下存在文件为 flutter.jar,该文件为 Flutter embedding (嵌入) 层的 Java实现,该层提供给 Flutter 许多Native层平台系统功能的支持,比如创建线程。

assets:该目录下分为两部分:

1. flutter_assets 目录:该目录下存放Flutter 我们应用层的资源,包括images,font等;

2. isolate_snapshot_data,isolate_snapshot_instr,vm_snapshot_data,vm_snapshot_instr 文件:这 4 个文件分别对应 isolate,VM 的数据段和指令段文件。这四个文件就是我们自己的 Flutter 代码的产物了。

所以直接通过tinker等热更新,无法成功

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Flutter热更新通常是指在运行时更新 Flutter 应用程序的代码和资源,而无需重新安装应用程序。Flutter 支持热更新的原因是因为它是一种跨平台框架,并且具有热重载功能。本文将介绍如何实现 Flutter 应用程序的热更新热更新实现原理是,将新的代码和资源文件下载到本地存储,并使用 Flutter 的热重载功能重新加载这些文件。具体步骤如下: 1.使用 Flutter 的热重载功能Flutter 中,热重载是一种在运行时重新加载应用程序代码的功能,可以大大加快开发速度。我们可以通过在 Flutter IDE 中按下“r”键或运行 flutter run 命令来启用热重载功能。 但是,热重载只能更新 Dart 代码,无法更新原生代码。因此,我们需要在 Dart 代码中实现下载和更新原生代码的逻辑。 2.下载新的代码和资源文件 我们可以使用 Dart 的 http 包或 dio 包来下载新的代码和资源文件。下载的文件可以存储在设备的本地存储中,例如使用 Flutter 的 path_provider 包来获取本地存储路径。 3.更新代码和资源文件 在下载完新的代码和资源文件后,我们需要使用 Flutter 的热重载功能重新加载这些文件。我们可以通过在 Dart 代码中调用 Flutter 的 reload 方法来实现: ``` await FlutterReloader.reload(); ``` 这里的 FlutterReloader 是一个第三方库,用于封装 Flutter 的热重载功能。我们可以在 pubspec.yaml 文件中添加以下依赖: ``` dependencies: flutter_reloader: ^1.2.0 ``` 4.处理错误 在更新代码和资源文件时,可能会出现一些错误,例如下载失败、解压失败等。我们需要在代码中处理这些错误,并回滚到之前的版本。 综上所述,实现 Flutter 应用程序的热更新需要使用 Dart 的 http 包或 dio 包下载新的代码和资源文件,并使用 Flutter 的热重载功能重新加载这些文件。在实际应用中,我们还需要处理错误和回滚到之前的版本等问题。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值