CN109918113A - Ios应用热修复/热更新方法、服务器及存储介质 - Google Patents
Ios应用热修复/热更新方法、服务器及存储介质 Download PDFInfo
- Publication number
- CN109918113A CN109918113A CN201910045126.3A CN201910045126A CN109918113A CN 109918113 A CN109918113 A CN 109918113A CN 201910045126 A CN201910045126 A CN 201910045126A CN 109918113 A CN109918113 A CN 109918113A
- Authority
- CN
- China
- Prior art keywords
- hot
- application end
- hot repair
- repair
- difference
- 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
- 230000008439 repair process Effects 0.000 title claims abstract description 277
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000003860 storage Methods 0.000 title claims abstract description 23
- 230000006835 compression Effects 0.000 claims description 16
- 238000007906 compression Methods 0.000 claims description 16
- 238000004891 communication Methods 0.000 claims description 11
- 230000006399 behavior Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 10
- 230000008929 regeneration Effects 0.000 claims description 10
- 238000011069 regeneration method Methods 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 abstract description 4
- 239000002699 waste material Substances 0.000 abstract description 3
- 230000006837 decompression Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 206010021703 Indifference Diseases 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000013021 overheating Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明应用于IOS软件中的数据处理领域,具体公开了一种IOS应用热修复/热更新方法,服务器以及存储介质,方法包括步骤:获取应用端发送的热修复/热更新请求,所述请求包括所述应用端对应的热修复/热更新版本号;根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,通过差分包生成工具BSDiff生成所述应用端对应的差分包;将所述差分包反馈给所述应用端,以供所述应用端通过解压所述差分包得到热修复/热更新脚本对应实现热修复/热更新。从而生成了每个用户应用端对应的个性化差分包,以供用户应用端根据反馈的差分包进行增量化热修复或热更新,解决了造成了流量浪费的问题。
Description
技术领域
本发明涉及IOS应用领域,尤其涉及一种IOS应用热修复/热更新方法、服务器及计算机可读存储介质。
背景技术
热修复又称为patch,指能够修复软件漏洞的一些代码,是一种快速、低成本修复产品软件版本缺陷的方式,热更新也类似。在用户启动应用端时,应用端会自动下载脚本实现热修复/热更新。目前在实现IOS应用热修复/热更新的过程中,服务器基于JSPatch或React Native向应用端下发热修复/热更新包时需要使用相应框架将修复脚本托管在第三方服务平台,该修复脚本对于同一应用端的不同版本是统一的,全量无差别化的。因此对于不同用户使用不同版本的应用端时,热修复/热更新脚本的大小没有差别,间接造成了流量的浪费。
发明内容
本发明的主要目的在于提供一种IOS应用热修复/热更新方法、服务器及计算机可读存储介质,旨在解决目前IOS系统热修复/热更新时脚本的大小无差别,造成了流量浪费的问题。
为实现上述目的,本发明提供一种IOS应用热修复/热更新方法,所述方法包括步骤:
获取应用端发送的热修复/热更新请求,所述请求包括所述应用端对应的热修复/热更新版本号;
根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,通过差分包生成工具BSDiff生成所述应用端对应的差分包;
将所述差分包反馈给所述应用端,以供所述应用端通过解压所述差分包得到热修复/热更新脚本对应实现热修复/热更新。
可选地,所述获取应用端发送的热修复/热更新请求的步骤之后,还包括:
根据所述应用端对应的热修复/热更新版本号,确定所述应用端是否存在对应的历史热修复/热更新行为;
当所述应用端存在对应的历史热修复/热更新行为时,执行步骤根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,通过差分包生成工具BSDiff生成所述应用端对应的差分包;
当所述应用端不存在对应的历史热修复/热更新行为时,获取所述应用端对应的最新热修复/热更新包,并将所述应用端对应的最新热修复/热更新包反馈给所述应用端,以供所述应用端通过解压所述最新热修复/热更新包得到热修复/热更新脚本对应实现热修复/热更新。
可选地,所述根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,通过差分包生成工具BSDiff生成所述应用端对应的差分包的步骤包括:
根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,按照第一差分策略和第二差分策略通过差分包生成工具BSDiff分别生成所述应用端对应的第一差分包和第二差分包;
获取采用第一差分策略生成第一差分包时以及采用第二差分策略生成第二差分包时对应的压缩率,并从第一差分包和第二差分包中选择压缩率高的差分包作为所述应用端对应的差分包。
可选地,所述根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,按照第一差分策略通过差分包生成工具BSDiff生成所述应用端对应的第一差分包的步骤包括:
根据第一差分策略和所述应用端对应的热修复/热更新版本号,获取所述应用端对应的最新历史热修复/热更新包;
根据所述第一差分策略和预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,获取所述应用端对应的最新热修复/热更新包;
通过差分包生成工具BSDiff对所述应用端对应的最新历史热修复/热更新包以及对应的最新热修复/热更新包进行差分,得到所述应用端对应的第一差分包。
可选地,所述根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,按照第二差分策略通过差分包生成工具BSDiff生成所述应用端对应的第二差分包的步骤包括:
根据第二差分策略和所述应用端对应的热修复/热更新版本号,获取所述应用端对应的最新历史热修复/热更新脚本;
根据所述第二差分策略和预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,获取所述应用端对应的最新热修复/热更新脚本;
按照脚本目录预设层级,通过差分包生成工具BSDiff对所述应用端对应的最新历史热修复/热更新脚本以及对应的最新热修复/热更新脚本分层级进行差分,得到所述应用端对应的热修复/热更新脚本,并将所述应用端对应的热修复/热更新脚本打包,以生成所述应用端对应的第二差分包。
可选地,所述通过差分包生成工具BSDiff生成所述应用端对应的差分包的步骤之后,还包括:
判断所述差分包中是否包含预发布脚本;
当所述差分包中不包含预发布脚本时,执行步骤将所述差分包反馈给所述应用端;
当所述差分包中包含预发布脚本时,判断所述请求中是否包括预发布特定字段;
当所述请求中包括预发布特定字段时,执行步骤将所述差分包反馈给所述应用端。
可选地,所述请求还包括所述应用端的唯一标识符以及应用版本号;
所述根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,通过差分包生成工具BSDiff生成所述应用端对应的差分包的步骤之前还包括:
将所述应用端的唯一标识符以及应用版本号作为关键词,从预设存储器中查找所述关键词对应的最新热修复/热更新版本号;
将查找到的最新热修复/热更新版本号作为所述应用端对应的最新热修复/热更新版本号。
为实现上述目的,本发明还提供一种服务器,所述服务器包括:
获取模块,用于获取应用端发送的热修复/热更新请求,所述请求包括所述应用端对应的热修复/热更新版本号;
差分模块,用于根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,通过差分包生成工具BSDiff生成所述应用端对应的差分包;
反馈模块,用于将所述差分包反馈给所述应用端,以供所述应用端通过解压所述差分包得到热修复/热更新脚本对应实现热修复/热更新。
为实现上述目的,本发明还提供一种服务器,所述服务器包括:通信模块、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的IOS应用热修复/热更新方法的步骤。
为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的IOS应用热修复/热更新方法的步骤。
本发明通过获取应用端发送的热修复/热更新请求,所述请求包括所述应用端对应的热修复/热更新版本号;根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的应用端对应的最新热修复/热更新版本号,通过差分包生成工具BSDiff生成所述应用端对应的差分包;将所述差分包反馈给所述应用端,以供所述应用端通过解压所述差分包得到热修复/热更新脚本对应实现热修复/热更新。从而根据每个用户使用的应用端的热修复/热更新版本的不同生成个性化的增量热修复/热更新包,以供应用端下载服务器反馈的热修复/热更新包后,通过类似JSPatch或React Native的框架对应加载热修复/热更新脚本实现热更新或热修复,节约了流量。
附图说明
图1是本发明实施例方案涉及的服务器的结构示意图;
图2为本发明IOS应用热修复/热更新方法第一实施例的流程示意图;
图3为本发明服务器一功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参看图1,图1为本发明所提供的服务器的硬件结构示意图。所述服务器包括通信模块10、存储器20以及处理器30等部件。在所述服务器中,所述处理器30分别与所述存储器20以及所述通信模块10连接,所述存储器20上存储有计算机程序,所述计算机程序同时被处理器30执行。
通信模块10,可通过网络与外部通讯设备连接。通信模块10可以接收外部通讯设备发出的请求,还可以发送请求、指令及信息至所述外部通讯设备。所述外部通讯设备可以是用户终端和/或其他服务器。其中,外部通讯设备是用户终端时,所述用户终端可以为基于IOS系统(苹果移动设备操作系统)的终端,例如手机。该IOS终端上安装有应用程序,可以称为应用端,每当用户打开用户终端中的应用程序时,基于终端的应用程序会主动发送热修复/热更新请求给服务器。
存储器20,可用于存储软件程序以及各种数据。存储器20可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如获取应用端发送的热更新/热修复请求)等;存储数据区可包括数据库,存储数据区可存储根据服务器的使用所创建的数据或信息等。此外,存储器20可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器30,是服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器20内的软件程序和/或模块,以及调用存储在存储器20内的数据,执行服务器的各种功能和处理数据,从而对服务器进行整体监控。处理器30可包括一个或多个处理单元;可选地,处理器30可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器30中。
尽管图1未示出,但上述服务器还可以包括电路控制模块,用于与电源连接,保证其他部件的正常工作。上述服务器还可以包括显示模块,用于提取存储器20中的数据,并显示出服务器的前端显示界面以及不同策略生成的对应差分包的压缩率。本领域技术人员可以理解,图1中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
基于上述硬件结构,提出本发明方法各个实施例。
参见图2,在本发明IOS应用热修复/热更新方法的第一实施例中,包括:
步骤S10,获取应用端发送的热修复/热更新请求,所述请求包括所述应用端对应的热修复/热更新版本号;
需要说明的是,本方案中IOS应用进行热修复/热更新是基于JSPatch或ReactNative,其中JSPatch是一个IOS动态更新框架,只需在项目中引入极小的引擎,就可以使用JavaScript调用任何Objective-C原生接口,获得脚本语言的优势,为应用端动态添加模块,或替换项目原生代码动态修复问题。而React Native是一款跨平台的开源移动应用开发框架,也是使用JavaScript语言。
当用户打开终端的应用端时,应用端即会向服务器发送热更新和/或热修复请求。其中请求中的热修复/热更新版本号是服务器向同一应用程序下发热修复或热更新脚本时同步返回给应用端的当前热修复或热更新的版本号。热修复/热更新版本号会随着迭代次数的增加也同步进行增加。对于热修复/热更新版本号的变化可以根据不同应用和/或不同企业开发人员设定的规则进行具体设置,但每个应用程序的不同版本均有各自不同的热修复/热更新版本号。例如,对于原始的应用版本,用户从未打开过或者之前从未进行过热修复/热更新,则对应的热修复/热更新版本可以仅是基础热修复/热更新版本号。
上述热修复/热更新请求中还可以包括应用端的唯一标识符和应用版本号,其中唯一标识符可以用于区分不同应用,应用版本号则类似于热修复/热更新版本号是应用程序全版本迭代时记录的当前的程序版本。可以理解地是,对于具有统一唯一标识符的应用端可以具有多个不同的应用版本号,进一步地,在进行热修复/热更新时,由于是较小的修复/或更新,所以可以针对某个特定版本的应用端进行热修复/热更新,当然在对于所有版本的应用端都需要进行的热修复/热更新时,也可以参照执行。
步骤S20,根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,通过差分包生成工具BSDiff生成所述应用端对应的差分包;
在步骤S10和步骤S20之间还可以包括步骤:
将所述应用端的唯一标识符以及应用版本号作为关键词,从预设存储器中查找所述关键词对应的最新热修复/热更新版本号;将查找到的最新热修复/热更新版本号作为所述应用端对应的最新热修复/热更新版本号。
由于同一应用存在不同的版本以及版本号,本身在热修复或热更新过程中就可能会出现一部分版本应用需要进行热修复或热更新,另一部分版本的应用不需要进行热修复或热更新,因此服务器可以通过应用端对应的唯一标识符和版本号确定应用端的最新热修复/热更新版本号,也可以与应用端的热修复/热更新版本号比较进一步确定应用端是否需要进行热修复/热更新。
在已知用户当前的应用端最新的热修复/热更新版本号以及服务器中当前应用的版本最新对应需要进行热修复或热更新的版本号,即可针对两个版本的脚本进行差分,以根据用户的应用程序的唯一标识符、应用程序的版本以及热修复/热更新的版本从而个性化增量化地生成热修复/热更新所需的差分包。
步骤S30,将所述差分包反馈给所述应用端,以供所述应用端通过解压所述差分包得到热修复/热更新脚本对应实现热修复/热更新。
服务器返回差分包给应用端的方法可以直接将差分包发送给应用端,也可以生成应用端对应的下载地址,将下载地址返给应用端。进一步地,在服务器返回下载地址给应用端的时候,应用端的SDK(Software Development Kit,软件开发工具包)探测到有脚本需要更新,会自动创建解压目录,通过下载地址下载差分包,然后解压差分包得到热修复/热更新脚本,最后使用JSPatch或React Native加载得到完整的热修复或热更新脚本,实现热修复/热更新,从而对应完成问题的修复或较小功能的新增。
进一步地,服务器在返回下载地址给应用端时,还可以同时返回差分包的MD5校验值给应用端,应用端根据服务器生成MD5校验值时相同的算法计算校验值,当应用端检验到计算出的校验值与服务器返回的校验值一致时,确定从下载地址下载的差分包文件未被篡改,从而保证了在框架层面应用端使用脚本的安全性。可选地,在服务器生成了差分包对应的MD5校验值后,还可以通过RSA加密算法进行非对称加密,保证差分包传输的安全性。
本实施例通过获取应用端发送的热修复/热更新请求,所述请求包括所述应用端对应的热修复/热更新版本号;根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,通过差分包生成工具BSDiff生成所述应用端对应的差分包;将所述差分包反馈给所述应用端,以供所述应用端通过解压所述差分包得到热修复/热更新脚本对应实现热修复/热更新。从而根据每个用户使用的应用端的热修复/热更新版本的不同生成个性化的增量热修复/热更新包,以供应用端下载解压热修复/热更新包后,最终通过类似JSPatch或React Native的框架对应实现热更新或热修复,相比现有技术节约了传输流量。
进一步地,基于本发明IOS应用热修复/热更新方法的第一实施例提出本发明IOS应用热修复/热更新方法的第二实施例,在本实施例中,所述步骤S10之后,还包括:
步骤S40,根据所述应用端对应的热修复/热更新版本号,确定所述应用端是否存在对应的历史热修复/热更新行为;若是,则执行步骤S20;若否,则执行步骤S50;
本实施例主要用于通过应用端对应的热修复/热更新版本号确定用户对应的应用端是否经过热修复/热更新,相应地如果经过过热修复或热更新,即表示应用端存在历史热修复/热更新行为,进一步地,在服务器中应当存储有对应的应用端历史热修复/热更新记录。可以是当应用端对应的热修复/热更新版本号不是基础版本号时,例如下载时应用的默认热修复/热更新版本号为1.0.0,当请求中应用端的热修复/热更新版本号不是1.0.0,则应用端经过过热修复/热更新。
步骤S50,获取所述应用端对应的最新热修复/热更新包,并将所述应用端对应的最新热修复/热更新包反馈给所述应用端,以供所述应用端通过解压所述最新热修复/热更新包得到热修复/热更新脚本对应实现热修复/热更新。
需要说明的是,在开发人员确定应用端需要进行应用端的热修复或热更新时,是根据全量更新生成的修复或更新脚本。如果此前应用端未进行过热修复/热更新,则应用端此次热修复/热更新时对应需要进行全量更新,可以直接由服务器返回该应用端对应的应用版本的全量修复或更新包即可。通过在下发修复/更新包前灵活确定应用端是否经过热修复/热更新,并在用户未经过热更新/热修复时,直接返回全量包给应用端,节约了生成差分包的时间,策略灵活,充分考虑到了不同用户不同版本的应用端的使用情况。
进一步地,基于本发明IOS应用热修复/热更新方法的第一实施例或第二实施例提出本发明IOS应用热修复/热更新方法的第三实施例,在本实施例中,所述步骤S20包括:
步骤S21,根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,按照第一差分策略和第二差分策略通过差分包生成工具BSDiff分别生成所述应用端对应的第一差分包和第二差分包;
在本方案中第一差分策略和第二差分策略即是差分包的不同生成方法,其中第一差分策略为对最新热修复/热更新脚本的压缩包与历史最新压缩包(即当前用户端历史最新热修复/热更新脚本对应的压缩包)做差分,以生成不同的差分包;第二差分策略为按照热修复/热更新脚本目录的层级深度进行差分。例如,第二差分策略中层级深度的预设值为3。
需要说明的是,服务器也可以直接默认设置某一种差分策略,也可以考虑脚本的层级,当需要热修复/热更新本身的层级深度较浅达不到预设层级深度,直接通过压缩包进行差分。
可选地,通过第一差分策略生成第一差分包的过程可以为以下步骤:
根据第一差分策略和所述应用端对应的热修复/热更新版本号,获取所述应用端对应的最新历史热修复/热更新包;根据所述第一差分策略和预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,获取所述应用端对应的最新热修复/热更新包;通过差分包生成工具BSDiff对所述应用端对应的最新历史热修复/热更新包以及对应的最新热修复/热更新包进行差分,得到所述应用端对应的第一差分包。
通过第二差分策略生成第二差分包的过程可以为以下步骤:
根据第二差分策略和所述应用端对应的热修复/热更新版本号,获取所述应用端对应的最新历史热修复/热更新脚本;根据所述第二差分策略和预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,获取所述应用端对应的最新热修复/热更新脚本;按照脚本目录预设层级,通过差分包生成工具BSDiff对所述应用端对应的最新历史热修复/热更新脚本以及对应的最新热修复/热更新脚本分层级进行差分,得到所述应用端对应的热修复/热更新脚本,并将所述应用端对应的热修复/热更新脚本打包,以生成所述应用端对应的第二差分包。
步骤S22,获取采用第一差分策略生成第一差分包时以及采用第二差分策略生成第二差分包时对应的压缩率,并从第一差分包和第二差分包中选择压缩率高的差分包作为所述应用端对应的差分包。
可以理解地是,不管是应用端的热更新,还是热修复,始终只需要返回一个差分包,因此在进行差分包的选择时,可以根据不同差分策略生成对应的差分包的压缩率,选择压缩率高的差分包作为反馈给应用端的差分包。压缩率高的差分包对应压缩后的内存小,在反馈给应用端时传输流量小,本方案依照不同情况下压缩率进行差分包的选择,帮助进一步考虑到了应用端传输差分包时包的大小,提高了脚本的压缩率,节约了差分包传输的流量。
进一步地,当存在新的差分包生成方法时,也可以以此形成新的差分策略,最终通过比对相同情况下压缩率的大小选择返回给应用端的脚本差分包。
需要说明地是,当服务器依照压缩率的不同选择差分包反馈给应用端,相对在应用端的SDK探测到有脚本需要修复或更新时,会获得服务器生成差分包的策略信息,将差分包解压后,再根据生成差分包的不同策略对应反向合并出完整的热修复/热更新脚本,以使用框架加载合并出完整的脚本。
进一步地,在其他实施例中,还可以为热修复/热更新设置专用的预发布模式,即用于开发人员测试热修复/热更新的模式。实际运用时开发人员可以通过调试测试终端中的应用端,使得打开应用端时,应用端发送给服务器的热修复/热更新请求的请求头中包含某些特定字段,例如在请求头中增加app-g=true字段。服务器在形成差分包后,可以先判断差分包中会否包含预发布脚本,当不包含预发布脚本时,直接正常将生成的差分包返回给应用端;当包含预发布脚本时,表示差分包中包含测试用的脚本内容,需要发送请求的用户端具有预发布测试权限,因此可以判断用户端发送的请求中是否包含特定字段,当不包含时,对于包含测试阶段的脚本的差分包将不会反馈给用户端;仅当包含特定字段才会将包含测试用脚本内容的差分包反馈给用户端。对于全量包的预发布也可以参照上述方式实现,在此不进行赘述。通过结合设置特殊字段以及确认是否存在预发布脚本的方式,实现了热修复/热更新的测试,同时也不影响其他用户端的热修复/热更新,灵活方便,保证了服务器多线程的正常操作。
进一步地,在其他实施例中,当服务器发现热修复/热更新脚本存在问题时,可以向应用端的答复(Response)中增加disable_hotfix控制字段,使脚本不再被应用端下载,即执行回滚操作。对于已经下载有脚本的应用端,可以当应用端下次启用时,通过答复Response中增加disable_hotfix控制字段限制应用端不再加载脚本,从而保证了应用端的正常运行,也及时停用了脚本弥补了问题。
还需要说明的是,上述IOS应用热修复或热更新的原理相同,仅是目的和脚本的内容存在区别,对于应用端和服务器来说可以同时进行热更新和热修复,也可以单独进行,两者互不影响。
本发明还提出一种服务器,参见图3,所述服务器包括:
获取模块10,用于获取应用端发送的热修复/热更新请求,所述请求包括所述应用端对应的热修复/热更新版本号;
差分模块20,用于根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,通过差分包生成工具BSDiff生成所述应用端对应的差分包;
反馈模块30,用于将所述差分包反馈给所述应用端,以供所述应用端通过解压所述差分包得到热修复/热更新脚本对应实现热修复/热更新。
进一步地,在另一实施例中,所述服务器还包括:
确定模块,用于根据所述应用端对应的热修复/热更新版本号,确定所述应用端是否存在对应的历史热修复/热更新行为;并当所述应用端存在对应的历史热修复/热更新行为时,触发所述差分模块执行根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,通过差分包生成工具BSDiff生成所述应用端对应的差分包的步骤;当所述应用端不存在对应的历史热修复/热更新行为时,触发获取模块执行获取所述应用端对应的最新热修复/热更新包,并将所述应用端对应的最新热修复/热更新包反馈给所述应用端,以供所述应用端通过解压所述最新热修复/热更新包得到热修复/热更新脚本对应实现热修复/热更新的步骤。
进一步地,在又一实施例中,所述差分模块包括:
差分单元,用于根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,按照第一差分策略和第二差分策略通过差分包生成工具BSDiff分别生成所述应用端对应的第一差分包和第二差分包;
选择单元,用于获取采用第一差分策略生成第一差分包时以及采用第二差分策略生成第二差分包时对应的压缩率,并从第一差分包和第二差分包中选择压缩率高的差分包作为所述应用端对应的差分包。
进一步地,在又一实施例中,所述差分单元包括:
第一获取子单元,用于根据第一差分策略和所述应用端对应的热修复/热更新版本号,获取所述应用端对应的最新历史热修复/热更新包;
所述第一获取子单元,还用于根据所述第一差分策略和预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,获取所述应用端对应的最新热修复/热更新包;
差分子单元,用于通过差分包生成工具BSDiff对所述应用端对应的最新历史热修复/热更新包以及对应的最新热修复/热更新包进行差分,得到所述应用端对应的第一差分包。
进一步地,在又一实施例中,所述差分单元包括:
第二获取子单元,用于根据第二差分策略和所述应用端对应的热修复/热更新版本号,获取所述应用端对应的最新历史热修复/热更新脚本;
所述第二获取子单元,还用于根据所述第二差分策略和预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,获取所述应用端对应的最新热修复/热更新脚本;
差分单元,用于按照脚本目录预设层级,通过差分包生成工具BSDiff对所述应用端对应的最新历史热修复/热更新脚本以及对应的最新热修复/热更新脚本分层级进行差分,得到所述应用端对应的热修复/热更新脚本,并将所述应用端对应的热修复/热更新脚本打包,以生成所述应用端对应的第二差分包。
进一步地,在又一实施例中,所述服务器还包括:
判断模块,用于判断所述差分包中是否包含预发布脚本;并当所述差分包中不包含预发布脚本时,触发所述反馈模块执行将所述差分包反馈给所述应用端的步骤;
所述判断模块,还用于当所述差分包中包含预发布脚本时,判断所述请求中是否包括预发布特定字段;并当所述请求中包括预发布特定字段时,触发所述反馈模块执行将所述差分包反馈给所述应用端的步骤。
进一步地,在又一实施例中,所述请求还包括所述应用端的唯一标识符以及应用版本号;
所述服务器还包括:
查找模块,用于将所述应用端的唯一标识符以及应用版本号作为关键词,从预设存储器中查找所述关键词对应的最新热修复/热更新版本号;
设置模块,用于将查找到的最新热修复/热更新版本号作为所述应用端对应的最新热修复/热更新版本号。
本发明还提出一种计算机可读存储介质,其上存储有计算机程序。所述计算机可读存储介质可以是图1的服务器中的存储器20,也可以是如ROM(Read-Only Memory,只读存储器)/RAM(Random Access Memory,随机存取存储器)、磁碟、光盘中的至少一种,所述计算机可读存储介质包括若干指令用以使得一台具有处理器的终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者服务端不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者服务端所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者服务端中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种IOS应用热修复/热更新方法,其特征在于,包括步骤:
获取应用端发送的热修复/热更新请求,所述请求包括所述应用端对应的热修复/热更新版本号;
根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,通过差分包生成工具BSDiff生成所述应用端对应的差分包;
将所述差分包反馈给所述应用端,以供所述应用端通过解压所述差分包得到热修复/热更新脚本对应实现热修复/热更新。
2.根据权利要求1所述的IOS应用热修复/热更新方法,其特征在于,所述获取应用端发送的热修复/热更新请求的步骤之后,还包括:
根据所述应用端对应的热修复/热更新版本号,确定所述应用端是否存在对应的历史热修复/热更新行为;
当所述应用端存在对应的历史热修复/热更新行为时,执行步骤根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,通过差分包生成工具BSDiff生成所述应用端对应的差分包;
当所述应用端不存在对应的历史热修复/热更新行为时,获取所述应用端对应的最新热修复/热更新包,并将所述应用端对应的最新热修复/热更新包反馈给所述应用端,以供所述应用端通过解压所述最新热修复/热更新包得到热修复/热更新脚本对应实现热修复/热更新。
3.根据权利要求2所述的IOS应用热修复/热更新方法,其特征在于,所述根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,通过差分包生成工具BSDiff生成所述应用端对应的差分包的步骤包括:
根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,按照第一差分策略和第二差分策略通过差分包生成工具BSDiff分别生成所述应用端对应的第一差分包和第二差分包;
获取采用第一差分策略生成第一差分包时以及采用第二差分策略生成第二差分包时对应的压缩率,并从第一差分包和第二差分包中选择压缩率高的差分包作为所述应用端对应的差分包。
4.根据权利要求3所述的IOS应用热修复/热更新方法,其特征在于,所述根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,按照第一差分策略通过差分包生成工具BSDiff生成所述应用端对应的第一差分包的步骤包括:
根据第一差分策略和所述应用端对应的热修复/热更新版本号,获取所述应用端对应的最新历史热修复/热更新包;
根据所述第一差分策略和预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,获取所述应用端对应的最新热修复/热更新包;
通过差分包生成工具BSDiff对所述应用端对应的最新历史热修复/热更新包以及对应的最新热修复/热更新包进行差分,得到所述应用端对应的第一差分包。
5.根据权利要求3所述的IOS应用热修复/热更新方法,其特征在于,所述根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,按照第二差分策略通过差分包生成工具BSDiff生成所述应用端对应的第二差分包的步骤包括:
根据第二差分策略和所述应用端对应的热修复/热更新版本号,获取所述应用端对应的最新历史热修复/热更新脚本;
根据所述第二差分策略和预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,获取所述应用端对应的最新热修复/热更新脚本;
按照脚本目录预设层级,通过差分包生成工具BSDiff对所述应用端对应的最新历史热修复/热更新脚本以及对应的最新热修复/热更新脚本分层级进行差分,得到所述应用端对应的热修复/热更新脚本,并将所述应用端对应的热修复/热更新脚本打包,以生成所述应用端对应的第二差分包。
6.根据权利要求1所述的IOS应用热修复/热更新方法,其特征在于,所述通过差分包生成工具BSDiff生成所述应用端对应的差分包的步骤之后,还包括:
判断所述差分包中是否包含预发布脚本;
当所述差分包中不包含预发布脚本时,执行步骤将所述差分包反馈给所述应用端;
当所述差分包中包含预发布脚本时,判断所述请求中是否包括预发布特定字段;
当所述请求中包括预发布特定字段时,执行步骤将所述差分包反馈给所述应用端。
7.根据权利要求1-6任一项所述的IOS应用热修复/热更新方法,其特征在于,所述请求还包括所述应用端的唯一标识符以及应用版本号;
所述根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,通过差分包生成工具BSDiff生成所述应用端对应的差分包的步骤之前还包括:
将所述应用端的唯一标识符以及应用版本号作为关键词,从预设存储器中查找所述关键词对应的最新热修复/热更新版本号;
将查找到的最新热修复/热更新版本号作为所述应用端对应的最新热修复/热更新版本号。
8.一种服务器,其特征在于,所述服务器包括:
获取模块,用于获取应用端发送的热修复/热更新请求,所述请求包括所述应用端对应的热修复/热更新版本号;
差分模块,用于根据所述应用端对应的热修复/热更新版本号与预设存储器中存储的所述应用端对应的最新热修复/热更新版本号,通过差分包生成工具BSDiff生成所述应用端对应的差分包;
反馈模块,用于将所述差分包反馈给所述应用端,以供所述应用端通过解压所述差分包得到热修复/热更新脚本对应实现热修复/热更新。
9.一种服务器,其特征在于,所述服务器包括:通信模块、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7任一项所述的IOS应用热修复/热更新方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的IOS应用热修复/热更新方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910045126.3A CN109918113A (zh) | 2019-01-17 | 2019-01-17 | Ios应用热修复/热更新方法、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910045126.3A CN109918113A (zh) | 2019-01-17 | 2019-01-17 | Ios应用热修复/热更新方法、服务器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109918113A true CN109918113A (zh) | 2019-06-21 |
Family
ID=66960316
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910045126.3A Pending CN109918113A (zh) | 2019-01-17 | 2019-01-17 | Ios应用热修复/热更新方法、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109918113A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110262825A (zh) * | 2019-06-24 | 2019-09-20 | 北京字节跳动网络技术有限公司 | 热更新方法、装置、电子设备及可读存储介质 |
CN111522615A (zh) * | 2020-04-23 | 2020-08-11 | 平安国际智慧城市科技股份有限公司 | 命令行界面的更新方法、装置、设备及存储介质 |
CN114115969A (zh) * | 2021-12-03 | 2022-03-01 | 上海汇付数据服务有限公司 | 一种基于React Native的热更新方法及系统 |
CN114900424A (zh) * | 2022-05-27 | 2022-08-12 | 网易(杭州)网络有限公司 | 数据热修复方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107844306A (zh) * | 2017-08-09 | 2018-03-27 | 平安壹钱包电子商务有限公司 | 应用程序的修复方法、装置、存储介质及终端 |
CN108733400A (zh) * | 2018-04-27 | 2018-11-02 | 新光互联投资管理有限公司 | 一种App增量热更新方法及服务系统 |
CN108762801A (zh) * | 2018-05-31 | 2018-11-06 | 康键信息技术(深圳)有限公司 | 软件修复包处理方法、装置、计算机设备和存储介质 |
CN109101254A (zh) * | 2018-07-20 | 2018-12-28 | 江苏满运软件科技有限公司 | 一种热修复方法及设备 |
-
2019
- 2019-01-17 CN CN201910045126.3A patent/CN109918113A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107844306A (zh) * | 2017-08-09 | 2018-03-27 | 平安壹钱包电子商务有限公司 | 应用程序的修复方法、装置、存储介质及终端 |
CN108733400A (zh) * | 2018-04-27 | 2018-11-02 | 新光互联投资管理有限公司 | 一种App增量热更新方法及服务系统 |
CN108762801A (zh) * | 2018-05-31 | 2018-11-06 | 康键信息技术(深圳)有限公司 | 软件修复包处理方法、装置、计算机设备和存储介质 |
CN109101254A (zh) * | 2018-07-20 | 2018-12-28 | 江苏满运软件科技有限公司 | 一种热修复方法及设备 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110262825A (zh) * | 2019-06-24 | 2019-09-20 | 北京字节跳动网络技术有限公司 | 热更新方法、装置、电子设备及可读存储介质 |
CN110262825B (zh) * | 2019-06-24 | 2023-12-05 | 北京字节跳动网络技术有限公司 | 热更新方法、装置、电子设备及可读存储介质 |
CN111522615A (zh) * | 2020-04-23 | 2020-08-11 | 平安国际智慧城市科技股份有限公司 | 命令行界面的更新方法、装置、设备及存储介质 |
CN111522615B (zh) * | 2020-04-23 | 2023-08-15 | 深圳赛安特技术服务有限公司 | 命令行界面的更新方法、装置、设备及存储介质 |
CN114115969A (zh) * | 2021-12-03 | 2022-03-01 | 上海汇付数据服务有限公司 | 一种基于React Native的热更新方法及系统 |
CN114900424A (zh) * | 2022-05-27 | 2022-08-12 | 网易(杭州)网络有限公司 | 数据热修复方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109918113A (zh) | Ios应用热修复/热更新方法、服务器及存储介质 | |
CN109491695A (zh) | 一种集成安卓应用的增量更新方法 | |
CN103019708B (zh) | 用于发布软件的系统 | |
CN104679534B (zh) | 系统应用安装包加载处理方法、装置及终端 | |
CN109308285A (zh) | 数据库脚本管理方法、装置、计算机设备及存储介质 | |
CN103064666A (zh) | 一种多渠道软件发布方法和系统 | |
CN107391107A (zh) | 一种应用程序的修复方法和装置 | |
CN106648787A (zh) | 一种资源更新的方法及终端 | |
CN102053853A (zh) | 一种网络游戏版本更新方法 | |
CN106055368A (zh) | 应用更新方法和装置 | |
CN108228810A (zh) | 表单联动配置方法和系统以及表单更新方法和系统 | |
CN105022936A (zh) | 一种类class文件加密解密方法和装置 | |
CN108614702B (zh) | 字节码优化方法及装置 | |
CN106201615A (zh) | 利用成功的问题解决的应用兼容性 | |
CN109032631A (zh) | 应用程序补丁包获取方法、装置、计算机设备及存储介质 | |
CN106919398A (zh) | 一种软件发布方法及装置 | |
CN108255708B (zh) | 测试环境中访问生产文件的方法、装置、存储介质及设备 | |
CN104346185A (zh) | 应用对象属性更新方法、装置及应用平台 | |
CN104765592A (zh) | 一种面向网页采集任务的插件管理方法及其装置 | |
CN110262848A (zh) | 在应用开发框架中加载应用程序实例的方法和装置 | |
CN111857860A (zh) | 一种安全加载插件的实现方法及系统 | |
CN111078279A (zh) | 字节码文件的处理方法、装置、设备及存储介质 | |
CN107784230A (zh) | 页面漏洞的修复方法及装置 | |
CN113342323A (zh) | 软件在线开发的方法及装置 | |
US8661305B2 (en) | Method and system for test vector generation |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190621 |