- 1、研究基于 Flutter Shorebird 热更新支持中国区域的问题
- 2、Embed a Flutter module in your iOS app - Use frameworks
- 3、Code Push for iOS Hybrid Apps
- 4、快速集成 Flutter Shorebird 热更新
目录
shorebird的安装
参考官方文档(上面的参考文章3、4),有很详细的注册、登录、初始化、发布、发布补丁的说明
其实上面也已经说明了主要步骤就是提到的5步。
对原有工程的改造
使用Shorebird热更,Flutter Module的集成就不能使用cocoapods的方式进行集成,需要使用Use frameworks的方式进行集成
参考上面的第1、2、篇文档,(其实就是framework的引入)
在使用下面的命令生成framework时,始终无法生成 FlutterPluginRegistrant.xcframework
shorebird release ios-framework --release-version 1.2.3+4
要生成这个framework,需要在flutter工程的pubspec.yaml文件下的 dependencies 下进行一个插件依赖,否则不会生成,比如添加:device_info_plus: ^3.2.3
注意生成的是动态库还是静态库,并且App.xcframework和ShorebirdFlutter.xcframework需要 Embed & Sign
提示
(1)使用Use frameworks 的方式集成,在平时开发中是无法调试的
(2)平时开发可以使用cocoapods的方式,打包机可以使用Use frameworks的方式
(3)打包机可以通过脚本进行frameworks的生成,依赖添加。可以想想怎么让它更自动化的进行
实现热更新
一、查看目录
iOS 存放补丁相关文件在下面的路径 “AppData/Library/Application Support/shorebird”
手机连接xcode,在 Window -> Devices and Simulators 下找到已经安装的app,可以导出xxx.xcappdata文件
显示包内容后可以看到app的沙盒目录
二、拿到最新的path
1、shorebird 官方免费版本一个path更新包只能使用5000次,更多次数的支持是收费的。
2、我们可以使用一个com.lxy.demo2的app,使用官方的更新(只有我们自己用所以次数消耗会很好5000次已经够用很久了),然后拿到沙盒目录下的shorebird目录(这里存放着最新的path包) 另外注意到shorebird可以关闭自动更新,编辑 shorebird.yaml内auto_update: false。还未具体研究
3、将该目录压缩后shorebird.zip放在自己公司的后台以供下载
4、在com.lxy.demo的app内,书写下载、解压、替换shorebird目录的逻辑,达到flutter页面的更新。
重要提示
(1) 下载替换的时间点要好好想一想,比如启动、前后台切换。建议是启动时做一次,因为在app启动过程中进行替换,发现有的界面替换了,有的界面没有被替换。
(2) 考虑降级逻辑,如果新的path包有严重bug,如何降级回原有逻辑。
(3) 既然我们自己提供了下载path包的逻辑,是否可以把灰度做起来。
三、在本地启动一个服务,用于下载
1、打开“终端”应用程序
2、导航到你想要提供下载服务的目录
3、如果你使用的是 Python 3,输入以下命令:
python3 -m http.server 8000
4、现在,你的下载服务已经启动。任何在同一网络中的设备都可以通过访问你的 Mac 的 IP 地址和端口 8000 来下载文件。例如,假设你的 IP 地址是 192.168.1.100,你可以在浏览器中访问 http://192.168.1.100:8000
5、如果要在iOS工程中通过AFN下载相关的文件,那么url如下:
http://192.168.1.100:8000/shorebird.zip
行者常至,为者常成!