Flutternativeweb混合开发探索实录项目背景纯原生的应用拥有最丝滑的体验,但是App迭代会受限于应用

经过不懈的努力,最终完成了一整套App混编方案,让H5模块秒开加载,并且与纯原生部分,Flutter部分有机结合。

我们探索了一套混编开发方案,它既保证了纯原生的丝滑体验,又能让web业务模块无延迟更新迭代。它是以纯原生App作为web容器,web应用模块作为动态加载插件的方式来运作。用前者来保证体验,用后者来确保迭代。

主要解决3个关键问题:

webView加载一个url时,常规流程如下:

移动端webView加载H5页面的过程大概分为以下3个阶段:

第一个阶段,webView尚未创建,而webView初始化的过程其实是加载浏览器内核,尤其是在打开web首页时,以及打开web子页面时感受较为明显,前者加载内核会肉眼可见的慢。但是解决方式也很简单,在打开页面之前,提前初始化webView,让浏览器内核提前加载,可以一定程度上提升首次打开的速度。

第三个阶段,web加载状态。此时要想在视觉上让用户感觉加载很快,就要求H5的渲染顺序上做出优化,开始加载时先展示出页面框架以及loading动画,有多个接口时,让接口返回结果单独与组件对应渲染,而不是所有接口都完毕之后再渲染。

在本方案中,App本身是一个webView容器,容器上运行的是web应用,这两者的关系类似“插件化”的概念,webView容器作为宿主,web应用作为插件。而插件必须依托一个托管平台。宿主在特定时机与托管平台进行通信更新插件,再去运行插件代码。

解决即时更新,需要App端和托管平台合作完成。

web应用,打包成zip包,任何你想要离线的静态资源都可以通过打包的形式放到zip包内,我们称为“离线包”,每一个离线包都代表一个web应用。

托管平台就类似一个离线包的“池子”,在复杂的业务场景中,多个业务方上传各自的离线包进入“池子”,并附带上每个离线包的配置信息,就是上图中的manifest.json文件。

manifest.json是每个web应用的身份配置信息,内容展示如下:

上图中规定了一个web应用的一些关键元素。

entryUrl:web应用入口地址,在webView启动应用时将会去加载这个url。

version:应用版本号,提供web应用的版本管理。

updateStrategy:更新策略。一个web应用可以支持多个安卓或iOS应用,上面支持配置原生应用的包名,版本号(支持^2.1.0这种写法的模糊匹配)。

当App去通过网络请求拉取离线包时,需要传入平台标识(Android/iOS),AppId(App包名),AppVersion(App版本号),接口从离线包的“池子”中根据所有离线包的updateStrategy进行检索,找出当前App能够使用的最新离线包列表。

在App沙盒内,建立两个目录,一个temp目录,一个active目录,分别表示离线包暂存区,以及生效区。能够被匹配到的只有生效区的离线包,暂存区只做暂时存储,在合适的时机会被移动到生效区。(类似git的管理方式)

每次接口返回的离线包列表,我们会按照下面的流程进行更新替换:

上图中有一个多线程执行,每个线程的逻辑如下:

环节解释:

通过以上流程,保证在宿主app上打开web应用时,都能使用业务方发布的最新代码。

上文提到,要加快web页面的打开速度,其中一个重要环节是静态资源离线化。

资源的匹配,本质上是网络资源路径和本地资源路径的映射关系。基本的匹配规则如下:

它指向的就是离线包demo内的/1.0.1/index.html文件。

纯Web应用与纯原生应用之间的差距,除了启动速度之外,就是运行中的体验,差距明显。为了抹平这一差距,我们提供丰富的原生能力让H5去调用,使得app使用体验最大程度接近纯原生应用。

WebView的多媒体功能,比如视频播放,web前端的体验是完全和原生无法比拟的。像类似这种功能,使用我们App的提供的原生功能去实现,要比纯前端播放视频的开发要简单,兼容新更强,并且前端的工作量更低,甚至可以轻易做到前端无法做到的效果,比如京东App上能看到的可拖动视频悬浮窗,而web开发处理视频层级覆盖很麻烦。

类似的功能还有,音乐播放,视频剪辑,图片截取等。诸如此类纯web不好做的功能,都能通过原生能力来弥补,然后由web和原生之间的通信来进行数据传递。

原生能力主要分为以下几个方面:

必须说明的是,要扩展原生能力,或者修复原生能力的bug,我们都需要对Web容器进行版本更新,所以接入方有少量的维护成本。

此方案的核心目的是优化web应用的体验,除了以上3个核心特性之外,还有一些额外特性,给与更多拓展可能。

如果完整来看待一个完整的SDK项目,它的结构如下:

flutterBoost的核心作用:

它的架构图如下:

目前我们实现了web应用贴近原生的体验,但是仍有提升空间。

一个方案从诞生到完善,能做的还有很多,万里长征,始于足下。

THE END
1.有哪些手机app,你们觉得用户体验很棒?用户体验棒要不就是有趣要不就是实用,或者是以前从来没有见过,但是用了觉得不错的!!推荐几款我https://www.zhihu.com/question/22434883/answer/2626107156
2.让APP使用体验更顺畅“有些‘摇一摇’广告特别灵敏,手机轻轻一晃或稍有颠簸就会跳转页面,都来不及关闭。”说起一些APP的“摇一摇”功能,北京白领周先生深受其扰。走在路上使用手机时,他常常会“中招”——被迫打开第三方APP或者下载安装新的应用。 对于周先生反映的“摇一摇”乱跳转问题,《通知》提出,开屏和弹窗信息窗口要提供清晰有效https://m.gmw.cn/2023-03/15/content_1303308789.htm
3.如何写app使用感受.docx如何写app使用感受使用感受:Mostly是指对一个应用程序的使用体验的感受。这可以是一个应用程序的设计,布局,功能,易用性等方面的评论。 对于我最近使用的两个应用程序,我将介绍一下我的使用感受。1. Instagram:Instagramhttps://www.renrendoc.com/paper/259561147.html
4.对于美食app的使用体验5. 您平常是否会使用美食类app如饿了么,大众点评等 会不会 6. 平常用什么美食类app多 大众点评饿了么其他更多 7. 其他类请在下方填出 8. 您是否认为市面上的美食类app有缺点 是的没有 9. 如果有缺点请列举 10. 如果有无广告易使用的美食推荐app您会考虑使用吗 会不会 11. 您一餐的花销为 10元以下https://www.wjx.cn/xz/294173064.aspx
5.app在线制作免费体验使用app开发本专题为应用公园的app在线制作免费体验使用专题,内容全部来自应用公园精心选择与app在线制作免费体验使用相关的最新资讯,应用公园是APP在线制作平台,不会编程,也能自己制作APP。http://www.apppark.cn/k-33899.html
6.用户既有经验对聚合类新闻APP使用体验的影响传媒原标题:用户既有经验对聚合类新闻APP使用体验的影响 数字化环境下的媒体转型或媒介产品开发的逻辑起点,应当是从用户需求端来反推媒介产品供应端的场景构建。因此,用户洞察理论与技术的发展是当今传媒行业的迫切需要。本研究尝试选取“用户”这一媒介体验影响因素中的“既有经验”作为研究变量,基于认知神经科学中EEG频域分http://media.people.com.cn/n1/2018/1221/c423025-30480848.html
7.携程APP的使用感受怎么样?首页上方的搜索框方便用户快速查找目的地、日期等信息,下方则展示了热门目的地、特价机票、酒店优惠等推荐信息,方便用户了解当前热门的旅行线路和优惠活动。此外,携程APP还提供了个性化推荐,根据用户的浏览记录和喜好,为用户推荐合适的旅行产品,提高用户的使用体验。其次,从功能丰富程度来看,携程APP涵盖了https://zhidao.baidu.com/question/1616022565523140667.html
8.RBK53AC9000M三频Mesh三体分布式路由器使用总结设置速度【App使用体验】 第一次联网使用首次使用App会要求进行配置 检测分身扩展(分体路由),当处于主体路由无线覆盖的范围内分体路由就会自动联机上 不得不说网件App的功能还是较为简单,但是也很适合不爱折腾讨厌繁琐的消费者 登录Orbi可以用iPhone访问(使用Touch ID登录),支持两种方式联网:静态IP、PPPoE;还可以查看当前连接的https://www.smzdm.com/zy/detail/ayqxxl3/
9.追觅扫地机器人S20Pro好用吗追觅扫地机器人S20Pro使用体验1、APP体验 首次使用追觅S20 Pro,需要DreameHome App配合使用,在APP中提供了两个模式:智能托管和自定义清洁。 智能托管模式下又分为日常清洁和极致清洁,两种模式都可针对家庭区域的不同版块进行脏污程度分析来实现智能复洗复拖,而极致模式将更加精细地针对地面材质进行清洁,达成更彻底的清洁效果。 https://www.jb51.net/hardware/zonghe/877989_all.html
10.我体验了400多个App,为你推荐好用的App原标题:《他下载并体验了400个APP,告诉你有哪些很好用的APP?》 数英网用户原创文章,如需转载请联系原作者 我手机68G,目前下载400个左右APP,还有16.8G没有用完。 个人观点,如果不能充分使用它的内存,就像拿着坦克当拖拉机用,拿机关枪当烧火棍会晤,不能深度体验它的作用它的美,看到绚丽多彩的APP世界,乔布斯既然https://www.digitaling.com/articles/24070.html
11.产品体验报告:在行APP分析51CTO博客产品体验报告:在行APP分析 1 产品概述 1.1体验环境 设备型号:iPhone 6p 操作系统:iOS 11.4.1 体验版本:v3.8.0 体验时间:2018.07.20-2018.08.12 2 市场分析 2.1 目标用户 从360趋势可以得出性别比例相差不大,用户人群年龄集中在19-34岁之间,地域集中在以北京广东为主的一二线经济发展比较快的地区或互联网行业https://blog.51cto.com/zhuxiaoxia/6543534
12.朋友圈被超火的“捏脸游戏”刷屏了?但这款APP的使用体验真是一言但这款APP的使用体验真是一言难尽! 从前几天开始,小姐姐的朋友圈被一些3D卡通人像刷屏了。 大家的基本点都是“捏得像不像本人?” 有没有朋友一脸懵逼?如果你还不知道这些图像是什么,那没法跟你成为好朋友了。 这些3D虚拟动画,全都来自一个叫做ZEPETO的APP。苹果APP store 热门搜索和https://static.zhoudaosh.com/files/cnews/2018/20181203/9C8A51BE2717976E3A190DE0F5BCACCEE4B94A0D66BB23C6FEBEB8440AB1910E/3.html
13.大家使用过青桔电单车吗?滴滴旗下,我使用体验非常差,感觉这就是一本人买了app次卡,每次抵扣3元钱,开始使用时费用是前15分钟2.6元,然后超出时间每十分钟0.5元钱,等于每次你使用15分钟内次卡抵扣不收https://www.yoojia.com/ask/17-12057175156570736498.html
14.小米与轻客电助力折叠自行车对比评测轻客的VeloUP!威履!智慧动力系统还可以不断学习用户行为,随着系统固件的不断升级,系统在骑行意图的识别以及动力辅助会不断进化,带来更好的助力骑行体验。 三、APP使用体验 虽然小米电助力折叠自行车已经配备有“行车电脑”不过它依然可以搭配米家骑记APP使用,通过配对连接之后,我们可以在APP上读取自行车的骑行里程、https://www.pcpop.com/article/2994519.shtml
15.比亚迪汉冠军版车机使用分享与普通pad使用起来无二,往左滑会显示车辆情况。 往右滑为车机app 点击行车记录仪,可以看到近期的录像以及设置,设置中可以选择录制时长等常用信息 车机app使用体验 音乐软件 买车时自带了一些app,酷狗,搜狗,网易云,qq音乐等。可以通过唤醒车机让播放音乐,但是设置中只能支持酷狗和搜狗的唤醒,应该是官方的合作。 https://www.dongchedi.com/article/7232557258750771752
16.在电脑上体验了16款手机App后,我很失望Windows 11 的发布会上,未来可使用 Android app 作为一大升级引起了大家的广泛讨论;如果你使用的是搭载 Apple Silicon 的 Mac,也可以在 App Store 的搜索界面中,看到「iPhone 与 iPad app」选项——能用手机 app,已经成为了电脑的必修课。 那么,今天在电脑上用手机 app 的体验,能配得上用户对它的期待吗? https://36kr.com/p/1471889815073026