HotFixAndroid开发Android技术知识

Hybrid App 跨平台热更新方案实践 附带源码

2017-06-22  本文已影响173人  free46000

前言

移动开发的跨平台与快速发布一直是开发者的追求,也是技术的一个发展趋势,现在各大厂开始有了自己的大前端团队,所以我们也开始了自己的探索,目前来说主要有两种思路:

其实关于这两种思路对比,网上有很多大牛分析的很全面了,总结来说各有利弊很难完美,本篇文章我们主要讲一下Hybrid App实践,采用前后端分离以及单页应用技术开发Web页面,使用WebView加载Web页面,并通过JS通信提供一些Native层的支持,通过接口获取差异化页面资源文件,在本地整合更新,还可以达到热更新的需求。在我看来此方案更适用于需要快速发布、多端兼容、对性能要求稍低的业务,正好符合我们的需求。

源码

这里我整理了Android端会用到代码,包含JS通信,文件处理工具类,闪屏辅助类和WebView的封装。
Github地址:https://github.com/free46000/HybridFoundation,请大家多多关注,由于源码并没有完善,所以暂时没有发布到Maven仓库

方案详解

既然确定了方向,那么就应该确定具体的方案了,通过自己的经验和网上资料整理,画了时序图:


imageimage

按照图上的时序,接下来说一下每一步中的实践,以及碰到的坑。下面讲解

初次安装

展示页面

资源文件获取

资源文件采取差异化更新方案,本地存储一个标识,可以为版本号或者更新时间,这个可以和后端同学一起商量确定。
资源文件下载还有推送之类的由于Html的局限性,所以还是直接由Native层做比较合适,下面简单讲解下应用中的两种更新方式:

资源文件更新

根据差异化清单对资源文件进行整合,存放在临时目录中,然后在第二次打开应用时更换,并展示更新后的界面,达到热更新的效果。

总结

本文只是概括的讲了结构的内容,可能会遗漏一些要点,如果大家有什么问题欢迎留言或者去GitHub上提交issue

作者开源了一个优雅的实现多类型的RecyclerView类库 支持DataBinding Form表单录入,跨多个RecyclerView拖动 Github地址:https://github.com/free46000/MultiItem

上一篇下一篇

猜你喜欢

热点阅读