CN116257282A - 应用程序的更新方法及装置、存储介质、计算机设备 - Google Patents
应用程序的更新方法及装置、存储介质、计算机设备 Download PDFInfo
- Publication number
- CN116257282A CN116257282A CN202310179997.0A CN202310179997A CN116257282A CN 116257282 A CN116257282 A CN 116257282A CN 202310179997 A CN202310179997 A CN 202310179997A CN 116257282 A CN116257282 A CN 116257282A
- Authority
- CN
- China
- Prior art keywords
- script data
- data
- application program
- target application
- script
- 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.)
- Pending
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/658—Incremental updates; Differential updates
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了一种应用程序的更新方法及装置、存储介质、计算机设备,涉及软件运维领域、金融领域以及数字医疗领域,主要目的在于改善现有通过更新H5页面的html文件以进行应用程序动态更新的方法无法实现对应用程序的原生代码进行更新的技术问题。包括:当监测到用户登录目标应用程序的操作行为时,获取所述目标应用程序的更新数据;解析所述更新数据,确定所述目标应用程序预计更新的第一脚本数据以及所述第一脚本数据的识别标识;基于所述第一脚本数据的识别标识,在所述目标应用程序的完整脚本数据中识别出第二脚本数据,并基于消息重定向,使得所述目标应用程序运行到所述第一脚本数据时执行所述第二脚本数据,以完成对所述目标应用程序的更新。
Description
技术领域
本申请涉及软件运维技术领域、金融技术领域以及数字医疗技术领域,特别是涉及一种应用程序的更新方法及装置、存储介质、计算机设备。
背景技术
随着互联网的飞速发展,各种应用程序层出不穷,为了提升用户的体验感开发者会不时对应用程序的漏洞进行修复。出于安全考虑苹果应用市场会限制对应用程序的动态更新,因此,如果需要对ios系统的应用程序进行漏洞修复,传统的方案是采用在苹果应用市场发布应用程序新版本的方式来实现,但是由于应用程序新版本的发布周期较长,而在新版本的发布周期内仍需用户忍受漏洞,从而降低了用户的体验感。
目前,还有一种解决方案是,基于Hybrid App(混合)开发应用程序,具体是将前端开发的H5页面内置到应用程序中,在需要修复漏洞时通过在线更新H5页面的html文件,以实现对应用程序动态更新的目的。然而,基于上述方式只能对H5页面进行更新,而无法实现对应用程序的原生代码进行更新。因此,亟需一种应用程序的更新方法,以解决上述问题。
发明内容
有鉴于此,本申请提供一种应用程序的更新方法及装置、存储介质、计算机设备,主要目的在于改善现有通过更新H5页面的html文件以进行应用程序动态更新的方法无法实现对应用程序的原生代码进行更新的技术问题。
依据本申请一个方面,提供了一种应用程序的更新方法,包括:
当监测到用户登录目标应用程序的操作行为时,获取所述目标应用程序的更新数据;
解析所述更新数据,确定所述目标应用程序预计更新的第一脚本数据以及所述第一脚本数据的识别标识;
基于所述第一脚本数据的识别标识,在所述目标应用程序的完整脚本数据中识别出第二脚本数据,并基于消息重定向,使得所述目标应用程序运行到所述第一脚本数据时执行所述第二脚本数据,以完成对所述目标应用程序的更新,所述第二脚本数据用于表征与所述第一脚本数据携带相同识别标识的脚本数据。
优选的,所述基于消息重定向,使得所述目标应用程序运行到所述第一脚本数据时执行所述第二脚本数据,具体包括:
创建携带所述识别标识的第三脚本数据,并将所述第二脚本数据替换为所述第三脚本数据,所述第三脚本数据为无内容脚本数据,以使得所述目标应用程序执行所述第二脚本数据时触发消息重定向脚本数据。
优选的,所述基于消息重定向,使得所述目标应用程序运行到所述第一脚本数据时执行所述第二脚本数据之前,所述方法还包括:
将所述第二脚本数据的消息重定向脚本数据替换为所述第一脚本数据,以使得触发所述第二脚本数据的消息重定向脚本数据时执行所述第一脚本数据。
优选的,所述解析所述更新数据之前,所述方法还包括:
提取所述更新数据中的第一验证数据,基于预设加密方法以及所述目标应用程序的公钥对所述第一验证数据进行加密处理,得到所述更新数据的待验证加密结果;
若所述待验证加密结果与所述更新数据中的第二验证数据一致,则校验通过。
优选的,所述解析所述更新数据之前,所述方法还包括:
若所述更新数据中包含多个预计更新的脚本数据,则依次对各个脚本数据进行解析。
优选的,所述获取所述目标应用程序的更新数据之前,所述方法还包括:
确定所述目标应用程序的版本信息,将所述版本信息传输至增量更新平台,所述增量更新平台存储有所述目标应用程序不同版本的更新数据。
优选的,所述获取所述目标应用程序的更新数据,具体包括:
接收所述增量更新平台返回的更新数据的存储地址;
基于所述存储地址获取与所述目标应用程序当前版本信息相匹配的更新数据。
依据本申请另一个方面,提供了一种应用程序的更新装置,包括:
获取模块,用于当监测到用户登录目标应用程序的操作行为时,获取所述目标应用程序的更新数据;
解析模块,用于解析所述更新数据,确定所述目标应用程序预计更新的第一脚本数据以及所述第一脚本数据的识别标识;
更新模块,用于基于所述第一脚本数据的识别标识,在所述目标应用程序的完整脚本数据中识别出第二脚本数据,并基于消息重定向,使得所述目标应用程序运行到所述第一脚本数据时执行所述第二脚本数据,以完成对所述目标应用程序的更新,所述第二脚本数据用于表征与所述第一脚本数据携带相同识别标识的脚本数据。
优选的,所述更新模块,具体用于:
创建携带所述识别标识的第三脚本数据,并将所述第二脚本数据替换为所述第三脚本数据,所述第三脚本数据为无内容脚本数据,以使得所述目标应用程序执行所述第二脚本数据时触发消息重定向脚本数据。
优选的,所述更新模块之前,所述装置还包括:
替换模块,用于将所述第二脚本数据的消息重定向脚本数据替换为所述第一脚本数据,以使得触发所述第二脚本数据的消息重定向脚本数据时执行所述第一脚本数据。
优选的,所述解析模块之前,所述装置还包括:
加密模块,用于提取所述更新数据中的第一验证数据,基于预设加密方法以及所述目标应用程序的公钥对所述第一验证数据进行加密处理,得到所述更新数据的待验证加密结果;
第一校验模块,用于若所述待验证加密结果与所述更新数据中的第二验证数据一致,则校验通过。
优选的,所述解析模块之前,所述装置还包括:
第二校验模块,用于若所述更新数据中包含多个预计更新的脚本数据,则依次对各个脚本数据进行解析。
优选的,所述获取模块之前,所述装置还包括:
确定模块,用于确定所述目标应用程序的版本信息,将所述版本信息传输至增量更新平台,所述增量更新平台存储有所述目标应用程序不同版本的更新数据。
优选的,所述获取模块,具体包括:
接收单元,用于接收所述增量更新平台返回的更新数据的存储地址;
获取单元,用于基于所述存储地址获取与所述目标应用程序当前版本信息相匹配的更新数据。
根据本申请的又一方面,提供了一种存储介质,所述存储介质中存储有至少一条可执行指令,所述可执行指令使处理器执行如上述应用程序的更新方法对应的操作。
根据本申请的再一方面,提供了一种计算机设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一条可执行指令,所述可执行指令使所述处理器执行上述应用程序的更新方法对应的操作。
借由上述技术方案,本申请实施例提供的技术方案至少具有下列优点:
本申请提供了一种应用程序的更新方法及装置、存储介质、计算机设备,首先当监测到用户登录目标应用程序的操作行为时,获取所述目标应用程序的更新数据;其次解析所述更新数据,确定所述目标应用程序预计更新的第一脚本数据以及所述第一脚本数据的识别标识;最后基于所述第一脚本数据的识别标识,在所述目标应用程序的完整脚本数据中识别出第二脚本数据,并基于消息重定向,使得所述目标应用程序运行到所述第一脚本数据时执行所述第二脚本数据,以完成对所述目标应用程序的更新,所述第二脚本数据用于表征与所述第一脚本数据携带相同识别标识的脚本数据。与现有技术相比,本申请实施例通过在目标应用程序的整体脚本数据中找到与预计更新的第一脚本数据识别标识相匹配的第二脚本数据,将第二脚本数据替换为无内容脚本数据,并将第二脚本数据的重定向脚本数据替换为第一脚本数据,以使得目标应用程序运行至第二脚本数据时,由于脚本数据无内容,因此触发消息重定向脚本数据,而由于消息重定向脚本数据已经被替换为预计更新的第一脚本数据,从而目标应用程序将执行预计更新的第一脚本数据,以实现目标应用程序的动态更新,同时实现了对目标应用程序原生代码的更新。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本申请实施例提供的一种应用程序的更新方法流程图;
图2示出了本申请实施例提供的另一种应用程序的更新方法流程图;
图3示出了本申请实施例提供的一种应用程序的更新装置组成框图;
图4示出了本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本申请实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
基于此,在一个实施例中,如图1所示,提供了一种应用程序的更新方法,以该方法应用于服务器等计算机设备为例进行说明,其中,服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器,如智能医疗系统、数字医疗平台等。上述方法包括以下步骤:
101、当监测到用户登录目标应用程序的操作行为时,获取目标应用程序的更新数据。
其中,目标应用程序可以是安装在移动设备(如,手机、平板电脑、笔记本电脑等)或固定设备(如,台式电脑等)上配置有客户端的应用程序,例如,某医疗机构的智能医疗平台、某金融支付平台等;还可以是仅通过扫一扫或搜一下而不需要下载安装即可打开使用的应用小程序,例如,某医院在微信平台的小程序、某银行在微信平台的小程序等。更新数据可以是针对目标应用程序当前版本中存在的漏洞而开发的补丁代码脚本,或为满足商家需求对目标应用程序中指定内容进行修改而开发的更新代码脚本等,本申请实施例不做具体限定。本申请实施例中,当前执行端为目标应用程序的客户端,当监测到用户登录目标应用程序的操作行为(即用户打开目标应用程序的客户端)时,获取更新数据,以使得目标应用程序执行更新后的脚本数据,以保证展示给用户的内容为最新内容,从而提高用户的体验感。
102、解析更新数据,确定目标应用程序预计更新的第一脚本数据以及第一脚本数据的识别标识。
本申请实施例中,更新数据可以Json数据格式的脚本数据,可以包括类名、脚本内容、方法名、校验签名、方法类型等;第一脚本数据用于表征更新数据中所包含的脚本数据,即目标应用程序预计执行的更新脚本代码,用于替换原程序部分脚本代码;更新数据中的类名、脚本内容、方法名、校验签名、方法类型等均可作为识别标识,用于在原程序代码脚本中识别出预计替换更新的脚本代码。示例性的,实施例步骤101中获取到的更新数据如下:
其中,cls表示类名、contents表示脚本内容、selector表示方法名、sign表示校验签名、sig表示方法类型。可以理解的是,上述代码脚本即为第一脚本数据,可以将类名cls作为第一脚本数据的识别标识,基于类名cls识别出目标应用程序原脚本代码中携带相同类名的脚本代码;也可以将方法名selector作为第一脚本数据的识别标识,基于方法名selector识别出目标应用程序原脚本代码中携带相同方法名的脚本代码等。
103、基于第一脚本数据的识别标识,在目标应用程序的完整脚本数据中识别出第二脚本数据,并基于消息重定向,使得目标应用程序运行到所述第一脚本数据时执行第二脚本数据,以完成对目标应用程序的更新。
其中,第二脚本数据用于表征与第一脚本数据携带相同识别标识的脚本数据,为目标应用程序原脚本代码的一部分。本申请实施例中,可以基于更新数据中第一脚本数据的识别标识,如,将类名cls作为第一脚本数据的识别标识,基于类名cls识别出目标应用程序原脚本代码中携带相同类名的脚本代码,即第二脚本数据;也可以将方法名selector作为第一脚本数据的识别标识,基于方法名selector识别出目标应用程序原脚本代码中携带相同方法名的脚本代码。进一步通过将第二脚本数据的消息重定向脚本数据替换为第一脚本数据,以使得触发所述第二脚本数据的消息重定向脚本数据时执行所述第一脚本数据,从而完成对目标应用程序的动态更新。
需要说明的是,上述方法可以基于ios系统底层原理Runtime(简称运行时)实现。其中,Runtime是OC的核心,是基于C语言以及汇编语言编写的,类似java的反射机制。OC是动态运行时语言,OC的函数属于动态调用过程,在编译的时候无需指定具体调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。因此其最主要的内容是消息机制,即在运行时确定一个对象的类型、调用指定的对象方法,也就是需要基于Runtime实现类和对象的动态创建以及消息传递和消息转发等。进一步的,可以通过Runtime动态的向一个类中添加属性、成员变量、方法,并对其进行读写访问,从而实现对应用程序的动态更新。
与现有技术相比,本申请实施例通过在目标应用程序的整体脚本数据中找到与预计更新的第一脚本数据识别标识相匹配的第二脚本数据,将第二脚本数据替换为无内容脚本数据,并将第二脚本数据的重定向脚本数据替换为第一脚本数据,以使得目标应用程序运行至第二脚本数据时,由于脚本数据无内容,因此触发消息重定向脚本数据,而由于消息重定向脚本数据已经被替换为预计更新的第一脚本数据,从而目标应用程序将执行预计更新的第一脚本数据,以实现目标应用程序的动态更新,同时实现了对目标应用程序原生代码的更新。
本申请实施例提供了另一种应用程序的更新方法,如图2所示,该方法包括:
201、当监测到用户登录目标应用程序的操作行为时,获取目标应用程序的更新数据。
本申请实施例中,开发人员可以预先将更新数据上传至增量更新平台,例如,AVMS平台,并设置下载规则,例如,适用于版本号在v2.0.0-v2.2.0范围内的目标应用程序。可以理解的是,通过设置下载规则可以精准的匹配到需要修复的目标应用程序版本,与无差别下载的方式相比,由于仅对匹配的版本进行加载,如果版本不匹配则无需获取,从而节省了用户本地的存储空间。可选的,开发人员可以按照版本信息将不同的更新数据分别存储,并与相应的存储地址生成映射关系。进一步的,当前执行端将识别到的目标应用程序的当前版本信息传输至增量更新平台,平台根据版本信息查找映射关系,匹配到相应的存储地址,并反馈给当前执行端。进一步的,当前执行端基于该存储地址获取与目标应用程序当前版本信息相匹配的更新数据。
需要说明的是,为了节省传输资源,存储于增量更新平台的更新数据可以以压缩包的形式进行存储,当前执行端获取到相应的压缩包后通过解压以获取到更新数据。另外,为了防止更新数据被篡改,还可以对其进行加密处理,本申请实施例不做具体限定。
具体的,在实施例步骤201中获取目标应用程序的更新数据之前,实施例方法还包括:确定目标应用程序的版本信息,将版本信息传输至增量更新平台,增量更新平台存储有目标应用程序不同版本的更新数据。
进一步的,实施例步骤201中获取目标应用程序的更新数据,具体包括:接收增量更新平台返回的更新数据的存储地址;基于存储地址获取与目标应用程序当前版本信息相匹配的更新数据。
202、提取更新数据中的第一验证数据,基于预设加密方法以及目标应用程序的公钥对第一验证数据进行加密处理,得到更新数据的待验证加密结果;若待验证加密结果与更新数据中的第二验证数据一致,则校验通过。
其中,第一验证数据用于表征更新数据中的body部分;第二验证数据由于表征更新数据中的校验签名sign。本申请实施例中,基于存储于当前执行端本地的公钥对更新数据中的body部分进行如RSA加密处理,并将得到的加密结果与更新数据中的校验签名sign进行比较,若一致,则说明增量更新平台中的更新数据未被篡改,则校验通过,以避免用户的本地设备被恶意代码攻击。
203、若更新数据中包含多个预计更新的脚本数据,则依次对各个脚本数据进行解析。
本申请实施例中,对更新数据进行解析时,需要先将更新数据转化为系统可识别的键值对象NSDictionary。为了防止转化时发生转化崩溃的情况,优选的,可以预先检验更新数据中是否包含多个预计更新的脚本数据,具体的,可以通过在获取到的更新数据中查找是否包含“[]”符号,从而进行判断。进一步的,如果不存在,则说明仅有一个预计更新的脚本数据,直接转化解析即可;若存在,则说明包含多个预计更新的脚本数据,则依次对各个脚本数据进行转化解析。
204、解析更新数据,确定目标应用程序预计更新的第一脚本数据以及第一脚本数据的识别标识。
本申请实施例中,通常更新数据中可以包括类名、脚本内容、方法名、校验签名、方法类型等内容,可以从其中选取任意一种作为识别标识,在原程序代码脚本中进行识别。例如,将类名cls作为第一脚本数据的识别标识,基于类名cls识别出目标应用程序原脚本代码中携带相同类名的脚本代码;或者将方法名selector作为第一脚本数据的识别标识,基于方法名selector识别出目标应用程序原脚本代码中携带相同方法名的脚本代码等。
需要说明的是,由于应用程序发布之前,平台方会对其进行敏感字段检测审核,因此,应用程序开发者通常的做法是自定义字段映射表定义枚举字段,例如,3表示是类名、4表示声明、18表示定义,以混淆代码。因此,对更新数据进行解析时,需要根据自定义字段映射表解析出需要修改的类名、方法名、替换内容、方法类型等。
205、基于第一脚本数据的识别标识,在目标应用程序的完整脚本数据中识别出第二脚本数据,并基于消息重定向,使得目标应用程序运行到第一脚本数据时执行第二脚本数据,以完成对目标应用程序的更新。
本申请实施例中,基于实施例步骤204中指定的更新数据中的第一脚本数据的识别标识,识别出目标应用程序原脚本代码中携带相同识别标识的脚本代码,即第二脚本数据。并基于消息重定向,实现对目标应用程序的动态更新。具体的,首先找到第二脚本数据中对应类的消息重定向方法forwardInvocation,基于替换方法class_replaceMethod将消息重定向方法forwardInvocation替换为第一脚本数据,以使得触发消息重定向时执行第一脚本数据。进一步的,在当前类创建一个新方法名并把它与旧方法绑定,可以通过添加方法class_addMethod实现,再创建一个空的方法指针,并将其与当前类中的旧方法指针替换,以使得调用此方法时,因为替换了空方法,从而crash触发消息重定向,即执行第一脚本数据。最后,拦截crash。此时,完成了目标应用程序的动态更新。
具体的,在实施例步骤205中基于消息重定向之前,实施例方法还包括:将第二脚本数据的消息重定向脚本数据替换为第一脚本数据,以使得触发第二脚本数据的消息重定向脚本数据时执行第一脚本数据。
进一步的,实施例步骤205中基于消息重定向,具体包括:创建携带识别标识的第三脚本数据,并将第二脚本数据替换为第三脚本数据,第三脚本数据为无内容脚本数据,以使得目标应用程序执行第二脚本数据时触发消息重定向脚本数据。
本申请提供了一种应用程序的更新方法,首先当监测到用户登录目标应用程序的操作行为时,获取所述目标应用程序的更新数据;其次解析所述更新数据,确定所述目标应用程序预计更新的第一脚本数据以及所述第一脚本数据的识别标识;最后基于所述第一脚本数据的识别标识,在所述目标应用程序的完整脚本数据中识别出第二脚本数据,并基于消息重定向,使得所述目标应用程序运行到所述第一脚本数据时执行所述第二脚本数据,以完成对所述目标应用程序的更新,所述第二脚本数据用于表征与所述第一脚本数据携带相同识别标识的脚本数据。与现有技术相比,本申请实施例通过在目标应用程序的整体脚本数据中找到与预计更新的第一脚本数据识别标识相匹配的第二脚本数据,将第二脚本数据替换为无内容脚本数据,并将第二脚本数据的重定向脚本数据替换为第一脚本数据,以使得目标应用程序运行至第二脚本数据时,由于脚本数据无内容,因此触发消息重定向脚本数据,而由于消息重定向脚本数据已经被替换为预计更新的第一脚本数据,从而目标应用程序将执行预计更新的第一脚本数据,以实现目标应用程序的动态更新,同时实现了对目标应用程序原生代码的更新。
进一步的,作为对上述图1所示方法的实现,本申请实施例提供了一种应用程序的更新装置,如图3所示,该装置包括:
获取模块31,解析模块32,更新模块33。
获取模块31,用于当监测到用户登录目标应用程序的操作行为时,获取所述目标应用程序的更新数据;
解析模块32,用于解析所述更新数据,确定所述目标应用程序预计更新的第一脚本数据以及所述第一脚本数据的识别标识;
更新模块33,用于基于所述第一脚本数据的识别标识,在所述目标应用程序的完整脚本数据中识别出第二脚本数据,并基于消息重定向,使得所述目标应用程序运行到所述第一脚本数据时执行所述第二脚本数据,以完成对所述目标应用程序的更新,所述第二脚本数据用于表征与所述第一脚本数据携带相同识别标识的脚本数据。
优选的,所述更新模块,具体用于:
创建携带所述识别标识的第三脚本数据,并将所述第二脚本数据替换为所述第三脚本数据,所述第三脚本数据为无内容脚本数据,以使得所述目标应用程序执行所述第二脚本数据时触发消息重定向脚本数据。
优选的,所述更新模块之前,所述装置还包括:
替换模块,用于将所述第二脚本数据的消息重定向脚本数据替换为所述第一脚本数据,以使得触发所述第二脚本数据的消息重定向脚本数据时执行所述第一脚本数据。
优选的,所述解析模块之前,所述装置还包括:
加密模块,用于提取所述更新数据中的第一验证数据,基于预设加密方法以及所述目标应用程序的公钥对所述第一验证数据进行加密处理,得到所述更新数据的待验证加密结果;
第一校验模块,用于若所述待验证加密结果与所述更新数据中的第二验证数据一致,则校验通过。
优选的,所述解析模块之前,所述装置还包括:
第二校验模块,用于若所述更新数据中包含多个预计更新的脚本数据,则依次对各个脚本数据进行解析。
优选的,所述获取模块之前,所述装置还包括:
确定模块,用于确定所述目标应用程序的版本信息,将所述版本信息传输至增量更新平台,所述增量更新平台存储有所述目标应用程序不同版本的更新数据。
优选的,所述获取模块,具体包括:
接收单元,用于接收所述增量更新平台返回的更新数据的存储地址;
获取单元,用于基于所述存储地址获取与所述目标应用程序当前版本信息相匹配的更新数据。
本申请提供了一种应用程序的更新装置,首先当监测到用户登录目标应用程序的操作行为时,获取所述目标应用程序的更新数据;其次解析所述更新数据,确定所述目标应用程序预计更新的第一脚本数据以及所述第一脚本数据的识别标识;最后基于所述第一脚本数据的识别标识,在所述目标应用程序的完整脚本数据中识别出第二脚本数据,并基于消息重定向,使得所述目标应用程序运行到所述第一脚本数据时执行所述第二脚本数据,以完成对所述目标应用程序的更新,所述第二脚本数据用于表征与所述第一脚本数据携带相同识别标识的脚本数据。与现有技术相比,本申请实施例通过在目标应用程序的整体脚本数据中找到与预计更新的第一脚本数据识别标识相匹配的第二脚本数据,将第二脚本数据替换为无内容脚本数据,并将第二脚本数据的重定向脚本数据替换为第一脚本数据,以使得目标应用程序运行至第二脚本数据时,由于脚本数据无内容,因此触发消息重定向脚本数据,而由于消息重定向脚本数据已经被替换为预计更新的第一脚本数据,从而目标应用程序将执行预计更新的第一脚本数据,以实现目标应用程序的动态更新,同时实现了对目标应用程序原生代码的更新。
根据本申请一个实施例提供了一种存储介质,所述存储介质存储有至少一条可执行指令,该计算机可执行指令可执行上述任意方法实施例中的应用程序的更新方法。
基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。
图4示出了根据本申请一个实施例提供的一种计算机设备的结构示意图,本申请具体实施例并不对计算机设备的具体实现做限定。
如图4所示,该计算机设备可以包括:处理器(processor)402、通信接口(Communications Interface)404、存储器(memory)406、以及通信总线408。
其中:处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通信。
通信接口404,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器402,用于执行程序410,具体可以执行上述应用程序的更新方法实施例中的相关步骤。
具体地,程序410可以包括程序代码,该程序代码包括计算机操作指令。
处理器402可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电路。计算机设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器406,用于存放程序410。存储器406可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序410具体可以用于使得处理器402执行以下操作:
当监测到用户登录目标应用程序的操作行为时,获取所述目标应用程序的更新数据;
解析所述更新数据,确定所述目标应用程序预计更新的第一脚本数据以及所述第一脚本数据的识别标识;
基于所述第一脚本数据的识别标识,在所述目标应用程序的完整脚本数据中识别出第二脚本数据,并基于消息重定向,使得所述目标应用程序运行到所述第一脚本数据时执行所述第二脚本数据,以完成对所述目标应用程序的更新,所述第二脚本数据用于表征与所述第一脚本数据携带相同识别标识的脚本数据。
存储介质中还可以包括操作系统、网络通信模块。操作系统是管理上述应用程序的更新的实体设备硬件和软件资源的程序,支持信息处理程序以及其它软件和/或程序的运行。网络通信模块用于实现存储介质内部各组件之间的通信,以及与信息处理实体设备中其它硬件和软件之间通信。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
可能以许多方式来实现本申请的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本申请的方法和系统。用于所述方法的步骤的上述顺序仅是为了进行说明,本申请的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本申请实施为记录在记录介质中的程序,这些程序包括用于实现根据本申请的方法的机器可读指令。因而,本申请还覆盖存储用于执行根据本申请的方法的程序的记录介质。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包括在本申请的保护范围之内。
Claims (10)
1.一种应用程序的更新方法,其特征在于,包括:
当监测到用户登录目标应用程序的操作行为时,获取所述目标应用程序的更新数据;
解析所述更新数据,确定所述目标应用程序预计更新的第一脚本数据以及所述第一脚本数据的识别标识;
基于所述第一脚本数据的识别标识,在所述目标应用程序的完整脚本数据中识别出第二脚本数据,并基于消息重定向,使得所述目标应用程序运行到所述第一脚本数据时执行所述第二脚本数据,以完成对所述目标应用程序的更新,所述第二脚本数据用于表征与所述第一脚本数据携带相同识别标识的脚本数据。
2.根据权利要求1所述的方法,其特征在于,所述基于消息重定向,使得所述目标应用程序运行到所述第一脚本数据时执行所述第二脚本数据,具体包括:
创建携带所述识别标识的第三脚本数据,并将所述第二脚本数据替换为所述第三脚本数据,所述第三脚本数据为无内容脚本数据,以使得所述目标应用程序执行所述第二脚本数据时触发消息重定向脚本数据。
3.根据权利要求2所述的方法,其特征在于,所述基于消息重定向,使得所述目标应用程序运行到所述第一脚本数据时执行所述第二脚本数据之前,所述方法还包括:
将所述第二脚本数据的消息重定向脚本数据替换为所述第一脚本数据,以使得触发所述第二脚本数据的消息重定向脚本数据时执行所述第一脚本数据。
4.根据权利要求1所述方法,其特征在于,所述解析所述更新数据之前,所述方法还包括:
提取所述更新数据中的第一验证数据,基于预设加密方法以及所述目标应用程序的公钥对所述第一验证数据进行加密处理,得到所述更新数据的待验证加密结果;
若所述待验证加密结果与所述更新数据中的第二验证数据一致,则校验通过。
5.根据权利要求1所述方法,其特征在于,所述解析所述更新数据之前,所述方法还包括:
若所述更新数据中包含多个预计更新的脚本数据,则依次对各个脚本数据进行解析。
6.根据权利要求1所述的方法,其特征在于,所述获取所述目标应用程序的更新数据之前,所述方法还包括:
确定所述目标应用程序的版本信息,将所述版本信息传输至增量更新平台,所述增量更新平台存储有所述目标应用程序不同版本的更新数据。
7.根据权利要6所述的方法,其特征在于,所述获取所述目标应用程序的更新数据,具体包括:
接收所述增量更新平台返回的更新数据的存储地址;
基于所述存储地址获取与所述目标应用程序当前版本信息相匹配的更新数据。
8.一种应用程序的更新装置,其特征在于,包括:
获取模块,用于当监测到用户登录目标应用程序的操作行为时,获取所述目标应用程序的更新数据;
解析模块,用于解析所述更新数据,确定所述目标应用程序预计更新的第一脚本数据以及所述第一脚本数据的识别标识;
更新模块,用于基于所述第一脚本数据的识别标识,在所述目标应用程序的完整脚本数据中识别出第二脚本数据,并基于消息重定向,使得所述目标应用程序运行到所述第一脚本数据时执行所述第二脚本数据,以完成对所述目标应用程序的更新,所述第二脚本数据用于表征与所述第一脚本数据携带相同识别标识的脚本数据。
9.一种存储介质,所述存储介质中存储有至少一条可执行指令,其特征在于,所述可执行指令使处理器执行如权利要求1-7中任一项所述的应用程序的更新方法对应的操作。
10.一种计算机设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一条可执行指令,其特征在于,所述可执行指令使所述处理器执行如权利要求1-7中任一项所述的应用程序的更新方法对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310179997.0A CN116257282A (zh) | 2023-02-21 | 2023-02-21 | 应用程序的更新方法及装置、存储介质、计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310179997.0A CN116257282A (zh) | 2023-02-21 | 2023-02-21 | 应用程序的更新方法及装置、存储介质、计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116257282A true CN116257282A (zh) | 2023-06-13 |
Family
ID=86685989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310179997.0A Pending CN116257282A (zh) | 2023-02-21 | 2023-02-21 | 应用程序的更新方法及装置、存储介质、计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116257282A (zh) |
-
2023
- 2023-02-21 CN CN202310179997.0A patent/CN116257282A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11237844B2 (en) | Method and apparatus for loading kernel module | |
US11550599B2 (en) | Method and apparatus for running applet | |
EP3690646A1 (en) | Correction of translated text in localized applications | |
CN110941528A (zh) | 一种基于故障的日志埋点设置方法、装置及系统 | |
US20220198003A1 (en) | Detecting added functionality in open source package | |
CN111737692B (zh) | 应用程序的风险检测方法及装置、设备、存储介质 | |
CN110673837B (zh) | 代码修复方法及装置、电子设备、计算机可读存储介质 | |
CN111179086A (zh) | 一种基于WebAssembly的智能合约虚拟机 | |
WO2021175053A1 (zh) | 一种在虚拟机中执行功能模块的方法和装置 | |
CN114115904A (zh) | 信息处理方法、装置、服务器及存储介质 | |
CN109753767B (zh) | 基于区块链的软件分发及更新方法和装置、服务器、客户端 | |
CN116974947A (zh) | 一种组件检测方法、装置、电子设备及存储介质 | |
CN111400623B (zh) | 用于搜索信息的方法和装置 | |
US11722324B2 (en) | Secure and accountable execution of robotic process automation | |
CN116257282A (zh) | 应用程序的更新方法及装置、存储介质、计算机设备 | |
US11030087B2 (en) | Systems and methods for automated invocation of accessibility validations in accessibility scripts | |
CN112925523A (zh) | 对象比较方法、装置、设备及计算机可读介质 | |
US20210026608A1 (en) | Compile time validation of programming code | |
Padaryan et al. | Methods and software tools to support combined binary code analysis | |
CN112860285B (zh) | 金融自助设备的sp升级包生成方法、装置及计算机设备 | |
CN115543486B (zh) | 面向无服务器计算的冷启动延迟优化方法、装置和设备 | |
CN112799674B (zh) | 区块链中智能合约的执行方法、装置及节点设备 | |
CN117827624A (zh) | 功能测试方法、装置及存储介质 | |
CN113419738A (zh) | 接口文档的生成方法、装置及接口管理设备 | |
CN113971291A (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 |