CN110659057A - 应用程序热更新方法、装置、存储介质及计算机设备 - Google Patents
应用程序热更新方法、装置、存储介质及计算机设备 Download PDFInfo
- Publication number
- CN110659057A CN110659057A CN201910906168.1A CN201910906168A CN110659057A CN 110659057 A CN110659057 A CN 110659057A CN 201910906168 A CN201910906168 A CN 201910906168A CN 110659057 A CN110659057 A CN 110659057A
- Authority
- CN
- China
- Prior art keywords
- sub
- application program
- version number
- application
- page
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种应用程序热更新方法、装置及计算机设备,当需要母应用程序中的任一子应用程序热更新的情况下,本发明可以直接获取该子应用程序的新版本号及其对应的动态字符串代码,并存储到本地,不需要创建相应的视图组件,而是在该子应用程序响应启动指令运行时,直接利用该动态字符串代码,解析得到子应用程序的语法树,再据此编译得到子应用程序中待更新页面的可执行代码,运行可执行代码,实现子应用程序热更新,避免了调用函数运行字符串代码被母应用程序所在应用平台禁止,导致无法实现子应用程序热更新的情况发生,保证了子应用程序热更新效率,能够快速响应子应用程序的业务变更及线上问题的处理。
Description
技术领域
本发明涉及互联网技术领域,更具体的说,是涉及一种应用程序热更新方法、装置、存储介质及计算机设备。
背景技术
随时移动互联网技术的发展,社交应用程序已成为人们日常生活、工作等方面的重要沟通工具,以微x这一社交应用程序为例,其通常支持使用通过共享流媒体内容的资料和基于位置的社交插件“摇一摇”、“朋友圈”、“公众平台”等服务插件,同时在该社交应用程序内也可以运行各种不同的小程序,来为用户提供差异化的服务。
其中,小程序是一种不需要下载安装即可使用的应用,企业、政府、媒体、其他组织或个人均可以在社交应用程序所属的应用平台申请注册小程序,以借助社交应用程序的使用者,推广小程序发布的消息。
在实际应用中,部署在母应用程序(如上述社交应用程序)的子应用程序(如上述小程序等)的开发、发布等,通常需要母应用程序所属应用平台审核,而母应用程序的应用平台往往会限制更新子应用程序所调用函数的运行,极大影响了子应用程序的更新效率及其业务问题解决速度。
发明内容
有鉴于此,本发明提供了一种应用程序热更新方法、装置、存储介质及计算机设备,解决了现有技术因调用函数运行字符串代码的事件会被母应用程序的应用平台禁止,而无法实现应用程序在线热更新的技术问题。
为解决上述技术问题,一方面,本发明实施例提出了一种应用程序热更新方法,所述方法包括:
在母应用程序运行期间,获取子应用程序的新版本号对应的动态字符串代码;
存储所述新版本号对应的动态字符串代码;
响应所述子应用程序的启动指令,利用所述动态字符串代码,解析得到所述子应用程序的语法树;
利用所述语法树中的节点数据,得到所述子应用程序的待更新页面的可执行代码;
执行所述可执行代码,更新所述待更新页面的页面数据,展示所述子应用程序更新后的页面。
可选的,所述获取子应用程序的新版本号对应的动态字符串代码,包括:
调用版本控制接口,获取子应用程序的新版本号;
将所述新版本号与本地存储的所述子应用程序的当前版本号进行比对;
若所述新版本号与所述当前版本号不同,调用代码获取接口,加载所述新版本号对应的动态字符串代码。
可选的,所述方法还包括:
检测是否成功加载所述新版本号对应的动态字符串代码,是否成功解析得到所述子应用程序的语法树;
若所述新版本号对应的动态字符串代码加载失败,或者未成功解析得到所述子应用程序的语法树,调用并执行所述子应用程序待更新代码,输出所述子应用程序的待更新页面。
可选的,所述方法还包括:
检测是否成功展示所述子应用程序更新后的页面;
若未成功,调用并执行所述子应用程序待更新代码,输出所述子应用程序的待更新页面。
另一方面,本发明还提供了一种应用程序热更新装置,所述装置包括:
动态字符串代码获取模块,用于在母应用程序运行期间,获取子应用程序的新版本号对应的动态字符串代码;
存储模块,用于存储所述新版本号对应的动态字符串代码;
语法树获取模块,用于响应所述子应用程序的启动指令,利用所述动态字符串代码,解析得到所述子应用程序的语法树;
可执行代码获取模块,用于利用所述语法树中的节点数据,得到所述子应用程序的待更新页面的可执行代码;
页面数据更新模块,用于执行所述可执行代码,更新所述待更新页面的页面数据,展示所述子应用程序更新后的页面。
另一方面,本发明还提供了一种存储介质,其上存储有程序,所述程序被处理器调用并执行,实现如上所述的应用程序热更新方法的各步骤。
另一方面,本发明还提供了一种计算机设备,所述计算机设备包括:
通信接口;
存储器,用于存储实现如上所述的应用程序热更新方法的程序;
处理器,用于加载并执行所述存储器存储的程序,以实现如上所述的应用程序热更新方法的各步骤。
经由上述的技术方案可知,与现有技术相比,在母应用程序中的任一子应用程序,在用户使用母应用程序过程中,希望该子应用程序实现在线热更新的情况下,本发明可以直接获取该子应用程序的新版本号及其对应的动态字符串代码,并存储到本地,不需要创建相应的视图组件,而是在该子应用程序响应启动指令运行时,直接利用该动态字符串代码,解析得到子应用程序的语法树,再据此编译得到子应用程序中待更新页面的可执行代码,运行可执行代码,即可在线实现对子应用程序的待更新页面的更新,即实现了子应用程序的在线热更新,避免了调用函数运行字符串代码被母应用程序所在应用平台禁止,导致无法实现子应用程序热更新的情况发生,保证了子应用程序热更新效率,且能够及时修改子应用程序的一些线上bug,上新一些新特性,即快速响应业务变更及线上问题的处理。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1示出了实现本发明提出的应用程序热更新方法的一可选示例的系统结构示意图;
图2示出了本发明提出的一种计算机设备的硬件结构示意图;
图3示出了本发明提出的应用程序热更新方法的一可选示例的流程图;
图4示出了本发明提出的应用程序热更新方法的应用场景中,终端中设置母应用程序及子应用程序的结构示意图;
图5示出了本发明提出的应用程序热更新方法的应用场景中,母应用程序搜索子应用程序以加载运行的流程示意图;
图6示出了本发明提出的应用程序热更新方法的又一可选示例信令流程图;
图7示出了本发明提出的应用程序热更新装置的一可选示例的结构图;
图8示出了本发明提出的应用程序热更新装置的又一可选示例的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
其中,在本发明实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本发明实施例的描述中,“多个”是指两个或多于两个。
以下术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
如今,随着人工智能的技术研究和进步,使得人工智能技术在越来越多的领域中发挥重要的价值,机器学习/深度学习作为一种人工智能技术,其实际上是一门多领域交叉学科,涉及概率论、统计学、凸分析、算法复杂度等多门学科,主要包括人工神经网络、强化学习、归纳学习等技术。
针对背景技术部分描述的技术问题,本发明注意到,其是由于部署在母应用程序(其是指终端运行的能够提供各种服务的应用程序,如各种社交应用程序,本发明主要以微x为代表的即时通信应用为例进行说明)中的子应用程序(其可以指母应用程序中运行的程序,如小程序)上线采用审核机制,这使得子应用程序的更新、bug修改等均受限于母应用程序所在的应用平台审核,尤其是对于一些紧急问题处理,极大降低了子应用程序的热更新效率及业务问题处理速度。
以子应用程序是小程序为例,现有技术中通常是通过调用Javascript的eval()/new Function()函数,来运行字符串代码,动态加载Javascript字符串代码,利用Javascript的能力运行字符串,从而达到热更新的效果。然而,在实际应用中,由于eval()/new Function()函数在前端的框架、构建工具中都会使用,虽然能够据此实现小程序的热更新,但小程序所在的母应用程序(如微x)的应用平台一旦发现该问题,将会及时禁止小程序调用eval()/new Function()函数,也就无法继续采用这种方式进行热更新。
对此,本发明提出了基于小程序的网页视图(Web-view)组件,也可以称为视图组件,其可以用来承载网页的容器,会自动铺满整个小程序页面,类似于HTML(HyperTextMarkup Language,超文本标记语言)中的iframe框架,能够运行H5(HTML5)应用,由于H5是可以随时发布更新的,所以,小程序使用视图组件就可以通过H5应用链接,获取小程序的最新的页面,实现小程序的热更新。
然而,由于如小程序这种子应用程序本发明通常提供了强大的原生能力,如音视频播放、调用相机、蓝牙、地图、NFC(Near Field Communication,近距离无线通讯技术)快速支付等,但使用视图组件更新小程序页面后,这些原生能力将会受到一定限制,由于视图组件中运行的网页只支持JSSDK(一个面向Javascript(一种直译式脚本语言)程序员的SDK(Software Development Kit,软件开发工具包))提供的接口,以使得更新后的页面只能用到少部分的小程序原生能力,可见,这种基于视图组件的热更新方法只适用作为过渡方案,可以应用于某些对系统原生能力要求不高的应用的热更新,具有很大局限性。
为了进一步改善上文提出的几种应用程序热更新方法中存在的问题,本发明希望利用Javascript的能力,动态加载本次更新应用程序所需的更新代码后,并采用其他方式替代上述eval()/new Function()函数,且能够达到调用eval()/new Function()函数类似的效果,即对更新代码解析,并引入到该应用程序相应页面中,实现应用程序的热更新,不需要母应用程序所属应用平台审核,保证了子应用程序热更新效率及业务问题解决速度,也就解决了母应用程序发现调用eval()/new Function()函数,会禁止该操作,影响子应用程序热更新的技术问题,且由于不需要使用视图组件,保证了更新后的应用程序的原生能力。
参照图1,为实现本发明提出的母应用程序运行子应用程序的一可选示例的系统架构图,也就是实现本发明提出的应用程序热更新方法的系统架构示意图,本实施例在此以母应用程序是社交客户端,如微x等,子应用程序是小程序为例,对该系统架构进行说明,该系统可以包括终端11、设置于终端11中的社交客户端12、为社交客户端提供服务的社交服务器13,以及为部署在社交客户端12中的小程序提供服务的小程序服务器14等,其中:
终端11可以是手机、笔记本电脑、平板电脑、台式电脑以及工控机等用户设备,其可以从应用商城或网页下载社交客户端的安装包并安装,当然,本发明的社交客户端也可以是网页应用程序,用户可以通过浏览器登录该社交客户端,本发明对终端11及社交客户端的产品类型不作限定。
社交客户端12可以是为用户提供服务的应用程序,如目前用户普遍使用的微x等即时通信应用程序等,用户之间可以通过社交客户端进行即时通信,本发明对该社交客户端所能够提供的服务内容不做详述,
本实施例中,社交客户端12还可以部署并运行小程序,通常在首次运行小程序时,需要下载小程序,可以向小程序服务器14发送初始化请求,来下载小程序的源代码,完成小程序的初始化后,通过解析小程序的源代码,实现小程序页面加载,之后,小程序可以通过向社交服务器13发送数据请求,以获取页面显示所需的数据,进而依据获取的数据进行页面渲染,实现小程序在社交客户端中的页面显示。
社交服务器13可以是为社交客户端12提供服务的服务设备,其是与社交客户端相匹配的一个或多个服务器,本发明对该社交服务器13的硬件/软件组成结构不做详述。若社交客户端12是即时通信应用程序,该社交服务器13可以是与该即时通信应用程序相匹配的即时通信服务器。
小程序服务器14可以是为相应的小程序提供服务的服务设备,对于不同类型的小程序,为其提供服务的服务设备往往不同,所能够提供的服务内容也会有所差异,本发明在此不做详述。
需要说明,本发明对用户如何使用社交客户端中的小程序,满足用户需求的实现过程不做详述。且对于实现本发明应用程序热更新方法的系统组成结构,也并不局限于本发明上述列举的几部分,可以根据实际需要进行灵活调整,如还可以配置数据库服务器,用来记录社交客户端使用过程中所产生的数据,以及社交客户端中的小程序运行过程中所产生的数据等等,本发明不做一一详述。
另外,在一些实施例中,上述终端或服务器可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(P2P,Peer To Peer)网络,任意形式的计算设备,比如服务器、终端等计算机设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。
示例性,参照图2,为本发明提出的计算机设备的一可选实例的结构示意图,该计算机设备可以是上述终端,本发明对该终端的产品类型不做限定,如图2所示,该计算机设备可以包括但并不局限于:通信接口21、存储器422和处理器23,其中:
本实施例中,通信接口21、存储器22和处理器23之间可以通过通信总线实现相互间的通信,且通信接口21、存储器22、处理器23以及通信总线的数量可以为至少一个,可以依据具体应用需求确定,本发明对上述计算机设备的组成部件及其数量不作限定。
通信接口21可以包括无线通信模块的接口,以实现与其他设备的网络通信,如WIFI模块的接口、GPRS模块的接口、GSM模块的接口等,还可以包括实现计算机设备内部收发数据的接口,如USB(通用串行总线,universal serial bus)接口、串/并口等等,本发明对通信接口21包含的接口类型及数量不做限定。
存储器22可以用于存储实现本发明提出的应用程序热更新方法的程序,还可以存储实现该应用程序热更新方法过程中所产生的各种中间数据,以及其他设备发送的数据等,可以依据应用场景的需求确定,本发明不做详述。
在实际应用中,存储器22可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器23可以用来调用并执行存储器所存储的程序,以实现本发明提出的应用程序热更新方法的各步骤,具体实现过程可以参照下文方法实施例相应部分的描述。
本实施例中,处理器23可能是一个中央处理器CPU,或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路等,本发明对处理器23的具体结构不做详述。
应该理解,对于本发明提出的计算机设备的硬件组成结构,并不局限于上文列举的组成部件,根据产品类型还可以包括显示器、输入设备、报警器、各种传感器等等,图2仅是示意性说明,并不构成对计算机设备结构的限定。
结合上图1示出的系统架构以及图2示出的计算机设备的组成结构,参照图3,为本发明提出的应用程序热更新方法的一可选示例的流程图,该方法可以适用于计算机设备,该计算机设备可以是终端,具体由终端中的如上述社交客户端等母应用程序执行,而需要进行在线热更新的应用程序则是该母应用程序中的一子应用程序,如图3所示,该方法可以包括但并不局限于以下步骤:
步骤S11,在母应用程序运行期间,获取子应用程序的新版本号及其对应的动态字符串代码;
在本实施例中,对终端中设置的母应用程序和子应用程序的应用类型不做限定,参照图4示出的终端中设置母应用程序和子应用程序的一可选示例,在终端中运行母应用程序,子应用程序可以用于在母应用程序中实现模块化的功能,可以用于扩展母应用程序的功能,或者替换母应用程序中的部分功能。在实际应用中,子应用程序在母应用程序中可以采用自动运行、响应触发指令运行等方式启动运行,图4只示出了母应用程序中的一个子应用程序,但应该理解,根据母应用程序实现功能的需求,以及用户对母应用程序的使用需求等,母应用程序可以加载并运行多个子应用程序,本实施例中的子应用程序可以是能够在母应用程序中运行的任意一个子应用程序。
在用户使用母应用程序过程中,可以对其中的子应用程序进行即使更新,即对子应用程序实现子线热更新,这种情况下,终端可以获取该子应用程序的新版本号及其对应的动态字符串代码,即最新的Javascript字符串代码,以使子应用程序运行该动态字符串代码,更新子应用程序中相应的页面数据。需要说明,本发明对该动态字符串代码的获取方式不做限定。
作为本发明一可选示例,为了避免在当前加载的子应用程序的版本号已经是最新版本号的情况下,继续加载动态字符串代码,本发明可以在加载动态字符串代码之前,可以将获取的新版本号与子应用程序当前版本号进行比较,以确定是否需要更新子应用程序的代码,如果需要再继续加载该新版本号对应的动态字符串代码;反之可以不用执行后续操作。
需要说明的是,用户使用母应用程序的子应用程序,首先需要下载子应用程序的源代码,才能够运行子应用程序,具体实现过程不做详述。通常情况下,由于母应用程序可以支持多个子应用程序,用户可以在母应用程序的搜索界面进行搜索,以微x应用程序的小程序的使用场景为例,如图5所示,用户可以在搜索输入框输入小程序,可以展示该微x支持的各小程序,用户可以从中选择感兴趣的小程序,之后,微x会加载所选择的小程序的源代码,进入小程序的操作界面,之后,在用户使用微x过程中,可以按照本发明提出的方法,随时更新所选择的该小程序的页面,实现该小程序的在线热更新。
步骤S12,对该子应用程序的新版本号及其对应的动态字符串代码进行存储;
通常情况下,母应用程序以及子应用程序的源代码可以在终端本地缓存,以便用户能够快速启动母应用程序以及子应用程序,本发明对源代码的存储方式不做限定。
本实施例中,可以为子应用程序提供缓存机制,即母应用程序中的每一个子应用程序,均可以配置一定的缓存空间,来缓存该子应用程序的相关数据,所以,获取子应用程序的新版本号对应的动态字符串代码后,可以将该新版本号及其对应的动态字符串代码,缓存至终端中该子应用程序对应的缓存空间,以便后续启动子应用程序时使用。其中,对于缓存的各应用程序的数据,可以进行隔离处理,并配置相应的清理机制,本发明对应用程序的缓存、隔离及清理机制的配置方法及其实现过程不做详述。
可选的,在存储子应用程序的新版本号及其对应的动态字符串代码时,可以使用不同的字段时间,如使用version字段(记为第一字段)来存储子应用程序的新版本号,使用codeStr字段(记为第二字段)来存储该子应用程序的新版本号对应的动态字符串代码。这样,当需要获取版本号、字符串代码时,可以直接读取相应的字段内容即可,具体实现过程不做详述。
步骤S13,响应该子应用程序的启动指令,利用该动态字符串代码,解析得到该子应用程序的语法树;
语法树(Abstract Syntax Tree,AST)又称为抽象语法树,是源代码语法结构的一种抽象表示,它以树状的形式表现编程语言的语法结构,树上的每一个节点可以表示源代码中的一种结构,本发明将Javascript字符串代码转化为抽样语法树更利于程序的分析,具体可以使用Javascript解析器,将子应用程序的Javascript字符串代码转化为语法树,以使子应用程序能够将其进一步转化为字节码或直接生成机器码,运行该Javascript字符串代码。
在实际应用中,通常是由包含该动态字符串代码的整个源代码分割成语法单元数组,在分词结果的基础上分析语法单元之间的关系,得到一个树结构,即得到子应用程序的语法树。本实施例对如何利用动态字符串代码,解析得到该子应用程序的语法树的实现过程不做详述。
可见,本发明获取子应用程序的新版本号对应的动态字符串代码后,将子应用程序的字符串代码本身映射成一棵语法树,通过操纵抽象语法树,能够精确获取子应用程序的字符串代码中的某个节点,如声明语句、赋值语句,实现了类似调用eval()、newFunction()函数的效果,但因本发明不需要调用eval()、new Function()函数,避免了母应用程序的应用平台监测到后禁止,保证了子应用程序可靠实现热更新。
其中,在构建小程序的语法树过程中,可以使用作用域区分var、let、const等变量,且let和const通常存在块级作用域,需要另外处理,具体处理方法不做限定。另外,对于赋值操作的语法树,可以采用闭包实现方式,根据Javascript标准库实现语法树求值,具体过程不作详述,该过程不需要实现沙箱,因此不会对运行环境进行隔离。另外,在解析循环代码时,需要注意控制用于循环中断的break(全部中断)、return(返回值)、continue(中断本次循环)等的使用,以保证循环代码的可靠运行,具体控制方法不做详述。
步骤S14,利用该语法树中的节点数据,得到子应用程序的待更新页面的可执行代码;
步骤S15,执行该可执行代码,更新该待更新页面的页面数据,展示子应用程序更新后的页面。
在语法树的应用中,将字符串代码解析成语法树后,可以对其进行转换操作,再利用转换后的语法树生成机器可运行的字符串代码,记为可执行代码,这样,终端就可以直接执行该可执行代码,实现对子应用程序中相应页面数据的更新,得到新的页面并输出,实现子应用程序的在线热更新。本发明对步骤S14的具体实现过程不做限定。
在实际应用中,由于小程序支持模块化,所以,本发明可以采用模块引入的方式,获取待更新页面对应的字符串代码,具体可以将该字符串代码通过“module.export”导出,并引入待更新页面的模块中,实现对待更新页面数据的更新,本发明对通过页面引用方式,实现小程序的页面更新所需的程序代码不作限定,且更新小程序页面的方式也并不局限于这种页面引用方式。
可选的,在终端执行上述子应用程序的待更新页面的可执行代码过程中,出现异常情况下,导致无法成功更新子应用程序的待更新页面,如检测未成功展示子应用程序更新后的页面,本发明可以直接调用子应用程序原来的源程序代码中相应字符串代码(可以记为待更新代码)并执行,输出子应用程序原来的待更新页面。可见,本发明可以建立容错机制,在热更新的代码运行出错的情况下,启用子应用程序的源代码,保证用户仍能够正常使用子应用程序。
相应地,由于网络、运行环境等问题,导致在上述加载新版本号对应的动态字符串代码过程中,未加载成功,和/或对动态字符串代码解析未成功,未得到子应用程序的语法树的情况下,本发明也可以调用并执行该子应用程序的待更新代码,输出原来的待更新页面。可见,在上述子应用程序热更新过程中,出现如上文列举的异常情况,按照上述处理方法,本发明能够保证子应用程序基础功能的运行,但这需要保证子应用程序审核上线之前,存储有该子应用程序最新的字符串代码。
综上所述,本实施例中,对于母应用程序中的任一子应用程序,在用户使用母应用程序过程中,希望该子应用程序实现在线热更新,可以直接获取该子应用程序的新版本号及其对应的动态字符串代码,并存储到本地,不需要创建相应的视图组件,而是在该子应用程序响应启动指令运行时,直接利用该动态字符串代码,解析得到子应用程序的语法树,再据此编译得到子应用程序中待更新页面的可执行代码,运行可执行代码,即可在线实现对子应用程序的待更新页面的更新,不需要调用传统的eval()、new Function()函数,也就避免了母应用程序的应用平台监测到子应用程序接口调用eval()、new Function()函数,禁止子应用程序接口的调用操作,导致无法实现子应用程序的热更新的情况发生,提高了子应用程序的在线热更新效率,能够及时修改子应用程序的一些线上bug,上新一些新特性,即快速响应业务变更及线上问题的处理。
参照图6,为本发明实施例提出的应用程序热更新方法的又一可选示例的信令流程图,本实施例可以是上述实施例描述的应用程序热更新方法的一种细化实现方式,但并不局限于本实施例描述的这种细化实现方式,本实施例中,以母应用成为社交客户端,子应用程序为小程序的场景为例进行说明,如图6所示,该方法可以包括但并不局限于:
步骤S21,社交客户端获取小程序发送的源代码获取请求;
步骤S22,社交客户端将该源代码获取请求发送至社交服务器;
步骤S23,社交服务器响应源代码获取请求,获取小程序的源代码;
步骤S24,社交服务器将小程序的源代码反馈至社交客户端;
步骤S25,社交客户端将小程序的源代码存储至终端;
本实施例中,社交客户端首次安装小程序,进行初始化时,小程序可以通过社交客户端向社交客服务器发起源代码获取请求,以获取运行小程序所需的源代码。通常情况下,小程序的源代码可以包括小程序访问的业务域名,实现小程序具有的功能服务的字符串代码,以及该源代码对应的当前版本号等,其可以直接配置在社交服务器中,也可以由社交服务器从小程序服务器获取,本发明对小程序的源代码的具体获取过程不做限定。
在一些实施例中,社交客户端(如微x等即时通信客户端)可以主动,或根据用户在该社交客户端中的搜索,来获取小程序。如用户进入社交客户端的小程序的功能入口,可以提示用户是否安装小程序,或根据用户输入的关键字搜索并下载小程序等等,本发明不再一一详述。
需要说明的是,在实际应用中,通常是在社交客户端首次运行小程序时,需要下载该小程序的源代码,后续用户再启动小程序,可以直接运行。因此,社交客户端得到小程序的源代码后,可以存储至本地的终端中,以便后续使用小程序调用。
步骤S26,社交客户端调用版本控制接口,获取小程序的新版本号;
步骤S27,社交客户端将新版本号与终端存储的小程序的当前版本号进行比对;
步骤S28,社交客户端确定新版本号与当前版本号不同,调用代码获取接口,加载新版本号对应的动态字符串代码;
步骤S29,社交客户端将新版本号及其对应的动态字符串代码存储至终端;
可见,本实施例中,配置两个接口即版本控制接口和代码获取接口,来分别获取小程序最新的版本号及其对应的动态字符串代码(即与上一版本号的字符串代码不同的动态字符串代码,而不是整个小程序的安装包具有的字符串代码),在实际应用中,也可以直接调用这两个接口,获取小程序最新的版本号及其对应的动态字符串代码,执行后续操作。
当然,为了避免进行无意义的代码更新,本实施例可以在加载最新版本号的动态字符串代码之前,先获取该小程序的最新版本号(本发明将其记为新版本号),再将其与终端存储的该小程序的当前版本号进行比较,来确定是否需要更新当前小程序的字符串代码,也就是说,检测小程序的当前版本号是否已经是最新的版本号,如果是,不需要进行代码更新,如果否,才需要进行代码更新,执行后续操作。
继上述实施例相应部分的分析,本发明加载小程序的新版本号及其对应的动态字符串代码后,可以按照字段,缓存至终端中该小程序对应的缓存空间,以便后续启动小程序时使用。
步骤S210,社交客户端响应小程序的启动指令,并在启动小程序过程中,响应小程序的待更新页面的更新请求,调用小程序的新版本号对应的动态字符串代码;
步骤S211,社交客户端利用动态字符串代码,解析得到小程序的语法树;
步骤S212,社交客户端利用语法树中的节点数据,得到小程序的待更新页面的可执行代码;
步骤S213,社交客户端执行该可执行代码,更新小程序待更新页面的页面数据,以展示小程序更新后的页面。
如上述分析,用户在使用社交客户端进行通信过程中,可以随时获取小程序的新版本号及其对应的动态字符串代码,为更新小程序做准备,这样,在启动小程序过程中,本实施例利用Javascript编码器,将小程序的字符串代码解析为语法树,再利用语法树的节点数据,得到小程序的可执行代码,并运行该可执行代码,不需要调用传统的eval()、newFunction()函数运行字符串代码,也就避免了社交服务器监测到小程序运行调用eval()、new Function()函数这一事件,而禁止对eval()、new Function()函数的调用,导致无法热更新小程序的情况发生,保证了小程序在线热更新,且在为用户提供便捷实用的情况下,能够快速响应业务变更以及线上问题的处理,提高了用户体验。
可选的,在实际应用中,对于小程序的业务变化,可以通过JSON(JavaScriptObject Notation,JS对象简谱)配置下发的方式实现,具体的,可以预先获取实现小程序能够实现的各种业务场景的字符串代码,之后,通过获取项目配置,来组合该小程序当前需要实现的功能,再通过更改配置的方式,来实现近似热更新的效果,也就是说,可以预先将各种可能用到的功能均写到小程序中,是否启用该功能,可以通过获取配置的信息来决定,本发明对该业务变化实现过程不作详述。
参照图7,为本发明提出的应用程序热更新装置的一可选示例的结构图,该装置可以适用于终端,具体可以包括:
动态字符串代码获取模块31,用于在母应用程序运行期间,获取子应用程序的新版本号对应的动态字符串代码;
可选的,如图8所示,该动态字符串代码获取模块31可以包括:
第一接口调用单元311,用于调用版本控制接口,获取子应用程序的新版本号;
比较单元312,用于将所述新版本号与本地存储的所述子应用程序的当前版本号进行比对;
第二接口调用单元313,用于在新版本号与所述当前版本号不同的情况下,调用代码获取接口,加载所述新版本号对应的动态字符串代码。
存储模块32,用于存储所述新版本号对应的动态字符串代码;
可选的,存储模块32可以包括:
第一存储单元,用于利用第一字段存储所述子应用程序的新版本号;
第二存储单元,用于利用第二字段存储所述新版本号对应的动态字符串代码。
语法树获取模块33,用于响应所述子应用程序的启动指令,利用所述动态字符串代码,解析得到所述子应用程序的语法树;
本发明中,该语法树获取模块33可以包括:
更新请求响应单元,用于响应子应用程序的待更新页面的更新请求,调用所述子应用程序的新版本号对应的动态字符串代码;
解析单元,用于利用所述动态字符串代码,解析得到所述子应用程序的语法树。
可执行代码获取模块34,用于利用所述语法树中的节点数据,得到所述子应用程序的待更新页面的可执行代码;
页面数据更新模块35,用于执行所述可执行代码,更新所述待更新页面的页面数据,展示所述子应用程序更新后的页面。
作为本发明一可选示例,该页面数据更新模块35可以包括:
节点数据获取单元,用于通过闭合实现方式,获取所述语法树中所述子应用程序的待更新页面对应的节点数据;
页面数据更新单元,用于利用所述节点数据更新所述待更新页面的页面数据。
可选的,在上述各实施例的基础上,该装置还可以包括:
第一检测模块,用于检测是否成功加载所述新版本号对应的动态字符串代码,是否成功解析得到所述子应用程序的语法树;
代码调用模块,用于在新版本号对应的动态字符串代码加载失败,或者未成功解析得到所述子应用程序的语法树的情况下,调用并执行所述子应用程序待更新代码,输出所述子应用程序的待更新页面。
进一步地,该装置还可以包括:
第二检测模块,用于检测是否成功展示所述子应用程序更新后的页面,若未成功,触发该代码调用模块调用并执行所述子应用程序待更新代码,输出所述子应用程序的待更新页面。
应该理解,上述各模块或单元均是应用程序模块,其实现相应功能的过程,可以参照上述方法实施例相应部分的描述。
本发明还提供了一种存储介质,其上存储有程序,该程序被处理器调用并执行,以实现上述应用程序热更新方法的各步骤,具体实现过程可以参照上述方法实施例相应部分的描述。
本发明还提供了一种应用程序热更新系统,参照上图1,该系统可以包括终端11、设置于终端11中的社交客户端12(即一种母应用程序)、为社交客户端提供服务的社交服务器13(即母应用程序对应的通信服务器),以及为部署在社交客户端12中的小程序提供服务的小程序服务器14(即子应用程序匹配的服务器)等等,关于这几部分之间的通信连接关系,以及如何配合实现应用程序热更新的过程,可以参照上述实施例相应部分的描述,不再赘述。
本发明还提供了一种计算机设备,参照图2所示的计算机设备的硬件结构示意图,该计算机设备可以包括但并不局限于:通信接口21、存储器422和处理器23,存储器22可以存储实现上述的应用程序热更新方法的程序;处理器可以用于加载并执行存储器存储的程序,以实现上述应用程序热更新方法的各步骤,具体实现过程可以参照上述方法实施例相应部分的描述,不再赘述。
需要说明,该计算机设备可以是终端,对于不同类型的终端,其包含的硬件结构组成还可以包括显示器、输入设备、传感器、报警器等等,本发明不做一一列举。
本说明书中各个实施例采用递进或并列的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、计算机设备、系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本+发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种应用程序热更新方法,其特征在于,所述方法包括:
在母应用程序运行期间,获取子应用程序的新版本号对应的动态字符串代码;
存储所述新版本号对应的动态字符串代码;
响应所述子应用程序的启动指令,利用所述动态字符串代码,解析得到所述子应用程序的语法树;
利用所述语法树中的节点数据,得到所述子应用程序的待更新页面的可执行代码;
执行所述可执行代码,更新所述待更新页面的页面数据,展示所述子应用程序更新后的页面。
2.根据权利要求1所述的方法,其特征在于,所述获取子应用程序的新版本号对应的动态字符串代码,包括:
调用版本控制接口,获取子应用程序的新版本号;
将所述新版本号与本地存储的所述子应用程序的当前版本号进行比对;
若所述新版本号与所述当前版本号不同,调用代码获取接口,加载所述新版本号对应的动态字符串代码。
3.根据权利要求1所述的方法,其特征在于,所述存储所述新版本号对应的动态字符串代码,包括:
利用第一字段存储所述子应用程序的新版本号,并利用第二字段存储所述新版本号对应的动态字符串代码。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
检测是否成功加载所述新版本号对应的动态字符串代码,是否成功解析得到所述子应用程序的语法树;
若所述新版本号对应的动态字符串代码加载失败,或者未成功解析得到所述子应用程序的语法树,调用并执行所述子应用程序待更新代码,输出所述子应用程序的待更新页面。
5.根据权利要求1~4任一项所述的方法,其特征在于,所述方法还包括:
检测是否成功展示所述子应用程序更新后的页面;
若未成功,调用并执行所述子应用程序待更新代码,输出所述子应用程序的待更新页面。
6.根据权利要求1~4任一项所述的方法,其特征在于,所述利用所述语法树中所述子应用程序的待更新页面对应的节点数据,更新所述待更新页面的页面数据,包括:
通过闭合实现方式,获取所述语法树中所述子应用程序的待更新页面对应的节点数据;
利用所述节点数据更新所述待更新页面的页面数据。
7.根据权利要求1所述的方法,其特征在于,所述利用所述动态字符串代码,解析得到所述子应用程序的语法树,包括:
响应子应用程序的待更新页面的更新请求,调用所述子应用程序的新版本号对应的动态字符串代码;
利用所述动态字符串代码,解析得到所述子应用程序的语法树。
8.一种应用程序热更新装置,其特征在于,所述装置包括:
动态字符串代码获取模块,用于在母应用程序运行期间,获取子应用程序的新版本号对应的动态字符串代码;
存储模块,用于存储所述新版本号对应的动态字符串代码;
语法树获取模块,用于响应所述子应用程序的启动指令,利用所述动态字符串代码,解析得到所述子应用程序的语法树;
可执行代码获取模块,用于利用所述语法树中的节点数据,得到所述子应用程序的待更新页面的可执行代码;
页面数据更新模块,用于执行所述可执行代码,更新所述待更新页面的页面数据,展示所述子应用程序更新后的页面。
9.一种存储介质,其特征在于,其上存储有程序,所述程序被处理器调用并执行,实现如权利要求1~7任一项所述的应用程序热更新方法的各步骤。
10.一种计算机设备,其特征在于,所述计算机设备包括:
通信接口;
存储器,用于存储实现如权利要求1~7任一项所述的应用程序热更新方法的程序;
处理器,用于加载并执行所述存储器存储的程序,以实现如权利要求1~7任一项所述的应用程序热更新方法的各步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910906168.1A CN110659057B (zh) | 2019-09-24 | 2019-09-24 | 应用程序热更新方法、装置、存储介质及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910906168.1A CN110659057B (zh) | 2019-09-24 | 2019-09-24 | 应用程序热更新方法、装置、存储介质及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110659057A true CN110659057A (zh) | 2020-01-07 |
CN110659057B CN110659057B (zh) | 2021-10-22 |
Family
ID=69038926
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910906168.1A Active CN110659057B (zh) | 2019-09-24 | 2019-09-24 | 应用程序热更新方法、装置、存储介质及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110659057B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111488167A (zh) * | 2020-05-07 | 2020-08-04 | 支付宝(杭州)信息技术有限公司 | 一种小程序的更新方法、装置、设备和计算机可读介质 |
CN111782218A (zh) * | 2020-06-29 | 2020-10-16 | 百度在线网络技术(北京)有限公司 | 小程序处理方法、装置、设备及存储介质 |
CN111880801A (zh) * | 2020-06-19 | 2020-11-03 | 北京三快在线科技有限公司 | 应用程序动态化方法、装置、电子设备 |
CN112230965A (zh) * | 2020-10-30 | 2021-01-15 | 广东耐思智慧科技有限公司 | 一种应用程序内小程序热更新的系统和方法 |
CN112698884A (zh) * | 2020-12-30 | 2021-04-23 | 北京达佳互联信息技术有限公司 | 程序启动方法、装置、系统、设备及存储介质 |
CN113010178A (zh) * | 2021-02-20 | 2021-06-22 | 北京字节跳动网络技术有限公司 | 应用程序运行控制方法、装置、设备和介质 |
CN113238785A (zh) * | 2021-06-18 | 2021-08-10 | 腾讯科技(深圳)有限公司 | 一种应用程序的更新方法、相关装置、设备以及存储介质 |
CN114168179A (zh) * | 2020-09-11 | 2022-03-11 | 腾讯科技(深圳)有限公司 | 微服务管理方法、装置、计算机设备和存储介质 |
CN116501348A (zh) * | 2023-04-11 | 2023-07-28 | 北京三维天地科技股份有限公司 | 一种基于java虚拟机的热更新java代码的方法 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090193497A1 (en) * | 2008-01-25 | 2009-07-30 | Haruka Kikuchi | Method and apparatus for constructing security policies for web content instrumentation against browser-based attacks |
US20110219357A1 (en) * | 2010-03-02 | 2011-09-08 | Microsoft Corporation | Compressing source code written in a scripting language |
US8239939B2 (en) * | 2005-07-15 | 2012-08-07 | Microsoft Corporation | Browser protection module |
US8789018B2 (en) * | 2011-05-31 | 2014-07-22 | Microsoft Corporation | Statically derived symbolic references for dynamic languages |
CN104657189A (zh) * | 2013-11-20 | 2015-05-27 | 财团法人资讯工业策进会 | 混合式动态码编译装置、方法及其服务系统 |
US9405555B2 (en) * | 2008-05-23 | 2016-08-02 | Microsoft Technology Licensing, Llc | Automated code splitting and pre-fetching for improving responsiveness of browser-based applications |
CN106569824A (zh) * | 2016-11-07 | 2017-04-19 | 腾讯科技(深圳)有限公司 | 页面数据编译的方法和装置、页面渲染的方法和装置 |
CN107193577A (zh) * | 2016-03-15 | 2017-09-22 | 阿里巴巴集团控股有限公司 | 一种应用启动方法、装置和智能终端 |
CN107918733A (zh) * | 2016-10-10 | 2018-04-17 | 卡巴斯基实验室股份制公司 | 检测网页的恶意元素的系统和方法 |
CN108228188A (zh) * | 2018-01-08 | 2018-06-29 | 武汉斗鱼网络科技有限公司 | 一种视图组件处理方法、电子设备及可读存储介质 |
CN108536486A (zh) * | 2018-04-08 | 2018-09-14 | 苏州犀牛网络科技有限公司 | Rn小程序的加载方法及装置 |
CN109144615A (zh) * | 2018-09-29 | 2019-01-04 | 北京城市网邻信息技术有限公司 | 一种信息发布方法、装置、设备及存储介质 |
CN109308201A (zh) * | 2018-10-15 | 2019-02-05 | 百度在线网络技术(北京)有限公司 | 用于输出信息的方法和装置 |
CN110244987A (zh) * | 2019-06-18 | 2019-09-17 | 腾讯科技(深圳)有限公司 | 配置数据处理方法、装置、可读存储介质和计算机设备 |
CN110244984A (zh) * | 2018-03-06 | 2019-09-17 | 腾讯科技(深圳)有限公司 | 应用程序处理方法、装置、存储介质和计算机设备 |
-
2019
- 2019-09-24 CN CN201910906168.1A patent/CN110659057B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8239939B2 (en) * | 2005-07-15 | 2012-08-07 | Microsoft Corporation | Browser protection module |
US20090193497A1 (en) * | 2008-01-25 | 2009-07-30 | Haruka Kikuchi | Method and apparatus for constructing security policies for web content instrumentation against browser-based attacks |
US9405555B2 (en) * | 2008-05-23 | 2016-08-02 | Microsoft Technology Licensing, Llc | Automated code splitting and pre-fetching for improving responsiveness of browser-based applications |
US20110219357A1 (en) * | 2010-03-02 | 2011-09-08 | Microsoft Corporation | Compressing source code written in a scripting language |
US8789018B2 (en) * | 2011-05-31 | 2014-07-22 | Microsoft Corporation | Statically derived symbolic references for dynamic languages |
CN104657189A (zh) * | 2013-11-20 | 2015-05-27 | 财团法人资讯工业策进会 | 混合式动态码编译装置、方法及其服务系统 |
CN107193577A (zh) * | 2016-03-15 | 2017-09-22 | 阿里巴巴集团控股有限公司 | 一种应用启动方法、装置和智能终端 |
CN107918733A (zh) * | 2016-10-10 | 2018-04-17 | 卡巴斯基实验室股份制公司 | 检测网页的恶意元素的系统和方法 |
CN106569824A (zh) * | 2016-11-07 | 2017-04-19 | 腾讯科技(深圳)有限公司 | 页面数据编译的方法和装置、页面渲染的方法和装置 |
CN108228188A (zh) * | 2018-01-08 | 2018-06-29 | 武汉斗鱼网络科技有限公司 | 一种视图组件处理方法、电子设备及可读存储介质 |
CN110244984A (zh) * | 2018-03-06 | 2019-09-17 | 腾讯科技(深圳)有限公司 | 应用程序处理方法、装置、存储介质和计算机设备 |
CN108536486A (zh) * | 2018-04-08 | 2018-09-14 | 苏州犀牛网络科技有限公司 | Rn小程序的加载方法及装置 |
CN109144615A (zh) * | 2018-09-29 | 2019-01-04 | 北京城市网邻信息技术有限公司 | 一种信息发布方法、装置、设备及存储介质 |
CN109308201A (zh) * | 2018-10-15 | 2019-02-05 | 百度在线网络技术(北京)有限公司 | 用于输出信息的方法和装置 |
CN110244987A (zh) * | 2019-06-18 | 2019-09-17 | 腾讯科技(深圳)有限公司 | 配置数据处理方法、装置、可读存储介质和计算机设备 |
Non-Patent Citations (3)
Title |
---|
BERTALAN MIKLOS: "Writing a JavaScript framework - Sandboxed Code Evaluation", 《HTTPS://WEB.ARCHIVE.ORG/WEB/20180720193522/HTTPS://BLOG.RISINGSTACK.COM/WRITING-A-JAVASCRIPT-FRAMEWORK-SANDBOXED-CODE-EVALUATION/》 * |
徐小辉: "《构件化软件动态更新与验证技术》", 30 June 2018 * |
王闯: "软件智能进化模型及其实现机制研究", 《中国优秀博硕士学位论文全文数据库(博士)信息科技辑》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111488167A (zh) * | 2020-05-07 | 2020-08-04 | 支付宝(杭州)信息技术有限公司 | 一种小程序的更新方法、装置、设备和计算机可读介质 |
CN111488167B (zh) * | 2020-05-07 | 2022-01-28 | 支付宝(杭州)信息技术有限公司 | 一种小程序的更新方法、装置、设备和计算机可读介质 |
CN111880801A (zh) * | 2020-06-19 | 2020-11-03 | 北京三快在线科技有限公司 | 应用程序动态化方法、装置、电子设备 |
CN111782218B (zh) * | 2020-06-29 | 2024-03-01 | 百度在线网络技术(北京)有限公司 | 小程序处理方法、装置、设备及存储介质 |
CN111782218A (zh) * | 2020-06-29 | 2020-10-16 | 百度在线网络技术(北京)有限公司 | 小程序处理方法、装置、设备及存储介质 |
CN114168179A (zh) * | 2020-09-11 | 2022-03-11 | 腾讯科技(深圳)有限公司 | 微服务管理方法、装置、计算机设备和存储介质 |
CN112230965A (zh) * | 2020-10-30 | 2021-01-15 | 广东耐思智慧科技有限公司 | 一种应用程序内小程序热更新的系统和方法 |
CN112698884A (zh) * | 2020-12-30 | 2021-04-23 | 北京达佳互联信息技术有限公司 | 程序启动方法、装置、系统、设备及存储介质 |
CN113010178A (zh) * | 2021-02-20 | 2021-06-22 | 北京字节跳动网络技术有限公司 | 应用程序运行控制方法、装置、设备和介质 |
CN113010178B (zh) * | 2021-02-20 | 2024-05-14 | 北京字节跳动网络技术有限公司 | 应用程序运行控制方法、装置、设备和介质 |
CN113238785A (zh) * | 2021-06-18 | 2021-08-10 | 腾讯科技(深圳)有限公司 | 一种应用程序的更新方法、相关装置、设备以及存储介质 |
CN113238785B (zh) * | 2021-06-18 | 2023-10-20 | 腾讯科技(深圳)有限公司 | 一种应用程序的更新方法、相关装置、设备以及存储介质 |
CN116501348B (zh) * | 2023-04-11 | 2023-12-05 | 北京三维天地科技股份有限公司 | 一种基于java虚拟机的热更新java代码的方法 |
CN116501348A (zh) * | 2023-04-11 | 2023-07-28 | 北京三维天地科技股份有限公司 | 一种基于java虚拟机的热更新java代码的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110659057B (zh) | 2021-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110659057B (zh) | 应用程序热更新方法、装置、存储介质及计算机设备 | |
US9448776B1 (en) | Method and apparatus for converting a website into a native mobile application | |
US10180833B2 (en) | Cooperative web-assisted deep link redirection | |
US9471704B2 (en) | Shared script files in multi-tab browser | |
CN106569856B (zh) | 一种应用视图资源文件的加载方法和装置 | |
US9497248B2 (en) | System for enabling rich network applications | |
US8572554B2 (en) | Method and system for integrating Java and JavaScript technologies | |
US20140108914A1 (en) | Webpages with onboard hardware functions | |
US8806475B2 (en) | Techniques for conditional deployment of application artifacts | |
US10831892B2 (en) | Web browser script monitoring | |
Adetunji et al. | Dawning of progressive web applications (pwa): Edging out the pitfalls of traditional mobile development | |
EP2486498A1 (en) | Shared script files in multi-tab browser | |
US10877825B2 (en) | System for offline object based storage and mocking of rest responses | |
US10956257B2 (en) | Dynamic failure-resolution computing engine | |
CN112114890A (zh) | 小程序的处理方法、装置、设备及存储介质 | |
CN111858252B (zh) | 基于前端框架的动态埋点方法及装置 | |
US10291492B2 (en) | Systems and methods for discovering sources of online content | |
Kemer et al. | Performance comparison of scalable rest application programming interfaces in different platforms | |
CN116523457A (zh) | 基于业务流程的工作流处理方法、装置、设备及存储介质 | |
US11604662B2 (en) | System and method for accelerating modernization of user interfaces in a computing environment | |
US9916391B2 (en) | Method, apparatus and terminal for webpage content browsing | |
Agustin | Model-driven web applications | |
CN106775900B (zh) | 应用浏览器的调用方法和系统 | |
CN111625746A (zh) | 应用程序页面的显示方法、系统、电子设备和存储介质 | |
CN114168177B (zh) | 一种支持海量移动设备的个性化任务处理方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |