watermark,image_bG9nby9jc2RuXzEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLGhfNTY=,g_se,x_0,y_0,t_100



大家好,我是章鱼猫。

今天给大家推荐的这个项目是「HotfixFlutter」,混栈开发之 Android 端 Flutter 热更新,使用 Tinker 实现 Flutter 热更新,兼容 flutterboost。

Google 从性能和安全两方面考虑,暂时不会推出热更新,把这个功能交给用户和第三方去处理。结合公司不愿提供任何资源,只能走捷径的方式使用 Tinker 去实现 Flutter 的热更新。

整个修复过程,都是利用 Flutter 自身加载 so 文件去实现,所以不会出现兼容性和安全性的问题,而且也不会对系统性能有任何大的损耗。同时,Tinker 开源,可以方便的查阅 Tinker 的源码。

第一次运行 Demo,请先按以下步骤:

1、down 下来后,先打开 flutterhotfixmodule 项目,open -> HotFixFlutter -> flutterhotfixmodule,再打开 pubspec.yaml,点击 Pub get,执行完成。

2、打开 HotFixFlutter,切换到 Project 下,打开根目录的 settings.gradle,把下面的配置 copy 进去:

setBinding(new Binding([gradle: this]))
evaluate(new File(settingsDir.parentFile, '/HotFixFlutter/flutterhotfixmodule/.android/include_flutter.groovy'))
include ':flutterhotfixmodule'

点击 Sync Now,执行完成,就会看到项目结构变成田格样式:


watermark,image_bG9nby9jc2RuXzEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLGhfNDE=,g_se,x_0,y_0,t_100


3、在 App 的 gradle 里,配置下面 flutter 和 flutterboost 的依赖,再次 Sync Now。

implementation project(':flutter')
implementation project(':flutter_boost')

4、把 bugly id 复制到 bugly 初始化里面:

Bugly.init(this, "你的bugly id", true);

运行 gradle 下面的 assembleRelease 任务,执行完成,安装 build -> bakApk -> 带有日期文件夹 -> app-release.apk。

5、去 flutterhotfixmodule 项目下修改 dart 代码,以及添加加载图片资源。修改完后回到 HotfixFlutter 项目下,把 build -> bakApk 下生成目录上的安装日期抄写到 tinker-support.gradle 里的 baseApkDir 里。执行:


watermark,image_bG9nby9jc2RuXzEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLGhfNjI=,g_se,x_0,y_0,t_100


6、进入 bugly 官网,打开热更新页面,点击发布新补丁,找到 build -> outputs -> patch -> patch_signed_7zip.apk,上传完成,点击全量设备(只限测试,别整个生产的 bugly id 进来),立即下发。稍微等待那么一小会,杀掉应用,再重新打开,会出现:


watermark,image_bG9nby9jc2RuXzEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLGhfNjI=,g_se,x_0,y_0,t_100


代表补丁已经打上去了,杀掉应用,再次打开进去 flutter 页面,修复成功。

点击阅读原文查看更多。

开源项目地址:github.com/magicbaby810

开源项目作者:magicbaby810

最后,照旧安利一波我们的公众号:「GitHub 精选」,目前每天都会推荐一篇优质的开源项目文章,主要分享比较实用或有趣的开发工具与开源项目。我们的目标是:挖掘开源的价值。这个公众号超级值得大家关注。

推荐阅读:

一款使用 GitHub Issue 作为数据存储的轻量级评论插件

命令行提效:增加配置化功能的增强型 grep 工具

这个项目教你如何实现 PDF 转 Word

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐