flutter_hotpatch

Introduction: Android 端 flutter 资源和代码的热更新,实验性项目,勿用于生产环境
More: Author   ReportBugs   
Tags:

实验性项目,勿用于生产环境

效果:

DEMO:

1.下载 patch 文件夹中的 app-release.apk,然后安装至手机,赋予相关的权限

2.将 libapp_fix.so 和 hotpatch-resource.zip 拷贝至 sd 卡的根目录

3.点击 app 中的启动老版本可查看老版本的内容,然后将 app 进程杀掉,再打开 app,点击热更新,可实现 sd 卡中的 libapp_fix.so 和 hotpatch-resource.zip 动态加载

已经实现的功能:

1.已实现 flutter module 中的代码和资源的热更新

已知问题:

1.只能下发 flutter 代码,不能下发 Android 代码(这也不算问题)

2.flutter engine 版本最好一致

3.点击热更新时必须保证 fluttr engine 没有初始化过,也就是 app 运行时没有初始化过 flutter engine

原理:

1.资源的热更新是通过 Android 自带的 AssetManager,通过反射它的 addAssetPath 方法来将 hotpatch-resource.zip 中的资源实现累加

2.dart 代码层面的热更新通过生成的 libapp_fix.so(so 文件里包含的就是所有业务代码),修改 FlutterLoader 中的 aotSharedLibraryFile 字段实现,具体请参考源码

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools