首页 > 其他分享 >浅析热更新原理的发展与潜在问题

浅析热更新原理的发展与潜在问题

时间:2023-07-31 14:11:56浏览次数:34  
标签:原生 Web APP 程序 更新 应用 浅析 潜在

原生应用是指针对特定操作系统(如iOS、Android、Windows等)使用原生编程语言(如Swift/Objective-C for iOS,Java/Kotlin for Android,C# for Windows)开发的应用程序。这些应用程序完全针对特定的操作系统和硬件进行优化和设计,能够充分利用操作系统提供的功能和特性。 混合应用(Hybrid Apps)是一种结合了原生应用和Web应用特点的应用类型。它采用Web技术(HTML、CSS和JavaScript)来构建应用的用户界面,并使用原生应用的容器(如WebView)来运行这些Web技术。这样,混合应用能够在Web视图中展示用户界面,同时可以调用设备的原生功能和特性。

原生应用与混合应用的开发发布

1、原生应用

我们都知道传统原生 APP ,整个开发成本非常高、发布周期也比较长。对于需要频繁迭代业务内容的企业来说,无论是更新功能模块还是修复有缺陷的版本,都需要重新测试、重新发版、重新提交第三方应用商店审核上架,还要用户配合,安装新的版本,才能把旧版本覆盖。

我将原生应用的开发与发布流程整理成了一个流程图,这样看应该会比较清晰直观:

 

其实整个开发和发布的流程就是将开发好的源代码编译为二进制包再上架到安卓、iOS的应用商店。

2、混合应用

但是近几年,做混合应用的越来越多,因为大部分开发者还是看中 Hybrid APP 热更新的能力,我们再看混合应用的发布流程。

 

其中与原生应用最大的区别在于代码中包含了 HTML5 代码,而这部分代码可以通过在服务器进行更新的模式直接实现线上的更新上线。

混合应用热更新原理

而更深入的来看 Hybrid APP 热更新是如何实现的,可以发现它的工作原理是这样的:

通常 APP 的服务器端要监测这些内容的更新,然后向设备端的 APP 以某种技术手段发送内容更新的通知,然后 APP 里的一些组件,需要向客户端通过网络同步一些页面内容碎片,并且把这些下载的内容,一般情况是 HTML 和 JavaScript,注入到之前挖好的这些洞洞里。

这里也想说明下,目前网络同步的技术方案有很多,例如通过双向的 Web-Socket ,或者通过 HTTPlongpolling ,或者通过 SSE ,或者通过 PushtoPull ,或者其他自定义的技术手段例如 CMS 去实现。

设备端通常通过 HMR 热模块替换和代码注入等方式让更新的代码在本地生效展示,避免 APP 重启。

 

热更新的潜在问题

理论上说,任何从网上下载更新的源代码,都是不能假设安全可信的。当这些代码被注入到你的 APP 里运行的时候,如何检测其安全性和保护设备端本地应用、本地数据的安全呢?

这里说明下大厂们广泛推崇的小程序类技术,这种小程序的解决方案是在云端检测审核、在设备端则以安全沙箱的技术机制,把下载更新的代码关在笼子里隔离运行。

另外,小程序还有一个管理后台进行上下架的管理,整个上线的方式会更加的灵活。

上面也说到,这个是大厂们推崇的技术方向,大部分的开发者还是无法享受到小程序技术带来的便捷性,但是也有类似 FinClip 这样的小程序容器技术帮助开发者在自己的 APP 中运行小程序,通过云侧管理后台可以实现小程序从开发到上线的全周期管理,从而能够拥有大厂们才具备的小程序热更新能力。

 这种方式会比目前普遍采用的 HTML5 效果更好,一是开发的方式会更加的便捷,二是用户的使用感受会明显有提升。

标签:原生,Web,APP,程序,更新,应用,浅析,潜在
From: https://www.cnblogs.com/Xxx1m/p/17593283.html

相关文章

  • 浅析访问者模式
    目录0.前言1.访问者模式1.1示例1.2解耦对象和行为1.3访问者模式2.VisitorFunc和访问者模式2.1嵌套Visitor0.前言在阅读Kubernetes:kubectl源码时看到有关访问者设计模式的运用。访问者模式是行为型设计模式的一种,本篇文章将对访问者模式做一个介绍。1.访问者模式......
  • 使用技巧(持续更新)
    1.如何以带参数的方式调试程序在载入程序后找到“文件——改变命令行”,点击运行,然后按照如"path\to\aaa.exe""arg1""arg2""arg3"的方式修改命令行即可。如图:......
  • 5.交互式测试客户端及滚动更新、回滚、pod扩缩容
    创建一个专用的交互式测试客户端:拉取镜像kubectlrunclient-$RANDOM--image=ikubernetes/admin-box:v1.2--restart=Never-it--rm--command--/bin/bashroot@client-12383/#在默认名称空间下的服务去访问另一个名称空间下的服务查看另一个名称空间[root@K8s-master01......
  • Upload-labs文件上传靶场通关---{持续更新中}
    Upload-labs文件上传靶场搭建方法请查阅另一篇Blog:基于Ubuntu20.04搭建Upload-labs文件上传靶场upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共21关,每一关都包含着不同上传方式。Pass-......
  • 一些工作方法(持续更新)
    调研步骤:收集——归纳——分析——整理——方案。质量管理:PDCA1、P(Plan)计划,包括方针和目标的确定,以及活动规划的制定。2、D(Do)执行,根据已知的信息,设计具体的方法、方案和计划布局;再根据设计和布局,进行具体运作,实现计划中的内容。3、C(Check)检查,总结执行计划的结果,分清哪......
  • C#中跨线程更新UI简单方法
    .NET3.5中,C#winform无法直接在子线程中更新UI组件的属性,会报“更新UI的线程非UI组件的创建线程”的错误,需要用到委托更新。有两种方式:方式1:stringtest="测试...";this.BeginInvoke((Action)deleg......
  • Veeam Backup & Replication v12 (2023年7月更新版) - 面向所有工作负载的备份软件
    VeeamBackup&Replicationv12(2023年7月更新版)-面向所有工作负载的备份软件VeeamAvailabilitySuitev12请访问原文链接:https://sysin.org/blog/veeam-backup-12/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org全球首屈一指的备份和恢复提供商管理、控制......
  • Windows 11 绕过 TPM 方法总结,通用免 TPM 镜像下载 (2023 年 7 月更新)
    Windows11绕过TPM方法总结,通用免TPM镜像下载(2023年7月更新)在虚拟机、Mac电脑和TPM不符合要求的旧电脑上安装Windows11的通用方法总结请访问原文链接:https://sysin.org/blog/windows-11-no-tpm/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org本文......
  • 浙大版《C语言程序设计实验与习题指导(第4版)》题目集(持续更新)
    C语言练习实验1-1HelloWorld!要求:输出一个短句“HelloWorld!”。答案:#include<stdio.h>intmain(){printf("Helloworld!\n");return0;}实验1-2简单求阶乘问题要求:在一行中给出一个不超过12的正整数N,在一行中输出阶乘的值。答案:#in......
  • 软件测试|如何更新已经安装的Python第三方库
    简介当我们使用Python开发项目时,经常会依赖于各种第三方库来扩展功能或提高效率。这些库经常会发布新的版本,包含了修复漏洞、增加新特性或改进性能等更新。因此,及时更新和升级你的第三方库是很重要的。在Python中,可以使用pip工具来管理和更新这些库。在本文中,将介绍如何使用pip来更......