Flutter 热更新简介
所谓热更新,指的是当应用代码出现缺陷问题时,不需要重新打包提交App Store即可完成缺陷的修复。众所周知,使用原生技术开发的应用体验虽然好,但开发、上线周期长也常常被诟病,特别是当应用出现线上问题时,不得不重新打包发布,大大的影响了用户体验,而热更新技术就是为有效解决线上缺陷而提出的。
不过,热更新虽然具有很大的优点,但是滥用热修复也会给应用带来不好的体验,并且苹果对于热更新和修复是明令禁止的,所以热更新主要针对的是国内Android市场。目前,Flutter对外开放的SDK是不支持热更新的,但是在Flutter的源码里有一部分预埋的热更新相关的代码,可以通过一些必要的手段在Android端实现动态更新功能。
众所周知,不论是新创建的Flutter项目,还是原生工程以Moudle或者aar的方式集成Flutter,最终Flutter在原生Android端应用中都是以混合的形式存在的。所以,当我们拆开一个Flutter在release模式下编译生成的aar包时,其目录结构下图所示。
实际开发中,只需要关注assets、jni、libs这三个目录即可,其他都是原生的壳工程产物。
- jni:该文件目录下存放的是libflutter.so文件,该文件是Flutter引擎层的C++实现,提供skia绘制引擎、Dart和Text纹理绘制等支持。
- libs:该文件目录下存放的是flutter.jar文件,该文件为Flutter嵌入层的 Java实现,主要为Flutter的原生层提供平台功能支持,比如创建线程。
- assets:该文件目录主要用于存放Flutter应用层的资源,包括images、font等。
而众观目前所有的Flutter热更新方案中,其基本原理实现都是一样的,即通过修改libapp.so的加载路径,把它替换成开发者自己的libapp_hot.so来实现热更新。我们可以打开io.
转载:https://blog.csdn.net/xiangzhihong8/article/details/105726562
查看评论