一种实现补丁安全的热修复方法、移动终端及热修复系统与流程

文档序号:12863575阅读:1042来源:国知局
一种实现补丁安全的热修复方法、移动终端及热修复系统与流程

本发明涉及通信技术领域,特别是涉及一种实现补丁安全的热修复方法、移动终端及热修复系统。



背景技术:

android是由谷歌推出,基于linux的手机操作系统。主要适用于移动设备,如智能手机和平板电脑。android架构总共分为4层:linux内核层、系统运行层库、应用框架层(framework)、应用层。而作为移动应用来讲,主要是在应用层编码。由于整个系统架构限制,导致常规版本的更新,需要对整个移动应用整体更新(重新打包安装)。这样的方式对于整个项目管理而言,从修复开始到发布结束,周期太长。也不利于用户的体验,影响市场推广。

在android系统的移动设备上,使用了不同的cpu架构,如32位系统、64位系统、arm系统。这几种不同的cpu架构都可以运行android应用,但是复杂的运行环境必然导致修复功能的稳定性较差;补丁安全级别较低

因此有了热修复,这种远端直接推送给客户端的修复方式。目前市面上,有一些比较常见的热修复方案,例如阿里巴巴的开源框架andfix,微信的开源框架tinker等等。

如图1所示,以阿里巴巴的开源框架andfix为例,现有的热修复方法的基本实现方法:

(1)加载补丁文件,使用了虚拟机的jarfile加载的补丁文件,读取patch.mf文件得到补丁类名称。

(2)获取补丁方法,使用dexfile读取patch(修复)文件中的dex文件,获取后根据annotation(注解)获取补丁方法。

(3)获取bug方法,根据注解中获取到的类名和方法名,使用classloader获取class,然后根据反射得到bugmethod方法。

(4)jni层替换方法,使用c++中的指针替换bug方法对象的属性来修复bug。

但是,上述修复方法有明显的缺陷:不能替换资源文件,而且从实际使用的过程中发现,这个修复方案对于不同的机型,有着不一样的表现:不够稳定。



技术实现要素:

本发明的目的是提供一种实现补丁安全的热修复方法、移动终端及热修复系统,可对待修改的数据变量进行逻辑修复,提高修复的稳定性。

为实现上述目的,本发明提供了如下方案:

一种实现补丁安全的热修复方法,所述热修复方法包括:

向远程端发送下载补丁文件的网络请求,并接收来自远程端的网络请求响应;

根据所述网络请求响应判断所述远程端中是否有补丁文件;

如果有,则下载所述补丁文件,并对所述补丁文件进行数字签名加密,并保存在存储单元中;否则按照原程序逻辑继续运行;

在原程序执行代码时,调取所述补丁文件并进行签名验证,如果验证通过,则根据数据变量的键名来查找所述补丁文件的相应的代码,否则,重新发送网络请求;

根据所述补丁文件的相应的代码利用java层与爪哇脚本js交互,对待修改的数据变量进行逻辑修复,得到原程序的待输入参数;

按照原程序逻辑继续运行,得到期望结果。

可选的,所述存储单元为本地文件夹,所述待修改的数据变量以键值对的形式存储在本地文件夹中。

可选的,通过偏好设置存储所述待修改的数据变量。

可选的,所述网络请求基于https协议传输。

为实现上述目的,本发明还提供了如下方案:

一种实现补丁安全的热修复的移动终端,所述移动终端包括收发单元、判断单元、加密单元、验证单元、查找单元、修复单元、运行单元及存储单元,其中,

所述收发单元用于向远程端发送下载补丁文件的网络请求,并接收来自远程端的网络请求响应;

所述判断单元与所述收发单元连接,用于根据所述网络请求响应判断所述远程端中是否有补丁文件;

所述加密单元与所述判断单元连接,用于在所述判断单元的判断结果为所述远程端中有补丁文件,则下载所述补丁文件,并对所述补丁文件进行数字签名加密,并保存在存储单元中;

所述验证单元用于在原程序执行代码时,从所述存储单元中调取所述补丁文件并进行签名验证,

所述查找单元与所述验证单元连接,用于在验证通过,则根据数据变量的键名来查找所述补丁文件的相应的代码;

所述收发单元还与所述验证单元连接,用于在验证未通过时,重新发送网络请求;

所述修复单元与所述查找单元连接,用于根据所述补丁文件的相应的代码利用java层与js交互,对待修改的数据变量进行逻辑修复,得到原程序的待输入参数;

所述运行单元分别与所述判断单元和修复单元连接,用于在所述判断单元的判断结果为所述远程端中没有补丁文件,按照原程序逻辑继续运行;或者根据所述修复单元得到的原程序的待输入参数,按照原程序逻辑继续运行,得到期望结果。

可选的,所述存储单元为本地文件夹,所述待修改的数据变量以键值对的形式存储在本地文件夹中。

可选的,通过偏好设置存储所述待修改的数据变量。

可选的,所述网络请求基于https协议传输。

为实现上述目的,本发明还提供了如下方案:

一种实现补丁安全的热修复系统,所述热修复系统包括:

上述实现补丁安全的热修复的移动终端,以及远程端。

根据本发明提供的具体实施例,本发明公开了以下技术效果:

本发明利用js(javascript,爪哇脚本,是一种直译式脚本语言)和java层的交互,来实现热修复,提高修复的稳定性;并且在获取补丁文件的同时,进行数字签名加密及对应的验证,提高通过补丁修复的安全性,从而实现对修改的数据变量的准确修复。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为andfix的修复原理图。

图2为本发明实施例实现补丁安全的热修复方法的流程图;

图3为本发明实施例实现补丁安全的热修复的移动终端的模块结构示意图。

符号说明:

收发单元—1,判断单元—2,加密单元—3,验证单元—4,查找单元—5,修复单元—6,运行单元—7,存储单元—8。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的目的是提供一种实现补丁安全的热修复方法,利用js和java层的交互,来实现热修复,提高修复的稳定性;并且在获取补丁文件的同时,进行数字签名加密及对应的验证,提高通过补丁修复的安全性,从而实现对修改的数据变量的准确修复。

本发明所述的修复稳定性,是基于js的良好平台移植性。js依赖于浏览器本身,与操作环境无关,只要计算机能运行浏览器,并支持js的浏览器,就可正确执行。

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

如图2所示,本发明实现补丁安全的热修复方法包括:

步骤100:向远程端发送下载补丁文件的网络请求,并接收来自远程端的网络请求响应;

步骤110:根据所述网络请求响应判断所述远程端中是否有补丁文件;

步骤120:如果有,则下载所述补丁文件,并对所述补丁文件进行数字签名加密,并保存在存储单元中;否则执行步骤160;

步骤130:在原程序执行代码时,调取所述补丁文件并进行签名验证;

步骤140:如果验证通过,则根据数据变量的键名来查找所述补丁文件的相应的代码;否则,执行步骤100,重新发送网络请求;

步骤150:根据所述补丁文件的相应的代码利用java层与js交互,对待修改的数据变量进行逻辑修复,得到原程序的待输入参数;

步骤160:按照原程序逻辑继续运行,得到期望结果。

其中,所述存储单元为本地文件夹,所述待修改的数据变量以键值对的形式存储在本地文件夹中。进一步,通过偏好设置存储所述待修改的数据变量。

通过偏好设置中对应数据变量的键名,来寻找补丁文件的相应的代码,也就是说键名是一个标识和索引。在本发明中,所述网络请求基于https协议传输。此外,本发明还提供一种实现补丁安全的热修复的移动终端。如图3所示,本发明实现补丁安全的热修复的移动终端包括收发单元1、判断单元2、加密单元3、验证单元4、查找单元5、修复单元6、运行单元7及存储单元8。

其中,所述收发单元1用于向远程端发送下载补丁文件的网络请求,并接收来自远程端的网络请求响应;所述判断单元2与所述收发单元连接,用于根据所述网络请求响应判断所述远程端中是否有补丁文件;所述加密单元3与所述判断单元2连接,用于在所述判断单元2的判断结果为所述远程端中有补丁文件,则下载所述补丁文件,并对所述补丁文件进行数字签名加密,并保存在存储单元8中;所述验证单元4用于在原程序执行代码时,从所述存储单元8中调取所述补丁文件并进行签名验证;所述查找单元5与所述验证单元4连接,用于在验证通过,则根据数据变量的键名来查找所述补丁文件的相应的代码;所述收发单元1还与所述验证单元4连接,用于在验证未通过时,重新发送网络请求;所述修复单元6与所述查找单元4连接,用于根据所述补丁文件的相应的代码利用java层与js交互,对待修改的数据变量进行逻辑修复,得到原程序的待输入参数;所述运行单元7分别与所述判断单元2和修复单元6连接,用于在所述判断单元2的判断结果为所述远程端中没有补丁文件,按照原程序逻辑继续运行;或者根据所述修复单元6得到的原程序的待输入参数,按照原程序逻辑继续运行,得到期望结果。

其中,所述存储单元为本地文件夹,所述待修改的数据变量以键值对的形式存储在本地文件夹中,通过偏好设置存储所述待修改的数据变量。在本实施例中,所述网络请求基于https协议传输。

进一步地,本发明还提供一种实现补丁安全的热修复系统,所述热修复系统包括:上述实现补丁安全的热修复的移动终端,以及远程端。

相对于现有技术,本发明实现补丁安全的热修复系统、实现补丁安全的热修复的移动终端与上述实现补丁安全的热修复方法的有益效果相同在,在此不再赘述。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1