[发明专利]应用更新方法、装置、终端及存储介质有效
申请号: | 201910402212.5 | 申请日: | 2019-05-14 |
公开(公告)号: | CN112035153B | 公开(公告)日: | 2021-08-24 |
发明(设计)人: | 丁平 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F8/658 | 分类号: | G06F8/658;G06F8/71;G06F9/445;G06F8/41 |
代理公司: | 北京三高永信知识产权代理有限责任公司 11138 | 代理人: | 张所明 |
地址: | 518057 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 应用 更新 方法 装置 终端 存储 介质 | ||
本发明实施例公开了一种应用更新方法、装置、终端及存储介质,属于计算机领域。方法包括:在应用的运行过程中,获取应用待更新的补丁文件,补丁文件包括第一类文件和第二函数的函数名,第一类文件中包括第一函数,第二函数为调用第一函数的函数;在应用下一次启动时,将补丁文件插入到类加载器的类列表中应用的原有版本的类文件之前;通过类加载器对原有版本的类文件中第二类文件进行加载时,将第二函数的执行模式更新为解释执行,其中,第二类文件包括第二函数。只需将补丁文件插入到类加载器的类列表中,在确保应用更新成功的前提下,尽可能地减小系统资源以及内存的消耗,延长了终端的寿命。
技术领域
本发明涉及计算机技术领域,特别涉及一种应用更新方法、装置、终端及存储介质。
背景技术
ART(Android Runtime,安卓运行环境),是一种在Android(安卓)操作系统上的运行环境。在ART环境中采用了一种新的优化手段——内联(inlink),通过将函数(method)直接嵌入到调用点来消除函数调用开销。换句话说,内联就是将函数A合并到调用该函数A的函数B中。但是当BUG(漏洞)类的函数为函数A时,直接加载补丁文件的话,函数B在调用时,依然会调用函数B中的函数A,而不会调用到补丁文件中,因此,无法解决应用存在的BUG。
目前,为了解决上述问题,终端从服务器中获取到补丁文件之后,会将获取到的补丁文件与应用的当前版本文件合成全量文件,在应用运行时,加载该全量文件。
但是,在获取到全量文件之后,还要对全量文件进行预编译,而对全量文件进行预编译会使终端性能开销较大,占用的内存空间也较大,并且,加载全量文件也会占用终端较大的内存空间,会影响终端的正常使用。
发明内容
本发明实施例提供了一种应用更新方法、装置、终端及存储介质,解决了相关技术存在的应用更新时,占用系统资源和内存较多的问题。所述技术方案如下:
一方面,提供了一种应用更新方法,所述方法包括:
在应用的运行过程中,获取应用待更新的补丁文件,所述补丁文件包括第一类文件和第二函数的函数名,所述第一类文件中包括第一函数,所述第二函数为调用所述第一函数的函数;
在所述应用下一次启动时,将所述补丁文件插入到类加载器的类列表中所述应用的原有版本的类文件之前;
通过所述类加载器对所述原有版本的类文件中第二类文件进行加载时,将所述第二函数的执行模式更新为解释执行,其中,所述第二类文件包括所述第二函数。
在一种可能实现方式中,所述第一类文件包括更新版本与所述原有版本之间的差异类的文件、所述差异类的子类的文件、引用所述差异类的父类的文件和引用所述子类的父类的文件。
在一种可能实现方式中,所述通过所述类加载器对所述原有版本的类文件中第二类文件进行加载时,将所述第二函数的执行模式更新为解释执行,包括下述任一步骤:
基于所述函数名,确定所述第二类文件,加载所述第二类文件,在加载所述第二类文件中的所述第二函数时,将所述第二函数的执行模式更新为所述解释执行;
当类加载器加载类文件中的函数时,基于所述函数名,确定所述函数是否为所述第二函数,若所述函数为所述第二函数,则将所述第二函数的执行模式更新为所述解释执行。
在一种可能实现方式中,在执行所述将所述补丁文件插入到类加载器的类列表中所述应用的原有版本的类文件之前的步骤之前,所述方法还包括:
基于所述第一类文件的类名,将类加载列表中与所述类名相同的类文件移除,所述类加载列表用于存储已预先加载的第三类文件;
清空缓存,所述缓存用于存储所述第三类文件中第三函数的函数字段。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910402212.5/2.html,转载请声明来源钻瓜专利网。