[发明专利]生成补丁包的方法、装置、设备及存储介质有效
申请号: | 201910541776.7 | 申请日: | 2019-06-21 |
公开(公告)号: | CN110297655B | 公开(公告)日: | 2023-06-06 |
发明(设计)人: | 张迪;尚会波 | 申请(专利权)人: | 百度在线网络技术(北京)有限公司 |
主分类号: | G06F8/658 | 分类号: | G06F8/658 |
代理公司: | 北京同立钧成知识产权代理有限公司 11205 | 代理人: | 朱颖;刘芳 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 生成 补丁包 方法 装置 设备 存储 介质 | ||
本申请提供一种生成补丁包的方法、装置、设备及存储介质。包括:在对原始安装包进行插桩时,将原始安装包中的非public类的权限转换为public,非public字段的权限转换为public,protected方法及package‑private方法的权限均转换为public。在生成待修复方法的补丁包过程中,当需要使用原始安装包中的目标方法和\或目标字段时,根据目标方法和\或目标字段的权限使用目标方法和\或目标字段,以生成补丁包。从而避免方法和\或字段无法被访问的问题,以生成有效的补丁包,进而可以解决热修复的问题。
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种生成补丁包的方法、装置、设备及存储介质。
背景技术
热修复补丁(patch),指能够修复软件漏洞的一些代码,是一种快速、低成本修复产品软件版本缺陷的方式。热修复技术具有如下优势:1、可快速修复,避免线上Bug带来的业务损失,把损失降到最低。2、保证客户端的更新率,无须用户进行版本升级安装。3、良好的用户体验,无感知修复异常。节省用户下载安装成本。
插桩方案是一种轻量的热修复技术,即在原始安装包的类中的每个方法中插入判断逻辑,当有补丁加载时,执行补丁中的逻辑,当无补丁时,执行原逻辑,以达到修复问题的目标。基于此,在生成补丁包时,需要对原始安装包和新的安装包中的同名类中的每个方法进行对比,当发现有方法发生修改时,在补丁包中生成该类的补丁类,包括:将所有发生修改的方法中的指令复制到该补丁类中。在终端设备加载了该补丁包之后,在执行到发生修改的方法时,发现有补丁类,会执行到补丁类中的方法,达到热修复的目的。
在复制修改的方法时,存在一个问题,即字段及方法的访问限制问题。复制的方法中,可能会调用到其它类中的方法和\或字段,如果该方法和\或字段的权限是非public的,即这类方法和\或字段无法被访问。基于此,生成的补丁包无效,这就给热修复带来一定的困难。
发明内容
本申请实施例提供一种生成补丁包的方法、装置、设备及存储介质。从而可以生成有效的补丁包,进而解决热修复问题。
第一方面,本申请提供一种生成补丁包的方法,包括:在对原始安装包进行插桩时,将原始安装包中的非public类的权限转换为public,非public字段的权限转换为public,protected方法及package-private方法的权限均转换为public。在生成待修复方法的补丁包过程中,当需要使用原始安装包中的目标方法和\或目标字段时,根据目标方法和\或目标字段的权限使用目标方法和\或目标字段,以生成补丁包。
基于此,即使在复制某方法时,调用到了其他的方法和\或字段,由于本申请针对方法和\或字段的不同权限使用方法和\或权限,来生成补丁包,从而避免方法和\或字段无法被访问的问题,以生成有效的补丁包,进而可以解决热修复的问题。
可选的,根据目标方法和\或目标字段的权限使用目标方法和\或目标字段,以生成补丁包,包括:在原始安装包中,调用目标字段,以生成补丁包。和\或,若目标方法的权限是private,则将原始安装包中的目标方法复制到补丁包中,以生成补丁包。若目标方法的权限是public,则在原始安装包中,调用目标方法,以生成补丁包。
即对于目标字段,也可以直接调用目标字段,可以提高补丁包的生成效率。本申请对于权限是public的方法,采用直接调用的方式。相对于反射调用方式,可以提高补丁包的生成效率。相对于复制方式,从而可以减小补丁包的大小。对于权限是private的方法,则将原始安装包中的目标方法复制到补丁包中,以生成补丁包,从而可以提高生成补丁包的灵活性。
可选的,方法还包括:若目标方法的原始权限为protected或package-private,且对目标方法的权限转换失败,则采用反射调用方式调用目标方法,以生成补丁包。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于百度在线网络技术(北京)有限公司,未经百度在线网络技术(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910541776.7/2.html,转载请声明来源钻瓜专利网。