CN108845813A - 一种应用程序热更新方法 - Google Patents

一种应用程序热更新方法 Download PDF

Info

Publication number
CN108845813A
CN108845813A CN201810610962.7A CN201810610962A CN108845813A CN 108845813 A CN108845813 A CN 108845813A CN 201810610962 A CN201810610962 A CN 201810610962A CN 108845813 A CN108845813 A CN 108845813A
Authority
CN
China
Prior art keywords
business
library
updated
dynamic link
application program
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
Application number
CN201810610962.7A
Other languages
English (en)
Inventor
吴振刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhengzhou Yunhai Information Technology Co Ltd
Original Assignee
Zhengzhou Yunhai Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhengzhou Yunhai Information Technology Co Ltd filed Critical Zhengzhou Yunhai Information Technology Co Ltd
Priority to CN201810610962.7A priority Critical patent/CN108845813A/zh
Publication of CN108845813A publication Critical patent/CN108845813A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例公开了一种应用程序热更新方法,包括:将待更新应用程序封装为多个业务模块;为每个所述业务模块关联一个动态链接库;获取更新文件;将所述更新文件封装为替换库;将待更新业务模块所关联的动态链接库替换为所述替换库。本发明实施例中将待更新的应用程序中的每个业务均封装为一个业务模块,为每个业务模块关联一个动态链接库,通过用替换库替换待更新业务的关联动态链接库,为业务模块替换新的动态链接库,从而实现对应用程序的更新,因为在更新过程中未关闭非更新业务模块及其关联的动态链接库,因此不影响其他业务的正常进行,提供了应用程序更新的效率。

Description

一种应用程序热更新方法
技术领域
本发明涉及应用程序更新技术领域,特别是涉及一种应用程序热更新方法。
背景技术
应用程序升级,指应用程序从低版本向高版本的更新,由于高版本常常修复低版本的部分BUG,所以经历了应用程序升级,一般都会比原版本的性能更好,得到优化的效果,用户也能有更好的体验。
重启升级是目前应用程序最普遍的升级方式,首先下载好需要升级的应用程序的升级包,然后进行升级包的安装,对需要升级的文件进行替换,如果在升级包安装前应用程序正在运行则需要对应用程序进行强制退出之后再进行升级包的安装,安装完毕后即可重启应用程序。
然而,当升级的功能跟当前工作所用的功能完全无关,或者升级功能并非必须常驻时,重启更新就严重影响了应用程序的正常使用,降低了应用程序安装效率。
发明内容
本发明实施例中提供了一种应用程序热更新方法,以解决现有技术中应用程序安装效率低的问题。
为了解决上述技术问题,本发明实施例公开了如下技术方案:
本发明提供了一种应用程序热更新方法,包括:
将待更新应用程序封装为多个业务模块;
为每个所述业务模块关联一个动态链接库;
获取更新文件;
将所述更新文件封装为替换库;
将待更新业务模块关联的动态链接库替换为所述替换库。
优选地,将待更新应用程序封装为多个业务模块具体包括:
将待更新应用程序的每个业务封装为一个业务模块。
优选地,将所述更新文件封装为替换库具体包括:
获取待更新业务模块关联的动态链接库中的全部函数;
根据所述更新文件替换相关函数;
将替换后的全部函数封装为替换库。
优选地,将待更新业务模块关联的动态链接库替换为所述替换库具体包括:
关闭待更新业务模块所连接的动态链接库;
关闭所述待更新业务模块;
断开所述待更新业务模块与动态链接库间的关联;
用所述替换库替换待更新业务模块对应的动态链接库;
在待更新业务模块与所述替换库之间建立关联。
优选地,所述方法还包括:结束待更新业务模块的全部线程。
优选地,所述方法还包括:
当待更新业务模块关联的动态链接库关联其他动态链接库时,断开全部相关动态链接库与业务模块间的关联。
优选地,用所述替换库替换待更新业务模块对应的动态链接库具体包括:
用替换库文件替换指定路径下的待更新业务模块对应的动态链接库文件。
优选地,所述方法还包括:为所述动态链接库和替换库设置初始化入口和业务接口。
优选地,在将待更新业务模块所连接的动态链接库替换为所述替换库之后还包括:
通过所述初始化入口读取初始化函数进行初始化;
初始化结束后,通过所述业务入口读取业务函数进行业务线程。
由以上技术方案可见,本发明中将待更新的应用程序中的每个业务均封装为一个业务模块,为每个业务模块关联一个动态链接库,每个动态链接库中保存有关联业务模块所需的函数,当需要对应用程序进行更新时,只需要根据更新文件确定待更新的文件属于哪个业务模块,将该业务模块以及与该业务模块关联的动态链接库关闭,并断开关联,通过用更新文件封装的替换库替换待更新业务的关联动态链接库,为业务模块替换新的动态链接库,从而实现对应用程序的更新,因为在更新过程中未关闭非更新业务模块及其关联的动态链接库,因此不影响其他业务的正常进行,提供了应用程序更新的效率。
附图说明
了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种应用程序热更新方法的流程示意图;
图2为本发明实施例提供的更新文件封装为替换库的方法的流程示意图;
图3为本发明实施例提供的替换动态链接库的方法的流程示意图;
图4为本发明实施例提供的另一种替换动态链接库的方法的流程示意图;
图5为本发明实施例提供的另一种应用程序热更新方法的流程示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
参见图1,为本发明实施例提供的一种应用程序热更新方法的流程示意图,如图1所示,本发明实施例提供的应用程序热更新方法,包括:
S10:将待更新应用程序封装为多个业务模块。
每个应用程序根据需要实现的功能不同会有多个业务模块,例如以QQ为例,其中既包括了聊天功能,也包括QQ宠物功能,且两个功能互补影响,但是在更新时,如果只对其中一个功能进行更新也需要退出整个程序,影响了正常的使用,因此本发明实施例中,将待更新应用程序的每个业务封装为一个业务模块,每次的跟新可以根据更新文件判断出是对什么业务进行的更新,从而只对该业务模块进行更新即可,不需要更新的业务模块可以继续运行。基于此,在进行业务模块划分时,需要将运行业务单独进行划分,保本其他业务模块不会与运行业务有冲突(应用程序运行业务与功能业务为不同概念,功能业务的执行以运行业务的正常工作为基础)。
S20:为每个所述业务模块关联一个动态链接库。
应用程序在运行过程中会根据自己需要实现的功能以及程序代码中的规定调用不同的函数,将应用程序按照业务的不同进行模块封装之后,将每个功能模块所需的全部函数打包成一个文件即为动态链接库,每个业务模块只可以调用自己关联的动态链接库中的函数,因为每个应用程序中包括多个业务模块,为了避免调用混乱,每个动态链接库均保存在应用程序安装路径的指定文件夹下,并与关联的业务模块进行相命名。
S30:获取更新文件。
获取应用程序的更新文件,获取路径可以为更新发布平台或应用程序官方网站,其中包括了需要更新的业务及其相应的函数。
S40:将所述更新文件封装为替换库。
参见图2,为本发明实施例提供的更新文件封装为替换库的方法的流程示意图,如图2所示,将所述更新文件封装为替换库具体包括:
S41:获取待更新业务模块关联的动态链接库中的全部函数。
因为应用程序业务的执行时通过调用函数实现的,因此,对应用程序的更新即为对函数的更新,因此,获取到更新文件后,根据需要更新的业务获取对应业务模块管动态链接库,读取动态连接库中的全部函数,并比对出此次更新中需要替换的函数。
S42:根据所述更新文件替换相关函数。
根据更新文件确定出需要替换的函数后,用更新文件中的函数对原有函数进行替换。需要说明的是,当某些业务模块所关联的动态链接库中的函数彼此关联性较大时,为了便于替换,可以将整个更新文件中对该业务的全部函数进行直接替换,以简化替换过程。
S43:将替换后的全部函数封装为替换库。
因为每个业务模块调用的函数均是从关联的动态链接库中获取的,因此需要将替换后的函数封装成与动态链接库相同格式的替换库,需要说明的是,替换库与动态链接库的格式、名称以及保存路径均相同,仅其中所封装的函数不同,本发明实施例中的名称仅为与动态链接库进行区分
S50:将待更新业务模块关联的动态链接库替换为所述替换库。
参见图3,为本发明实施例提供的替换动态链接库的方法的流程示意图;如图3所示,将待更新业务模块关联的动态链接库替换为所述替换库具体包括:
S51:关闭待更新业务模块所连接的动态链接库。
业务模块运行过程中的全部函数均从动态链接库中获取,如果动态链接库一直处于占用状态则无法对其进行替换,因此,需要关闭待更新业务模块所连接的动态链接库。
S52:关闭所述待更新业务模块。
业务模块直接获取业务信息,因为动态链接库已经关闭,对应的业务模块已经不能正常工作,因此,需要及时关闭待更新的业务模块,停止继续接受业务信息。
S53:断开所述待更新业务模块与动态链接库间的关联。
动态连接库和业务模块均关闭后该业务以停止运行,此时可以停止业务模块与动态连链接库之间的关联,开始进行动态链接库的替换。
当待更新业务模块关联的动态链接库关联其他动态链接库时,断开全部相关动态链接库与业务模块间的关联。
应用程序中的某也业务在运行的过程中,所调用的函数会再调用其他动态链接库的函数,因此,需要对相关联的全部动态链接库与对应业务模块间的关联,避免业务的异常运行,例如,业务一关联动态链接库一,业务二关联动态链接库二,业务一在运行的过程中需要从动态链接库一中调用某函数A,但是函数A的执行过程需要再调用动态链接库中函数B的运行结果,则当需要多业务二进行更新时,除了断开业务二与动态链接库二之间的关联外还需要断开业务一与动态链接库一之间的关联,但是在进行动态链接库替换时只需要替换动态链接库二即可。
S54:用所述替换库替换待更新业务模块对应的动态链接库。
用替换库替换对应的动态链接库即将替换库以相同的名称保存在与动态链接库相同的路径下,因为名称相同,在保存的过程中替换库会对动态链接库进行覆盖,避免同时存在多个相同名称的库从而因此关联和调用错误。
S55:在待更新业务模块与所述替换库之间建立关联。
动态链接库替换完毕之后需要重新再业务模块与新的动态链接库之间建立管理,使业务模块可以正常调用函数。
参见图4,为本发明实施例提供的另一种替换动态链接库的方法的流程示意图,如图5所示,替换动态链接库还包括:
S56:结束待更新业务模块的全部线程。
如果待更新的业务模块在关闭动态链接库时有线程正在运行,则立即停止所有线程,然后再依次关闭动态链接库和业务模块。
参见图5,为本发明实施例提供的另一种应用程序热更新方法的流程示意图,如图5所示,本发明实施例提供的应用程序热更新方法还包括:
S60:为所述动态链接库和替换库设置初始化入口和业务接口。
S70:通过所述初始化入口读取初始化函数进行初始化。
S80:所述业务入口读取业务函数进行业务线程。
初始化接口用于完成该业务在执行前的所有初始化功能,业务入口用于完成业务功能的实现,每次更新完成后都需要进行程序初始化,初始化的函数一般中调用一次,为了便于初始化设置,定义了初始化接口,用于初始化的函数通过初试化接口与业务模块关联,初试化完成之后,业务模块开始正常的业务运行,通过业务入口读取业务相关的函数。
对于本发明需要说明的是,为了使应用程序更新过程中需要停止的业务数量尽可能的少,本发明实施例中将每个业务封装为一个业务模块,但是,如果当某些业务的关联性较强,更新其中一个业务需要带动其他多个业务停止时,出于尽可能少的关闭业务模块和动态链接库的数量,可以将多个业务封装为一个业务模块,其相关的函数也封装与一个动态链接库中,其余实施过程相似,因此,本发明实施例中不再对多个业务封装为一个业务模块的实施过程进行说明。
本发明中将待更新的应用程序中的每个业务均封装为一个业务模块,为每个业务模块关联一个动态链接库,每个动态链接库中保存有关联业务模块所需的函数,当需要对应用程序进行更新时,只需要根据更新文件确定待更新的文件属于哪个业务模块,将该业务模块以及与该业务模块关联的动态链接库关闭,并断开关联,通过用更新文件封装的替换库替换待更新业务的关联动态链接库,为业务模块替换新的动态链接库,从而实现对应用程序的更新,因为在更新过程中未关闭非更新业务模块及其关联的动态链接库,因此不影响其他业务的正常进行,提供了应用程序更新的效率。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (9)

1.一种应用程序热更新方法,其特征在于,包括:
将待更新应用程序封装为多个业务模块;
为每个所述业务模块关联一个动态链接库;
获取更新文件;
将所述更新文件封装为替换库;
将待更新业务模块关联的动态链接库替换为所述替换库。
2.根据权利要求1所述的应用程序热更新方法,其特征在于,将待更新应用程序封装为多个业务模块具体包括:
将待更新应用程序的每个业务封装为一个业务模块。
3.根据权利要求1所述的应用程序热更新方法,其特征在于,将所述更新文件封装为替换库具体包括:
获取待更新业务模块关联的动态链接库中的全部函数;
根据所述更新文件替换相关函数;
将替换后的全部函数封装为替换库。
4.根据权利要求1所述的应用程序热更新方法,其特征在于,将待更新业务模块关联的动态链接库替换为所述替换库具体包括:
关闭待更新业务模块所连接的动态链接库;
关闭所述待更新业务模块;
断开所述待更新业务模块与动态链接库间的关联;
用所述替换库替换待更新业务模块对应的动态链接库;
在待更新业务模块与所述替换库之间建立关联。
5.根据权利要求4所述的应用程序热更新方法,其特征在于,所述方法还包括:结束待更新业务模块的全部线程。
6.根据权利要求4所述的应用程序热更新方法,其特征在于,所述方法还包括:
当待更新业务模块关联的动态链接库关联其他动态链接库时,断开全部相关动态链接库与业务模块间的关联。
7.根据权利要求4所述的应用程序热更新方法,其特征在于,用所述替换库替换待更新业务模块对应的动态链接库具体包括:
用替换库文件替换指定路径下的待更新业务模块对应的动态链接库文件。
8.根据权利要求1-7任一所述的应用程序热更新方法,其特征在于,所述方法还包括:为所述动态链接库和替换库设置初始化入口和业务接口。
9.根据权利要求8所述的应用程序热更新方法,其特征在于,在将待更新业务模块所连接的动态链接库替换为所述替换库之后还包括:
通过所述初始化入口读取初始化函数进行初始化;
初始化结束后,通过所述业务入口读取业务函数进行业务线程。
CN201810610962.7A 2018-06-14 2018-06-14 一种应用程序热更新方法 Pending CN108845813A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810610962.7A CN108845813A (zh) 2018-06-14 2018-06-14 一种应用程序热更新方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810610962.7A CN108845813A (zh) 2018-06-14 2018-06-14 一种应用程序热更新方法

Publications (1)

Publication Number Publication Date
CN108845813A true CN108845813A (zh) 2018-11-20

Family

ID=64201752

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810610962.7A Pending CN108845813A (zh) 2018-06-14 2018-06-14 一种应用程序热更新方法

Country Status (1)

Country Link
CN (1) CN108845813A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109976790A (zh) * 2019-03-29 2019-07-05 珠海豹好玩科技有限公司 应用更新方法、装置、终端及存储介质
CN110275722A (zh) * 2019-06-21 2019-09-24 北京百度网讯科技有限公司 用于升级应用的方法、装置、设备和存储介质
CN110750545A (zh) * 2019-09-03 2020-02-04 北京字节跳动网络技术有限公司 动态库热更新方法、装置、介质和设备
CN111046003A (zh) * 2019-12-06 2020-04-21 北京地拓科技发展有限公司 一种土壤侵蚀因子数据的更新方法、装置和电子设备
CN111736883A (zh) * 2020-05-11 2020-10-02 山东浪潮通软信息科技有限公司 基于数据延迟升级的计算机管理系统热升级方法及装置
CN111813416A (zh) * 2019-04-11 2020-10-23 杭州海康威视系统技术有限公司 文件打包方法、装置及设备、存储介质
CN112631837A (zh) * 2020-12-30 2021-04-09 凌云光技术股份有限公司 一种工程数据的保存方法及系统
CN113110865A (zh) * 2021-04-21 2021-07-13 北京字跳网络技术有限公司 一种服务器热更新方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1924805A (zh) * 2005-09-02 2007-03-07 腾讯科技(深圳)有限公司 在无线二进制运行环境平台实现动态链接库方法
CN101964725A (zh) * 2010-09-01 2011-02-02 中兴通讯股份有限公司 业务不中断升级的方法和系统
CN102378055A (zh) * 2010-08-16 2012-03-14 康佳集团股份有限公司 网络电视系统及升级方法
CN105630557A (zh) * 2015-12-24 2016-06-01 迈普通信技术股份有限公司 热补丁方法和装置
CN105630491A (zh) * 2015-12-18 2016-06-01 Tcl集团股份有限公司 程序的功能变更方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1924805A (zh) * 2005-09-02 2007-03-07 腾讯科技(深圳)有限公司 在无线二进制运行环境平台实现动态链接库方法
CN102378055A (zh) * 2010-08-16 2012-03-14 康佳集团股份有限公司 网络电视系统及升级方法
CN101964725A (zh) * 2010-09-01 2011-02-02 中兴通讯股份有限公司 业务不中断升级的方法和系统
CN105630491A (zh) * 2015-12-18 2016-06-01 Tcl集团股份有限公司 程序的功能变更方法及装置
CN105630557A (zh) * 2015-12-24 2016-06-01 迈普通信技术股份有限公司 热补丁方法和装置

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109976790A (zh) * 2019-03-29 2019-07-05 珠海豹好玩科技有限公司 应用更新方法、装置、终端及存储介质
CN111813416A (zh) * 2019-04-11 2020-10-23 杭州海康威视系统技术有限公司 文件打包方法、装置及设备、存储介质
CN110275722A (zh) * 2019-06-21 2019-09-24 北京百度网讯科技有限公司 用于升级应用的方法、装置、设备和存储介质
CN110275722B (zh) * 2019-06-21 2023-08-08 北京百度网讯科技有限公司 用于升级应用的方法、装置、设备和存储介质
CN110750545A (zh) * 2019-09-03 2020-02-04 北京字节跳动网络技术有限公司 动态库热更新方法、装置、介质和设备
CN111046003A (zh) * 2019-12-06 2020-04-21 北京地拓科技发展有限公司 一种土壤侵蚀因子数据的更新方法、装置和电子设备
CN111046003B (zh) * 2019-12-06 2024-03-01 北京地拓科技发展有限公司 一种土壤侵蚀因子数据的更新方法、装置和电子设备
CN111736883A (zh) * 2020-05-11 2020-10-02 山东浪潮通软信息科技有限公司 基于数据延迟升级的计算机管理系统热升级方法及装置
CN112631837A (zh) * 2020-12-30 2021-04-09 凌云光技术股份有限公司 一种工程数据的保存方法及系统
CN112631837B (zh) * 2020-12-30 2024-04-12 凌云光技术股份有限公司 一种工程数据的保存方法及系统
CN113110865A (zh) * 2021-04-21 2021-07-13 北京字跳网络技术有限公司 一种服务器热更新方法及装置

Similar Documents

Publication Publication Date Title
CN108845813A (zh) 一种应用程序热更新方法
US6385770B1 (en) Software upgrade
CN105159718B (zh) 固件升级方法及装置
EP1717701B1 (en) Electronic device configuration management systems and methods
CN105094913B (zh) 系统、基带固件和系统应用升级方法及装置
CN109814884A (zh) 一种根据游戏资源类型进行资源管理的方法及系统
CN107656757A (zh) 操作系统切换方法及装置
CN108141378B (zh) Vnfd中的休眠vdu
CN102207879A (zh) Lua脚本热更新方法及系统
CN109885612B (zh) 区块链智能合约的同步生效方法及装置
CN110262838A (zh) 一种程序崩溃的处理方法、装置、终端及存储介质
CN108874549A (zh) 资源复用方法、装置、终端和计算机可读存储介质
CN103761126B (zh) 应用程序的升级方法和装置
EP1049974B1 (en) Software upgrade
CN109189429A (zh) 双核处理器amp模式下cpu0更新cpu1程序的方法
CN109032635A (zh) 软件升级方法、装置和网络设备
CN105740408B (zh) 调用hadoop集群的方法和装置
CN116954685B (zh) 低代码应用系统灰度滚动升级方法、系统、设备及介质
CN106919391A (zh) 面向智能手机的可定制操作系统组件的嵌入式系统
US9495250B2 (en) Providing code to a programmable device
US7634258B2 (en) System and method for over-the-air update of wireless communication devices
CN107977243A (zh) 一种第三方接口调用方法及装置
CN106033366A (zh) 管理浏览器内核的方法、装置和系统
CN116243930A (zh) 多版本并行环境设计方法及搭建系统
CN116107590A (zh) 软件产品开发部署中兼容微服务和单体架构的实现方法及系统

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20181120