CN111488169A - 应用程序热更新的方法及装置、存储介质及电子设备 - Google Patents
应用程序热更新的方法及装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN111488169A CN111488169A CN202010265831.7A CN202010265831A CN111488169A CN 111488169 A CN111488169 A CN 111488169A CN 202010265831 A CN202010265831 A CN 202010265831A CN 111488169 A CN111488169 A CN 111488169A
- Authority
- CN
- China
- Prior art keywords
- content
- hot
- script
- application program
- signature
- 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/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)
- Information Transfer Between Computers (AREA)
Abstract
本公开提供一种应用程序热更新的方法及装置、电子设备、计算机可读存储介质,涉及通信软件技术领域。所述应用程序热更新的方法包括:响应于应用程序的启动操作,开启所述应用程序;启动所述应用程序的引擎,访问服务器并获取所述服务器针对所述应用程序发布的热更新内容,其中,所述热更新内容包含针对更新的脚本代码编译得到的脚本字节码;利用脚本解释器解释并执行所述热更新内容。本公开在应用程序的引擎启动后,即开始对应用程序进行热更新,因此,可以在保证修复性时效性的同时,减少应用程序修复过程中的盲区。
Description
技术领域
本公开涉及通信软件技术领域,具体而言,涉及一种应用程序热更新的方法、应用程序热更新的装置、电子设备以及计算机可读存储介质。
背景技术
应用程序是针对用户的某种特殊应用目的所撰写的软件,通过不同的应用程序可以为用户提供不同的服务。而在实际应用中,出于扩展功能,修复漏洞,提升用户体验等目的,常常需要对应用程序进行更新。
传统更新技术在进行上述改进时,需要对应用程序进行完整的替换,即,需要开发人员修改源代码,并在开发环境中重新编译链接,生成新的应用软件,发布在对应的移动终端上以供用户重新安装,这就会带来工作量大,耗时长等问题。而PATCH更新(补丁更新)和热更新推送虽然可以改善传统更新技术存在的问题,但也会增大修复不到的盲区。
因此需要提出一种应用程序热更新的方法,在应用程序的引擎启动后,即开始对应用程序进行热更新,可以在保证修复性时效性的同时,减少应用程序修复过程中的盲区。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开实施例的目的在于提供一种应用程序热更新的方法、应用程序热更新的装置、电子设备以及计算机可读存储介质,进而可以在保证修复性时效性的同时,减少应用程序修复过程中的盲区。
根据本公开的第一方面,提供一种应用程序热更新的方法,包括:
响应于应用程序的启动操作,开启所述应用程序;
启动所述应用程序的引擎,访问服务器并获取所述服务器针对所述应用程序发布的热更新内容,其中,所述热更新内容包含针对更新的脚本代码编译得到的脚本字节码;
利用脚本解释器解释并执行所述热更新内容。
在本公开的一种示例性实施例中,在所述利用脚本解释器解释并执行所述热更新内容之后,所述方法还包括:
响应于用户的登录操作,进入所述应用程序。
在本公开的一种示例性实施例中,在所述利用脚本解释器解释并执行所述热更新内容之后,所述方法还包括:
访问所述服务器,查询并获取补丁更新信息;
响应于用户针对所述补丁更新信息的选择操作,依据所述补丁更新信息执行更新。
在本公开的一种示例性实施例中,所述热更新内容包含的脚本字节码为经过加密的密文内容,所述热更新内容还包括对所述密文内容签名得到的签名内容;
在所述获取所述服务器发布的热更新内容之后,所述方法还包括:
获取所述服务器发布的与签名私钥相对应的签名公钥,并利用所述签名公钥对所述签名内容进行解签运算,得到解签后的签名内容,所述签名私钥为所述服务器对所述密文内容进行签名所使用的私钥;
将所述解签后的签名内容与所述密文内容进行对比,当对比结果一致时,签名验证通过。
在本公开的一种示例性实施例中,所述密文内容为文本格式的密文内容;
在所述签名验证通过之后,所述方法还包括:
通过预设的编码算法将文本格式的所述密文内容转换为二进制格式的密文内容。
在本公开的一种示例性实施例中,所述通过预设的编码算法将文本格式的所述密文内容转换为二进制格式的密文内容后,所述方法还包括:
对所述密文内容进行解压。
在本公开的一种示例性实施例中,当所述签名验证通过后,所述方法还包括:
获取异或加密的解密密钥,所述解密密钥为所述服务器对所述脚本字节码进行异或所使用的加密密钥;
使用所述解密密钥对所述密文内容进行解密,得到待执行的所述脚本字节码。
根据本公开的第二方面,提供一种应用程序热更新的方法,包括:
获取用于更新的脚本代码,利用脚本解释器编译所述脚本代码,生成对应的脚本字节码,并根据所述脚本字节码得到热更新内容;
发布所述热更新内容,以供客户端访问。
在本公开的一种示例性实施例中,所述根据所述脚本字节码得到热更新内容,包括:
获取异或加密的加密密钥;
通过所述加密密钥对所述脚本字节码进行按位异或操作,得到所述脚本字节码对应的密文内容;
根据所述密文内容得到所述热更新内容。
在本公开的一种示例性实施例中,所述得到所述脚本字节码对应的密文内容之后,所述方法还包括:
对所述密文内容进行压缩。
在本公开的一种示例性实施例中,所述根据所述密文内容得到热更新内容,包括:
通过预设的编码算法将二进制格式的所述密文内容转换为文本格式的密文内容;
根据所述文本格式的密文内容得到热更新内容。
在本公开的一种示例性实施例中,所述根据所述密文内容得到热更新内容,包括:
获取签名私钥;
通过所述签名私钥对所述密文内容进行签名,得到针对所述密文内容的签名内容;
根据所述密文内容和所述签名内容得到所述热更新内容。
在本公开的一种示例性实施例中,所述根据所述密文内容和所述签名内容得到所述热更新内容之前,所述方法还包括:
通过预设的编码算法将二进制格式的签名内容转化为文本格式的签名内容。
根据本公开的第三方面,提供一种应用程序热更新的装置,包括:
响应模块,用于响应于应用程序的启动操作,开启所述应用程序;
获取模块,用于启动所述应用程序的引擎,访问服务器并获取所述服务器针对所述应用程序发布的热更新内容,其中,所述热更新内容包含针对更新的脚本代码编译得到的脚本字节码;
热更新模块,用于利用脚本解释器解释并执行所述热更新内容。
根据本公开的第四方面,提供一种应用程序热更新的装置,包括:
编译模块,用于获取用于更新的脚本代码,利用脚本解释器编译所述脚本代码,生成对应的脚本字节码,并根据所述脚本字节码得到热更新内容;
发布模块,用于发布所述热更新内容,以供客户端访问。
根据本公开的第五方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的方法。
根据本公开的第六方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的方法。
本公开示例性实施例可以具有以下部分或全部有益效果:
在公开示例实施方式所提供的应用程序热更新的方法中,首先,响应于作用于应用程序的启动操作,开启应用程序;启动应用程序的引擎,访问服务器并获取服务器针对该应用程序发布的热更新内容,其中,热更新内容包含针对更新的脚本代码编译得到的脚本字节码;利用脚本解释器解释并执行热更新内容。一方面,比起传统的对应用程序进行完全替换的更新方法及补丁更新的方法,本公开示例实施方式所提供的热更新方法在应用程序的服务端发布热更新内容,以供客户端获取并执行更新,修复漏洞,扩展功能,这一过程最快只需数分钟即可完成,使得应用程序的更新更高效,能更好地适应紧急问题的处理。另一方面,由于本方法中的更新过程是在应用程序引擎启动之后,用户登陆之前进行,且在该更新完成后,还可以继续进行补丁更新等其他方式的修复更新方式,故可以在保证修复时效性的同时,减少应用程序修复过程中的盲区。同时,由于该方法不需要重新在应用市场中重新发布,并由用户下载应用程序,可以提高应用程序版本开发更新的效率,及时满足最新的技术需求,这也为软件开发提供了极大的便利。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了可以应用本公开实施例的一种应用程序热更新的方法及装置的示例性***架构的示意图;
图2示出了适于用来实现本公开实施例的电子设备的计算机***的结构示意图;
图3示意性示出了根据本公开的一个实施例的应用程序热更新的方法的流程图;
图4示意性示出了根据本公开的一个实施例的应用程序热更新的方法的脚本字节码生成过程的示意图;
图5示意性示出了根据本公开的一个实施例的应用程序热更新的方法的流程图;
图6示意性示出了根据本公开的一个实施例的应用程序热更新的方法的异或加密过程的示意图;
图7示意性示出了根据本公开的一个实施例的应用程序热更新的方法的压缩过程的示意图;
图8示意性示出了根据本公开的一个实施例的应用程序热更新的方法的文本转化过程的示意图;
图9示意性示出了根据本公开的一个实施例的应用程序热更新的装置的框图;
图10示意性示出了根据本公开的一个实施例的应用程序热更新的装置的框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
图1示出了可以应用本公开实施例的一种应用程序热更新的方法及装置的示例性应用环境的***架构的示意图。
如图1所示,***架构100可以包括终端设备101、102、103中的一个或多个,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。终端设备101、102、103可以是具有显示屏的各种电子设备,包括但不限于台式计算机、便携式计算机、智能手机和平板电脑等等。应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器105可以是多个服务器组成的服务器集群等。
本公开实施例所提供的应用程序热更新的方法可以由终端设备101、102、103执行,相应的,应用程序热更新的装置可以设置于终端设备101、102、103中。本公开实施例所提供的应用程序热更新的方法也可以由服务器105执行,相应的,应用程序热更新的装置可以设置于服务器105中。此外,本公开实施例所提供的应用程序热更新的方法还可以由终端设备101、102、103与服务器105共同执行,相应地,应用程序热更新的装置可以设置于终端设备101、102、103与服务器105中,本示例性实施例中对此不做特殊限定。
例如,在本示例实施方式中,响应于作用于移动终端101、102、103中的应用程序客户端的启动操作,开启该应用程序;在应用程序的引擎启动后,客户端通过网络104访问应用程序的服务器105,获取服务器105针对该应用程序发布的热更新内容,其中,热更新内容包含针对更新的脚本代码编译得到的脚本字节码;最后,客户端利用脚本解释器解释并执行热更新内容,完成对于应用程序的更新。
图2示出了适于用来实现本公开实施例的电子设备的计算机***的结构示意图。
需要说明的是,图2示出的电子设备的计算机***200仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图2所示,计算机***200包括中央处理单元(CPU)201,其可以根据存储在只读存储器(ROM)202中的程序或者从存储部分208加载到随机访问存储器(RAM)203中的程序而执行各种适当的动作和处理。在RAM 203中,还存储有***操作所需的各种程序和数据。CPU201、ROM 202以及RAM 203通过总线204彼此相连。输入/输出(I/O)接口205也连接至总线204。
以下部件连接至I/O接口205:包括键盘、鼠标等的输入部分206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分207;包括硬盘等的存储部分208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分209。通信部分209经由诸如因特网的网络执行通信处理。驱动器210也根据需要连接至I/O接口205。可拆卸介质211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器210上,以便于从其上读出的计算机程序根据需要被安装入存储部分208。
应用程序是针对用户的某种特殊应用目的所撰写的软件,通过不同的应用程序可以为用户提供不同的服务。而在实际应用中,出于扩展功能,修复漏洞,提升用户体验等目的,常常需要对应用程序进行更新。
关于应用程序的更新,发明人首先提出了以下三种方法:
第一种方法为传统更新方法。该方法首先由开发人员在开发环境中使用编译语言进行编写更新应用程序所需的代码,接着,经过编译链接,生成对应的更新后的应用程序并发布在移动终端的应用市场中,也即对应用程序进行完整的替换。这一更新过程由于需要经过修改代码、编译链接、重新分发、重新安装等流程,所以会带来流程工作量大,耗时长,中间关系较为复杂等问题。
一般而言,稳定的引擎是不需要进行更新的,因此,应用程序的更新主要针对资源包进行。第二种方法便是将新增、修改的资源再合并成一个新的资源包,提供给应用程序客户端,以供其获取并更新应用程序,称之为PATCH(补丁)更新。
该更新过程可以分为发布和更新两个部分。在发布流程中,开发人员在开发环境中新增、改进游戏功能,并在测试完成后,将所有游戏资源打包成新的资源包;接着,将新的资源包和移动终端应用市场中应用程序客户端的资源包进行对比,得到资源变化列表,并提取发生变化的资源,打包成PATCH更新包;最后,将PATCH更新包分发到应用程序服务端,等待客户端访问。
在PATCH更新包分发至应用程序服务端后,可以进入更新流程,具体过程如下:首先用户通过操作***运行应用程序客户端,客户端在接收到用户操作后,执行应用初始化,准备好脚本语言解释器和脚本代码运行环境;接着,执行脚本初始化,准备好PATCH更新的环境;通过网络访问游戏服务端,查询最新的PATCH信息,并根据查询信息检查本地资源包,确定需要更新的资源列表;将对应的资源下载到本地,并根据资源内容,更新本地资源包。
然而,该PATCH更新方法,虽然不用对应用程序进行完整替换,但也存在如下问题:(1)资源打包耗时:将脚本代码和其他资源通过加密、压缩、转换、筛选等过程,整合成完整的一个资源包,这一过程通常有几十分钟到数小时不等,非常耗时;(2)PATCH制作耗时:每次制作PATCH,需要将修改后的资源重新打包为新的资源包,且需要进行资源对比,得到资源变化列表。之后,再次进行资源打包,才能形成PATCH资源包。对比、摘取、打包整个流程也会带来很大的时间成本;(3)PATCH更新耗时:在PATCH更新流程中,需要对应用程序客户端的全资源进行扫描,以及之后的下载和更新的过程,都需要大量的时间消耗;(4)PATCH代码盲区:PATCH更新流程由于步骤繁多,逻辑复杂,也使得更新流程本身出现缺陷的概率增大。且PATCH更新流程一旦出错,将只能退回到手机应用的传统更新方式,耗时更长。同时,比PATCH更新早执行的核心引擎功能,如果出现缺陷,也不能通过PATCH更新来解决,同样需要退回到手机应用的传统更新方式。
第三种方法为热更新推送方法。应用程序在连接服务端之后,会进行用户身份验证,之后便可以接受服务端提供的功能。同时,也可以在建立好的网络链接中,传输脚本代码。在需要在线修改时,可以从服务端出发,主动推送用于更新的脚本代码到客户端,以供其执行。
热更新推送方法相比PATCH更新方法,更加轻量,反应迅速。但也存在以下问题:热更新推送技术必须在登陆之后,才可以在安全的网络链接中传输代码。那么登录前便成为更新的盲区,且由于用户登陆的过程流程长,逻辑复杂,也会有很大的概率出现缺陷,需要通过PATCH来更新。
为了解决上述三种方法中存在的问题,在本示例实施方式中,发明人又提出了一种新的技术方案,以下对本公开实施例的技术方案进行详细阐述:
本示例实施方式首先提供了一种应用程序热更新的方法。该应用程序热更新的方法作用于应用程序引擎启动之后,用户登录之前,可以应用于上述终端设备101、102、103中的一个或多个,也可以应用于上述服务器105中。参考图3所示,该应用程序热更新的方法具体包括以下步骤:
步骤S310:响应于应用程序的启动操作,开启所述应用程序;
步骤S320:启动所述应用程序的引擎,访问服务器并获取所述服务器针对所述应用程序发布的热更新内容,其中,所述热更新内容包含针对更新的脚本代码编译得到的脚本字节码;
步骤S330:利用脚本解释器解释并执行所述热更新内容。
在本示例实施方式所提供的应用程序热更新的方法中,一方面,比起传统的对应用程序进行完全替换的更新方法及补丁更新的方法,本公开示例实施方式所提供的热更新方法在应用程序的服务端发布热更新内容,以供客户端获取并执行更新,修复漏洞,扩展功能,这一过程最快只需数分钟即可完成,使得应用程序的更新更高效,能更好地适应紧急问题的处理。另一方面,由于本方法中的更新过程是在应用程序引擎启动之后,用户登陆之前进行,且在该更新完成后,还可以继续进行补丁更新等其他方式的修复更新方式,故可以在保证修复时效性的同时,减少应用程序修复过程中的盲区。同时,由于该方法不需要重新在应用市场中重新发布,并由用户下载应用程序,可以提高应用程序版本开发更新的效率,及时满足最新的技术需求,这也为软件开发提供了极大的便利。
下面,在另一实施例中,对上述步骤进行更加详细的说明。
在步骤S310中,响应于应用程序的启动操作,开启所述应用程序。
本示例实施方式所提供的应用程序热更新的方法应用于应用程序的客户端。该更新方法作用于应用程序引擎启动之后,用户登录之前,且在该热更新完成后,还可以继续执行PATCH更新、用户登陆验证等功能。通过这样的方式,可以减少应用程序更新过程中的盲区。
在本示例实施方式中,上述应用程序的客户端可以位于终端设备中,该终端设备,举例而言,可以为智能手机、平板电脑或笔记本电脑,本示例实施方式对此不做特殊限定。
在本示例实施方式中,应用程序是为了满足用户的应用需求而撰写的应用软件,通过不同的应用程序可以为用户提供不同的服务。举例而言,该应用程序可以为游戏应用。游戏应用在运行时,通常需要通过网络与服务器进行通讯,设置于移动终端的即为该游戏应用的客户端。此外,该应用程序也可以为其他类型的应用程序,本示例实施方式对此不做特殊限定。
在本示例实施方式中,一般而言,应用程序的启动主要包括应用启动,引擎启动及脚本启动三个阶段。上述“终端设备响应于用户作用于上述应用程序客户端的启动操作,开启该应用程序”这一过程即为应用启动阶段,应用启动阶段通常是为应用程序客户端准备必要的资源和运行环境,也可以理解为应用运行环境及资源包等的加载过程,这一过程发生在用户登录之前。以游戏应用为例,即为启动终端设备的操作***,在这一过程中,终端设备会为游戏客户端准备必要的资源和运行环境,之后再执行开发人员编写的游戏客户端功能。需要说明的是,上述场景只是一种示例性说明,不对本示例实施方式起限定作用。
在本示例实施方式中,上述启动操作,举例而言,可以为作用于终端设备桌面中该应用程序图标的点击操作,也可以为设置好的快捷操作,应用程序还可以随操作***自启动。除此之外,该启动操作也可以其他可以起到相同作用的操作,本示例实施方式对此不做特殊限定。
在步骤S320中,启动所述应用程序的引擎,访问服务器并获取所述服务器针对所述应用程序发布的热更新内容,其中,所述热更新内容包含针对更新的脚本代码编译得到的脚本字节码。
在本示例实施方式中,在上述应用程序启动后,接着会启动应用程序的引擎,在引擎启动的阶段,移动终端将部分***权限交由应用程序客户端管理,客户端则执行初始化,准备好脚本解释器运行的必要环境和其他资源的加载环境。以游戏应用为例,这一过程中,游戏客户端得到部分***操作权限,执行自己的初始化工作,准备好脚本解释器运行的必要环境和其他资源的加载环境,完成之后再执行游戏资源包中的脚本资源。需要说明的是,该游戏应用场景只是一种示例性说明,不对本示例实施方式起限定作用。
在本示例实施方式中,在应用程序的引擎启动之后,会第一时间查询应用程序服务端是否存在热更新推送,若存在热更新推送,则访问应用程序服务器端,并获取该服务器针对应用程序发布的热更新内容。该热更新内容为应用程序更新所需的代码,该更新代码为使用脚本语言编写的脚本代码。脚本语言由于可以通过脚本解释器一边解释一边执行,因此无需进行编译链接的开发步骤,便可以用通过解释器的可执行程序加载并执行,从而可以节约时间,提高效率。其中,上述可执行程序指的是计算机设备可以理解并执行的二进制序列,也就是机器码。任何语言在计算机设备中执行时,都需要将其转化为机器码,有组织地存放在一起,才能由计算机的操作***调度并执行。
其中,上述热更新内容为上述脚本代码的字节码形式,即开发人员在使用脚本语言编写得到应用程序更新所需的脚本代码后,服务器端获取该脚本代码,并将该脚本代码转化为字节码,才得到上述热更新内容,如图4所示,该转化过程可以如下:使用脚本语言对应的解释器将文本格式的脚本代码编译生成以二进制表示的中间代码,得到脚本字节码。例如,若编写脚本代码使用的脚本语言为PYTHON,则可以通过PYTHON解释器编译得到上述脚本字节码。通过将脚本代码转化为脚本字节码,可以避免明文传输脚本代码,同时也可以加快应用程序客户端解释执行脚本代码的速度。
在本示例实施方式中,优选地,应用程序客户端获取到的上述热更新内容还可以为对上述脚本字节码进行了加密,压缩,文本转化及签名等操作中的一种或多种后得到的内容。相应地,应用程序客户端则需要对其进行验签,文本转化的逆转化、解压缩及解密操作。下面对这些操作进行详细的说明:
上述热更新内容包含的脚本字节码为经过加密的密文内容,且该热更新内容还包括对上述密文内容签名得到的签名内容。则应用程序客户端在获取服务器发布的该热更新内容后,首先,要对该热更新内容验签,验签过程的实现可以如下:获取服务器发布的与签名私钥相对应的签名公钥,并利用该签名公钥对上述热更新内容中的签名内容进行解签运算,得到解签后的签名内容,其中,上述签名私钥为服务器对上述密文内容进行签名所使用的私钥;将解签后的签名内容与密文内容进行对比,当对比结果一致时,签名验证通过。
在本示例实施方式中,对签名内容进行验签可以确定热更新内容的合法来源。例如,当攻击者伪造热更新内容企图欺骗应用程序客户端,以使客户端按照其意图运行时,通过该验签算法,解签名得到的内容与加密后的脚本字节码生成的密文内容会不一致,通过这种不一致,客户端便可以得知该热更新内容并不是由服务器发布的,从而可以提高***的安全性。除此之外,该过程也可以确保用于更新的脚本字节码的完整性等,这都属于本示例实施方式的保护范畴。
当上述签名验证通过后,本示例实施方式所提供的应用程序热更新方法还需要对上述热更新内容的密文内容进行解密运算才可以得到可执行的脚本字节码,以所使用的加密算法为异或加密为例,该解密过程可以如下;获取异或加密的解密密钥,该解密密钥即为服务器对脚本字节码进行异或所使用的加密密钥;使用解密密钥对密文内容进行解密,得到待执行的脚本字节码。需要说明的是,上述场景只是一种示例性说明,其他加解密算法也属于本示例实施方式的保护范畴。
在本示例实施方式中,为了便于传输,上述密文内容还可能为经过文本转化后得到的文本格式的密文内容,针对这种情况,在上述签名验证通过之后,解密过程之前,还需要对该密文内容进行对应的逆转化,该过程实现可以如下:通过预设的编码算法将文本格式的密文内容转换为二进制格式的密文内容,其中,预设的编码算法可以为BASE64编码算法,也可以为其他编码算法,本示例实施方式对此不做特殊限定。
进一步地,上述密文内容还可能为经过压缩算法得到的压缩文件,则在这种情况下,在上述通过预设的编码算法将文本格式的密文内容转换为二进制格式的密文内容后,还需对密文内容进行对应的解压操作,才能继续进行解密。
需要说明的是,依据服务器端对于脚本代码的对应操作,上述验签,文本转化的逆转化、解压缩及解密操作可以全部或部分进行,本示例实施方式对此不做特殊限定。
在步骤S330中,利用脚本解释器解释并执行所述热更新内容。
在本示例实施方式中,通过步骤S320中的流程,可以得到可执行的热更新内容,在本公开中,也即可执行的脚本字节码。在得到该脚本字节码后,会进入脚本启动阶段,在该阶段中,应用程序客户端引擎将部分功能执行权限交给脚本解释器,通过该脚本解释器,可以对得到的脚本字节码,也即热更新内容进行一边解释一边执行的过程,至此,用户登录前热更新功能便全部完成。以游戏应用为例,该阶段游戏客户端引擎将部分功能执行权限交给脚本解释器,开始运行脚本代码,执行具体游戏功能。需要说明的是,该游戏应用场景只是一种示例性说明,不对本示例实施方式起限定作用。
在本示例实施方式中,在上述利用脚本解释器解释并执行所述热更新内容之后,还可以响应于用户的登录验证操作,进入上述应用程序,并执行应用程序的具体功能。以游戏应用为例,可以为继续执行PATCH更新、用户登陆验证、进入游戏服务器、游玩游戏等功能,本示例实施方式对此不做特殊限定。
其中,执行PATCH更新的过程则可以为:访问服务器,查询并获取补丁更新信息;响应于用户针对补丁更新信息的选择操作,依据补丁更新信息执行更新。需要说明的是,上述只是一种示例性说明,不对本示例实施方式起限定作用。
对应地,本示例实施方式还提供了一种应用程序热更新的方法。该应用程序热更新的方法应用于应用程序服务器端。参考图5所示,该应用程序热更新的方法具体包括以下步骤:
步骤S510:获取用于更新的脚本代码,利用脚本解释器编译所述脚本代码,生成对应的脚本字节码,并根据所述脚本字节码得到热更新内容;
步骤S520:发布所述热更新内容,以供客户端访问。
下面,在另一实施例中,对上述步骤进行更加详细的说明。
在步骤S510中,获取用于更新的脚本代码,利用脚本解释器编译所述脚本代码,生成对应的脚本字节码,并根据所述脚本字节码得到热更新内容。
在本示例实施方式中,开发人员在使用脚本语言编写得到应用程序更新所需的脚本代码后,服务器端获取该脚本代码,并将该脚本代码转化为字节码,得到上述热更新内容。利用脚本解释器编译获取到的脚本代码生成对应的脚本字节码的过程在步骤步骤S320中已经进行了详细的介绍,故在此不再赘述。通过将脚本代码转化为脚本字节码,可以避免明文传输脚本代码,同时也可以加快应用程序客户端解释执行脚本代码的速度。
在本示例实施方式中,优选地,上述根据脚本字节码得到热更新内容这一过程,可以包括对该脚本字节码进行加密,压缩,文本转化及签名等操作中的一种或多种。下面对这些操作进行详细的说明:
上述在得到脚本字节码后,为了保护字节码内容不受内容被窃取。以游戏应用为例,当热更新内容中包含一些游戏敏感数据,如访问游戏服务端的令牌等,不希望传输中被窃取和破解时,可以通过加密的手段保护内容。该加密过程可以采用异或加密的方法,如图6所示,过程如下:获取异或加密的加密密钥;通过该加密密钥对脚本字节码进行按位异或操作,得到脚本字节码对应的密文内容;根据密文内容得到热更新内容。需要说明的是,上述场景只是一种示例性说明,其他的加密方法,如DES加密等也属于本示例实施方式的保护范畴。
在本示例实施方式中,为了减小热更新内容的大小,进而缩短网络传输的时间,降低网络传输的压力,节约服务端的流量成本,在对上述脚本字节码进行加密后,上述根据密文内容得到热更新内容还可以包括对该密文内容进行压缩。举例而言,如图7所示,该压缩过程可以使用ZIP压缩算法。需要说明的是,上述场景只是一种示例性说明,其他压缩算法,如LZ4等压缩算法也属于本示例实施方式的保护范畴。
进一步地,在本示例实施方式中,为了便于传输,上述根据密文内容得到热更新内容,还可以包括:通过预设的编码算法将二进制格式的密文内容转换为文本格式的密文内容;根据文本格式的密文内容得到热更新内容。其中,如图8所示,预设的编码算法可以为BASE64编码算法,使其便于在HTTP协议中传输内容。需要说明的是,上述场景只是一种示例性说明,其他编码算法,如HEX等也属于本示例实施方式的保护范畴。此外,还可以直接采用二进制传输,本示例实施方式对此不做要求。
在本示例实施方式中,为了确保热更新内容来源的合法性及内容的完整性,防止攻击者在传输过程中窃取并更改更新内容,本示例实施方式还可以对热更新内容进行签名运算,则上述根据密文内容得到热更新内容,还可以包括:获取签名私钥;通过签名私钥对密文内容进行签名,得到针对该密文内容的签名内容;根据密文内容和签名内容得到所述热更新内容。其中,签名密钥对由服务器生成,服务器在生成该密钥对后,使用私钥对密文内容签名,并公布公钥。签名算法可以为RSA签名算法,也可以采用基于其他私钥体制的签名算法,本示例实施方式对此不做特殊限定。
可选地,上述签名内容可以通过编码算法转化为文本格式,以便于传输,具体实现可以如下:通过预设的编码算法将二进制格式的签名内容转化为文本格式的签名内容。同样地,该预设的编码算法可以为BASE64编码算法,使其便于在HTTP协议中传输内容;也可以为HEX等其他编码算法,本示例实施方式对此不做特殊限定。
在步骤S520中,发布所述热更新内容,以供客户端访问。
在本示例实施方式中,应用程序服务端通过步骤S510的流程得到热更新内容后,通过网络发布该热更新内容,以供客户端访问获取,并依据该热更新内容执行对应用程序的热更新。
应当注意,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
对应地,本示例实施方式还提供了一种应用程序热更新的装置,应用于客户端,参考图9所示,该应用程序热更新的装置900可以包括响应模块910、获取模块920及热更新模块930,其中:
响应模块910可以用于响应于应用程序的启动操作,开启所述应用程序;
获取模块920可以用于启动所述应用程序的引擎,访问服务器并获取所述服务器针对所述应用程序发布的热更新内容,其中,所述热更新内容包含针对更新的脚本代码编译得到的脚本字节码;
热更新模块930可以用于利用脚本解释器解释并执行所述热更新内容。
上述应用程序热更新的装置中各模块或单元的具体细节已经在对应的应用程序热更新的方法中进行了详细的描述,因此此处不再赘述。
进一步地,本示例实施方式还提供了一种应用程序热更新的装置,应用于服务器端,参考图10所示,该应用程序热更新的装置1000可以包括编译模块1010及发布模块1020,其中:
编译模块1010可以用于获取用于更新的脚本代码,利用脚本解释器编译所述脚本代码,生成对应的脚本字节码,并根据所述脚本字节码得到热更新内容;
发布模块1020可以用于发布所述热更新内容,以供客户端访问。
上述应用程序热更新的装置中各模块或单元的具体细节已经在对应的应用程序热更新的方法中进行了详细的描述,因此此处不再赘述。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。例如,所述的电子设备可以实现如图3~图8所示的各个步骤等。
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (17)
1.一种应用程序热更新的方法,其特征在于,包括:
响应于应用程序的启动操作,开启所述应用程序;
启动所述应用程序的引擎,访问服务器并获取所述服务器针对所述应用程序发布的热更新内容,其中,所述热更新内容包含针对更新的脚本代码编译得到的脚本字节码;
利用脚本解释器解释并执行所述热更新内容。
2.根据权利要求1所述的应用程序热更新的方法,其特征在于,在所述利用脚本解释器解释并执行所述热更新内容之后,所述方法还包括:
响应于用户的登录操作,进入所述应用程序。
3.根据权利要求1所述的应用程序热更新的方法,其特征在于,在所述利用脚本解释器解释并执行所述热更新内容之后,所述方法还包括:
访问所述服务器,查询并获取补丁更新信息;
响应于用户针对所述补丁更新信息的选择操作,依据所述补丁更新信息执行更新。
4.根据权利要求1所述的应用程序热更新的方法,其特征在于,所述热更新内容包含的脚本字节码为经过加密的密文内容,所述热更新内容还包括对所述密文内容签名得到的签名内容;
在所述获取所述服务器发布的热更新内容之后,所述方法还包括:
获取所述服务器发布的与签名私钥相对应的签名公钥,并利用所述签名公钥对所述签名内容进行解签运算,得到解签后的签名内容,所述签名私钥为所述服务器对所述密文内容进行签名所使用的私钥;
将所述解签后的签名内容与所述密文内容进行对比,当对比结果一致时,签名验证通过。
5.根据权利要求4所述的应用程序热更新的方法,其特征在于,所述密文内容为文本格式的密文内容;
在所述签名验证通过之后,所述方法还包括:
通过预设的编码算法将文本格式的所述密文内容转换为二进制格式的密文内容。
6.根据权利要求5所述的应用程序热更新的方法,其特征在于,所述通过预设的编码算法将文本格式的所述密文内容转换为二进制格式的密文内容后,所述方法还包括:
对所述密文内容进行解压。
7.根据权利要求4所述的应用程序热更新的方法,其特征在于,当所述签名验证通过后,所述方法还包括:
获取异或加密的解密密钥,所述解密密钥为所述服务器对所述脚本字节码进行异或所使用的加密密钥;
使用所述解密密钥对所述密文内容进行解密,得到待执行的所述脚本字节码。
8.一种应用程序热更新的方法,其特征在于,包括:
获取用于更新的脚本代码,利用脚本解释器编译所述脚本代码,生成对应的脚本字节码,并根据所述脚本字节码得到热更新内容;
发布所述热更新内容,以供客户端访问。
9.根据权利要求8所述的应用程序热更新的方法,其特征在于,所述根据所述脚本字节码得到热更新内容,包括:
获取异或加密的加密密钥;
通过所述加密密钥对所述脚本字节码进行按位异或操作,得到所述脚本字节码对应的密文内容;
根据所述密文内容得到所述热更新内容。
10.根据权利要求9所述的应用程序热更新的方法,其特征在于,所述得到所述脚本字节码对应的密文内容之后,所述方法还包括:
对所述密文内容进行压缩。
11.根据权利要求9所述的应用程序热更新的方法,其特征在于,所述根据所述密文内容得到热更新内容,包括:
通过预设的编码算法将二进制格式的所述密文内容转换为文本格式的密文内容;
根据所述文本格式的密文内容得到热更新内容。
12.根据权利要求9所述的应用程序热更新的方法,其特征在于,所述根据所述密文内容得到热更新内容,包括:
获取签名私钥;
通过所述签名私钥对所述密文内容进行签名,得到针对所述密文内容的签名内容;
根据所述密文内容和所述签名内容得到所述热更新内容。
13.根据权利要求12所述的应用程序热更新的方法,其特征在于,所述根据所述密文内容和所述签名内容得到所述热更新内容之前,所述方法还包括:
通过预设的编码算法将二进制格式的签名内容转化为文本格式的签名内容。
14.一种应用程序热更新的装置,其特征在于,包括:
响应模块,用于响应于应用程序的启动操作,开启所述应用程序;
获取模块,用于启动所述应用程序的引擎,访问服务器并获取所述服务器针对所述应用程序发布的热更新内容,其中,所述热更新内容包含针对更新的脚本代码编译得到的脚本字节码;
热更新模块,用于利用脚本解释器解释并执行所述热更新内容。
15.一种应用程序热更新的装置,其特征在于,包括:
编译模块,用于获取用于更新的脚本代码,利用脚本解释器编译所述脚本代码,生成对应的脚本字节码,并根据所述脚本字节码得到热更新内容;
发布模块,用于发布所述热更新内容,以供客户端访问。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-13任一项所述的方法。
17.一种电子设备,其特征在于,包括:
处理器;
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-13任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010265831.7A CN111488169A (zh) | 2020-04-07 | 2020-04-07 | 应用程序热更新的方法及装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010265831.7A CN111488169A (zh) | 2020-04-07 | 2020-04-07 | 应用程序热更新的方法及装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111488169A true CN111488169A (zh) | 2020-08-04 |
Family
ID=71794706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010265831.7A Pending CN111488169A (zh) | 2020-04-07 | 2020-04-07 | 应用程序热更新的方法及装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111488169A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113467803A (zh) * | 2021-06-28 | 2021-10-01 | 广州虎牙科技有限公司 | 应用程序的修复方法以及相关装置、设备 |
CN114115964A (zh) * | 2022-01-24 | 2022-03-01 | 在线途游(北京)科技有限公司 | 一种用于Unity的热更新方法、装置、计算设备及计算机可读存储介质 |
CN116991452A (zh) * | 2023-07-26 | 2023-11-03 | 上海合芯数字科技有限公司 | 在OpenPower架构热更新OPAL功能固件代码的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9471299B1 (en) * | 2013-03-25 | 2016-10-18 | Amazon Technologies, Inc. | Updating code within an application |
CN109445832A (zh) * | 2018-10-09 | 2019-03-08 | 深圳点猫科技有限公司 | 基于编程语言对应用程序进行热更新的方法以及电子设备 |
CN109800005A (zh) * | 2018-12-06 | 2019-05-24 | 广州西山居世游网络科技有限公司 | 一种客户端热更新方法及装置 |
CN110278115A (zh) * | 2019-06-20 | 2019-09-24 | 京东方科技集团股份有限公司 | 热更新方法及装置 |
-
2020
- 2020-04-07 CN CN202010265831.7A patent/CN111488169A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9471299B1 (en) * | 2013-03-25 | 2016-10-18 | Amazon Technologies, Inc. | Updating code within an application |
CN109445832A (zh) * | 2018-10-09 | 2019-03-08 | 深圳点猫科技有限公司 | 基于编程语言对应用程序进行热更新的方法以及电子设备 |
CN109800005A (zh) * | 2018-12-06 | 2019-05-24 | 广州西山居世游网络科技有限公司 | 一种客户端热更新方法及装置 |
CN110278115A (zh) * | 2019-06-20 | 2019-09-24 | 京东方科技集团股份有限公司 | 热更新方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113467803A (zh) * | 2021-06-28 | 2021-10-01 | 广州虎牙科技有限公司 | 应用程序的修复方法以及相关装置、设备 |
CN113467803B (zh) * | 2021-06-28 | 2024-03-01 | 广州虎牙科技有限公司 | 应用程序的修复方法以及相关装置、设备 |
CN114115964A (zh) * | 2022-01-24 | 2022-03-01 | 在线途游(北京)科技有限公司 | 一种用于Unity的热更新方法、装置、计算设备及计算机可读存储介质 |
CN116991452A (zh) * | 2023-07-26 | 2023-11-03 | 上海合芯数字科技有限公司 | 在OpenPower架构热更新OPAL功能固件代码的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111488169A (zh) | 应用程序热更新的方法及装置、存储介质及电子设备 | |
CN112104709B (zh) | 智能合约的处理方法、装置、介质及电子设备 | |
CN112039826B (zh) | 应用于小程序端的登录方法和装置,电子设备,可读介质 | |
CN101883122B (zh) | 安全连接创建方法以及用于创建安全连接的客户端设备 | |
WO2023029447A1 (zh) | 模型保护方法、装置、设备、***以及存储介质 | |
US10970264B2 (en) | Supporting secure layer extensions for communication protocols | |
CN108564363B (zh) | 一种交易处理方法、服务器、客户端及*** | |
CN111200593A (zh) | 应用登录方法、装置和电子设备 | |
CN111199037A (zh) | 登录方法、***和装置 | |
JP2022541929A (ja) | スマートコントラクトを発行するための方法及び装置 | |
CN111144878B (zh) | 指令生成方法与指令生成装置 | |
CN114675962A (zh) | 对弹性云计算环境的证明支持 | |
CN110928571A (zh) | 业务程序开发方法和装置 | |
CN110535631A (zh) | 边缘计算节点数据传输的方法、***、设备及存储介质 | |
Kochnev et al. | Surviving Java for mobiles | |
CN112416395A (zh) | 一种热修复更新方法和装置 | |
US20210028947A1 (en) | Identity verification | |
CN112394907A (zh) | 基于容器的交付***构建方法、应用交付方法和交付*** | |
CN113515747B (zh) | 设备升级方法、装置、设备及存储介质 | |
CN111598544A (zh) | 用于处理信息的方法和装置 | |
CN109462604A (zh) | 一种数据传输方法、装置、设备及存储介质 | |
WO2023159900A1 (zh) | 远程开发的方法及装置 | |
CN111506503B (zh) | 基于JMeter的接口签名验证方法及装置、计算设备、存储介质 | |
US11902453B2 (en) | Method, system and apparatus for delayed production code signing for heterogeneous artifacts | |
CN111562916B (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 |