[发明专利]用于升级应用的方法、装置、设备和存储介质有效
申请号: | 201910544728.3 | 申请日: | 2019-06-21 |
公开(公告)号: | CN110275722B | 公开(公告)日: | 2023-08-08 |
发明(设计)人: | 袁林思;毛英明;王黎;张宇 | 申请(专利权)人: | 北京百度网讯科技有限公司 |
主分类号: | G06F8/65 | 分类号: | G06F8/65;G06F9/445 |
代理公司: | 北京市金杜律师事务所 11256 | 代理人: | 李辉;李峥宇 |
地址: | 100094 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 升级 应用 方法 装置 设备 存储 介质 | ||
1.一种用于升级应用的方法,包括:
针对由第一应用的第一进程执行的第一线程,确定由所述第一线程调用的第一函数;
确定第二应用中的与所述第一函数相对应的第二函数,所述第一应用将被升级至所述第二应用,以及所述第一函数将被升级至所述第二函数;
基于包括所述第二函数的所述第二应用的第二动态链接库替换包括所述第一函数的所述第一应用的第一动态链接库;以及
基于所述第二动态链接库更新所述第一进程,以使得更新的所述第一进程运行所述第二应用中的第二函数;
其中基于所述第二动态链接库更新所述第一进程包括:
获取所述第一进程的地址映射,所述地址映射包括所述第一函数在所述第一进程的地址空间中的第一地址;
利用所述第二函数在所述地址空间中的第二地址更新所述地址映射中的所述第一函数的第一地址;以及
重启所述第一线程,以使得重启的第一线程基于更新的所述地址映射调用所述第二动态链接库中的所述第二函数的第二地址,从而调用所述第二动态链接库中的所述第二函数。
2.根据权利要求1所述的方法,进一步包括获取所述第一函数在所述地址空间中的所述第一地址,包括:针对所述第一应用的第一可执行文件中包括的一组地址中的给定地址,
获取与所述给定地址相关联的函数名称;以及
响应于确定所述函数名称与所述第一函数相匹配,将所述给定地址标识为所述第一地址。
3.根据权利要求2所述的方法,进一步包括:
响应于确定所述第一线程已经被重启,从运行所述第一应用的计算设备的存储器中清除所述第一可执行文件中的为确定所述第一地址而被加载到所述存储器中的部分。
4.根据权利要求1所述的方法,进一步包括:
将所述第二动态链接库加载至所述地址空间之中;以及
基于被加载的所述第二动态链接库,获取所述第二函数在所述地址空间中的所述第二地址。
5.根据权利要求1所述的方法,进一步包括:针对所述第一动态链接库中的所述第一函数以外的第三函数,
获取所述第三函数在所述地址空间中的第三地址;
获取所述第二动态链接库中的与所述第三函数相对应的第四函数在所述地址空间中的第四地址;以及
利用所述第四地址更新所述地址映射中的所述第三地址。
6.根据权利要求1所述的方法,其中基于所述第二动态链接库更新所述第一进程包括:
确定与所述第一动态链接库相关联的第一变量,所述第一变量的地址是在编译所述第一应用期间分配的;
确定所述第二应用中的与所述第一变量相对应的第二变量;以及
基于所述第一变量的数值设置所述第二变量。
7.根据权利要求6所述的方法,其中基于所述第一变量的数值设置所述第二变量包括:
分别向所述第一动态链接库和所述第二动态链接库添加第一注册文件和第二注册文件,所述第一注册文件中包括的所述第一变量的数值在所述第一线程的运行期间被动态地更新;
基于所述第一注册文件同步所述第二注册文件;以及
基于所述第二注册文件更新所述第二变量的数值。
8.根据权利要求7所述的方法,其中基于所述第二注册文件更新所述第二变量的数值包括:
使得重启的第一线程从所述第二注册文件中读取所述第二变量的数值。
9.根据权利要求1所述的方法,其中:
所述第一应用和所述第二应用分别是经由动态编译方式生成的;以及
所述第一动态链接库和所述第二动态链接库分别包括第一应用和所述第二应用的核心业务逻辑。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京百度网讯科技有限公司,未经北京百度网讯科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910544728.3/1.html,转载请声明来源钻瓜专利网。