CN110888658A - 应用程序中功能模块的动态化方法、装置及存储介质 - Google Patents
应用程序中功能模块的动态化方法、装置及存储介质 Download PDFInfo
- Publication number
- CN110888658A CN110888658A CN201911216200.XA CN201911216200A CN110888658A CN 110888658 A CN110888658 A CN 110888658A CN 201911216200 A CN201911216200 A CN 201911216200A CN 110888658 A CN110888658 A CN 110888658A
- Authority
- CN
- China
- Prior art keywords
- module
- installation package
- shell
- target
- user
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000009434 installation Methods 0.000 claims abstract description 213
- 230000006870 function Effects 0.000 claims description 222
- 238000004891 communication Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012217 deletion Methods 0.000 claims 1
- 230000037430 deletion Effects 0.000 claims 1
- 238000012360 testing method Methods 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 238000013507 mapping Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了一种应用程序中功能模块的动态化方法、装置及存储介质,属于程序开发测试领域。在本申请中,由于动态化之前,基础安装包中包括目标功能模块,因此,在动态化之前,下载过基础安装包的终端中包括目标功能模块,用户可以直接使用该目标功能模块。之后,在壳模块的下载量达到阈值条件后,也即在已使用目标功能模块的用户数达到一定数值之后,再将目标功能模块进行动态化,后续,在接收到目标终端的安装包下载请求时,如果目标用户标识所标识的用户已使用过该目标功能模块,则为目标终端生成的用户安装包中将包含有该动态模块,这样,对于用户来说,目标功能模块的动态化是无感知的,不会影响到用户对该应用程序的使用。
Description
技术领域
本申请涉及程序开发测试领域,特别涉及一种应用程序中功能模块的动态化方法、装置及存储介质。
背景技术
随着各式各样的应用程序的不断出现,应用程序的安装包的大小也不尽相同,安装包的大小是影响应用程序安装和使用的重要因素,更小的安装包可以提高应用程序的安装成功率。目前为了减小安装包的大小,可以对应用程序中的一些功能模块进行动态化。所谓对功能模块动态化是指:对于一些非基础功能,在应用程序的安装包中可以不包含用于实现这些功能的目标功能模块,而是将目标功能模块制作为动态模块存储在服务器中。终端在安装应用程序的安装包后,当需要使用这些功能时,再临时从服务器中下载动态模块进行加载。
发明内容
本申请实施例提供了一种应用程序中功能模块的动态化方法、装置及存储介质。所述技术方案如下:
一方面,提供了一种应用程序中功能模块的动态化方法,所述方法包括:
统计壳模块的下载量,所述壳模块是为应用程序创建的不包含有代码的空模块,所述壳模块的下载量用于指示已使用所述应用程序的基础安装包包括的目标功能模块的用户数;
当所述壳模块的下载量满足阈值条件时,根据所述目标功能模块和所述壳模块,生成所述目标功能模块对应的动态模块;
当接收到目标终端发送的安装包下载请求时,根据所述安装包下载请求携带的目标用户标识和所述动态模块,生成所述目标终端对应的用户安装包,向所述目标终端发送所述用户安装包,其中,如果所述目标用户标识所标识的用户已使用所述目标功能模块,所述用户安装包包括所述动态模块。
另一方面,提供了一种应用程序中功能模块的动态化装置,所述装置包括:
统计模块,用于统计壳模块的下载量,所述壳模块是为应用程序创建的不包含有代码的空模块,所述壳模块的下载量用于指示已使用所述应用程序的基础安装包包括的目标功能模块的用户数;
第一生成模块,用于当所述壳模块的下载量满足阈值条件时,根据所述目标功能模块和所述壳模块,生成所述目标功能模块对应的动态模块;
第二生成模块,用于当接收到目标终端发送的安装包下载请求时,根据所述安装包下载请求携带的目标用户标识和所述动态模块,生成所述目标终端对应的用户安装包,向所述目标终端发送所述用户安装包,其中,如果所述目标用户标识所标识的用户已使用所述目标功能模块,所述用户安装包包括所述动态模块。
另一方面,提供了一种计算机设备,所述计算机设备包括处理器、通信接口、存储器和通信总线;
其中,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信;
所述存储器用于存放计算机程序;
所述处理器用于执行所述存储器上所存放的程序,以实现前述提供应用程序中功能模块的动态化方法。
另一方面,提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现前述提供的应用程序中功能模块的动态化方法的步骤。
本申请实施例提供的技术方案带来的有益效果至少包括:
在本申请实施例中,由于动态化之前,基础安装包中包括目标功能模块,因此,在动态化之前,下载过基础安装包的终端中包括目标功能模块,用户可以直接使用该目标功能模块。之后,在壳模块的下载量达到阈值条件之后,也即在已使用目标功能模块的用户数达到一定数值之后,再将目标功能模块进行动态化,后续,在接收到目标终端的安装包下载请求时,如果目标用户标识所标识的用户已使用过该目标功能模块,则为目标终端生成的用户安装包中将包含有该动态模块,这样,对于用户来说,目标功能模块的动态化是无感知的,不会影响到用户对该应用程序的使用,同时,由于是在已使用目标功能模块的用户数达到一定数值之后对目标功能模块进行动态化,因此,相较于相关技术中直接将目标功能模块进行动态化,可以避免动态化后的动态模块的使用率较低所导致的资源浪费。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种应用程序中功能模块的动态化方法的系统架构图;
图2是本申请实施例提供的一种应用程序中功能模块的动态化方法的流程图;
图3是本申请实施例提供的一种应用程序中功能模块的动态化的示意图;
图4是本申请实施例提供的一种应用程序中功能模块的动态化装置的结构示意图;
图5是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行详细的解释说明之前,先对本申请实施例涉及的应用场景予以介绍。
目前,应用程序中提供的功能越来越多,但是一个应用程序中非基础功能并不是对所有安装有该应用程序的终端都是必须的,因此可以将非基础的功能模块进行动态化,以减小安装包的大小,且针对不同的用户的需求或者不同的终端配置为不同的终端提供不同的动态模块。相关技术中动态模块的下载和加载会对应用程序产生影响,例如,应用程序运行过程中,当用户想要使用目标功能模块时,可以通过应用程序中的目标功能模块对应的动态模块下载接口,向服务器请求下载动态模块,在下载动态模块时,需要暂停该应用程序的进程,在成功下载动态模块之后,还需要加载该动态模块,动态模块加载成功之后可能还需要重启该应用程序,重启之后再运行该动态模块。并且,相关技术中的动态化方法可能导致动态模块的使用率较低。本申请中功能模块的动态化不会影响用户对应用程序的使用,同时可以保证目标功能模块的使用率不会较低。
接下来对本申请实施例提供的应用程序中功能模块的动态化方法所涉及的系统架构进行介绍。
图1是本申请实施例提供的应用程序中功能模块的动态化方法的系统架构图。该系统架构包括终端101和服务器102,终端101和服务器102之间可以通过无线或有线方式连接以进行通信。
其中,终端101用于从服务器102获取应用程序的基础安装包,并可以下载并安装壳模块,以使服务器102对壳模块的下载量进行统计。在目标功能模块动态化之后,终端101可以下载并安装服务器102根据本申请提供的技术方案生成的相应的用户安装包。
服务器102用于统计壳模块的下载量,并可以对目标功能模块进行动态化,并根据本申请提供的技术方案为终端101生成终端101相应的用户安装包。
在本申请实施例中,终端101可以为手机、台式电脑、笔记本电脑等设备,服务器102可以为一台服务器,也可以是由多台服务器组成的服务器集群,或者是一个云计算服务中心,并不构成对本申请实施例的限定。
接下来对本申请实施例提供的应用程序中功能模块的动态化方法进行介绍。
图2是本申请实施例提供的一种应用程序中功能模块的动态化方法的流程图。如图2所示,该方法包括以下步骤:
步骤201:统计壳模块的下载量,壳模块是为应用程序创建的不包含有代码的空模块,壳模块的下载量用于指示已使用应用程序的基础安装包包括的目标功能模块的用户数。
在本申请实施例中,在动态化之前,可以先创建壳模块,该壳模块为不包含有代码的空模块,壳模块的下载量用于指示已使用应用程序的基础安装包包括的目标功能模块的用户数。在动态化之前,还可以创建目标功能模块,并将目标功能模块包括在基础安装包内,以使下载并安装该基础安装包的终端上具有目标功能模块,该终端的用户可以使用该目标功能模块对应的目标功能。
需要说明的是,由于应用程序可以提供一个或多个不同的目标功能,也即可以有一个或多个不同的目标功能模块,基于此,壳模块与目标功能模块可以一一对应,每个壳模块具有一个壳标识,每个目标功能模块具有一个模块标识,服务器可以将壳模块的壳标识和目标功能模块的模块标识对应存储。
可选地,统计壳模块的下载量的实现方式可以为:接收多个终端中每个终端发送的壳模块下载请求,根据接收到的多个壳模块下载请求,确定壳模块的下载量。其中,壳模块下载请求是相应终端在安装基础安装包后第一次运行目标功能模块时发送的。
在本申请实施例中,安装有基础安装包的终端可以运行目标功能模块,也可以不运行目标功能模块,也即是安装了的基础安装包的所有终端的所有用户中可能只有一部分用户使用了目标功能。当安装有基础安装包的终端在第一次运行目标功能模块时,会向服务器发送壳模块下载请求。其中,壳模块下载请求中可以携带目标功能模块的模块标识,服务器在接收该终端发送的壳模块下载请求时,可以根据目标功能模块的模块标识,从存储的模块标识与壳标识的映射关系中,获取目标功能模块对应的壳模块的壳标识,并根据获取到的壳标识将相应的壳模块的下载量增加1。随着服务器接收到的壳模块下载请求的个数增加,壳模块的下载量也随之增加,也即是服务器可以将接收到的壳模块下载请求的个数确定为壳模块的下载量。
此外,壳模块下载请求中在携带目标功能模块的模块标识的同时,还可以携带终端的用户标识。这样,服务器在根据目标功能模块的模块标识确定对应的壳标识之后,可以根据该壳标识获取该目标功能模块对应的壳模块,之后,服务器可以根据终端的用户标识,将获取的壳模块发送至该终端。
示例性地,假设直播应用的基础安装包中包括的一个目标功能模块为录制功能模块,安装有该基础安装包的终端可以运行录制功能模块,也可以不运行录制功能模块,也即是安装了该基础安装包的所有终端的所有用户中可能只有一部分用户会使用该录制功能。当安装有该基础安装包的终端第一次运行录制功能模块时,会向服务器发送壳模块下载请求,该壳模块下载请求中携带录制功能模块的模块标识。服务器在接收该终端发送的壳模块下载请求时,可以根据录制功能的模块标识,从存储的模块标识与壳标识的映射关系中,获取录制功能对应的壳模块的壳标识,并根据获取到的壳标识将相应的壳模块的下载量增加1。此外,服务器可以根据获取到的录制功能模块的模块标识所对应的壳标识,获取该录制功能模块对应的壳模块,并根据壳模块下载请求中携带的终端的用户标识,将获取的壳模块发送至该终端。
需要说明的是,在对目标功能模块进行动态化之前,服务器可以根据基础安装包对应用程序的安装包进行版本更新,更新版本的安装包包括基础安装包,并且,基础安装包中始终包括目标功能模块,这样,终端在下载更新版本的安装包安装后,终端上始终包括目标功能模块。服务器可以在应用程序的版本更新的过程中,统计壳模块的下载量。
步骤202:当壳模块的下载量满足阈值条件时,根据目标功能模块和壳模块,生成目标功能模块对应的动态模块。
在本申请实施例中,统计壳模块的下载量之后,可以通过判断壳模块的下载量是否满足阈值条件,来决定是否生成目标功能模块对应的动态模块。
其中,判断壳模块的下载量是否满足阈值条件,可以是先根据壳模块的下载量和基础安装包的下载量,确定壳模块的安装比例,然后,通过判断壳模块的安装比例是否达到参考比例,进而确定壳模块的下载量是否满足阈值条件。其中,当壳模块的安装比例大于参考比例时,确定壳模块的下载量满足阈值条件。当壳模块的安装比例小于或等于参考比例时,确定壳模块的下载量不满足阈值条件。其中,该阈值条件可以是指比例阈值,示例性地,该比例阈值可以为80%、90%或者是其他数值,本申请实施例对此不做限定。
在本申请实施例中,服务器可以统计基础安装包的下载量,基础安装包的下载量用于指示安装过相应应用程序的用户数。
由前述可知,壳模块下载请求是终端在安装基础安装包后第一次运行目标功能模块时发送的,且安装有基础安装包的终端可以运行目标功能模块,也可以不运行目标功能模块,也即是壳模块的下载量小于或等于基础安装包的下载量,基于此,可以根据壳模块的下载量和基础安装包的下载量,确定壳模块的安装比例。
在本申请实施例中,当确定壳模块的安装比例大于参考比例时,服务器可以确定壳模块的下载量满足阈值条件。
示例性地,以前述直播应用的录制功能为例,当录制功能对应的壳模块的安装比例大于90%时,服务器可以确定壳模块的下载量满足阈值条件。
需要说明的是,由前述可知,可以有一个或多个不同的目标功能模块,且不同的目标功能模块对应不同的壳模块,因此,对于不同的目标功能模块,前述参考比例可以相同或不同,也即是判断是否可以动态化的阈值条件可以相同或不同。
在本申请实施例中,当壳模块的下载量满足阈值条件时,服务器可以根据目标功能模块和壳模块,生成目标功能模块对应的动态模块。生成动态模块的具体实现方式可以为,服务器根据基础安装包中包括的目标功能模块的代码和该壳模块,生成目标功能模块的动态模块。
由前述可知,服务器可以在应用程序的版本更新的过程中确定目标功能模块的动态化的时机,当服务器确定壳模块的下载量满足阈值条件时,也即确定可以进行动态化之后,服务器可以选择在满足阈值条件时的基础安装包的相应版本的下一个版本中将目标功能模块进行动态化。
示例性地,假设应用程序的第一个版本为版本1.0,在版本1.0的应用程序的基础安装包中包括目标功能模块,终端可以安装版本1.0的应用程序的基础安装包,并选择是否使用目标功能模块,服务器可以根据前述方法统计壳模块的安装比例。当服务器需要对应用程序进行版本更新时,可以判断当前统计得到的壳模块的安装比例是否超过参考比例。如果服务器统计的壳模块的安装比例没有不超过参考比例,则服务器对应用程序进行版本更新时,仍在基础安装包中保留目标功能模块,也即是服务器可以将应用程序更新到版本1.1,版本1.1对应的基础安装包中仍包括目标功能模块,后续,服务器可以继续根据前述方法统计壳模块的安装比例,并继续判断是否超过参考比例。可选地,如果服务器确定当前统计的壳模块的安装比例大于参考比例,则服务器可以将目标功能模块进行动态化,并在动态化之后,根据动态模块,生成下一个版本的安装包,也即是生成版本1.2的应用程序的安装包。
步骤203:当接收到目标终端发送的安装包下载请求时,根据安装包下载请求携带的目标用户标识和动态模块,生成目标终端对应的用户安装包,向目标终端发送用户安装包,其中,如果目标用户标识所标识的用户已使用目标功能模块,用户安装包包括动态模块。
在本申请实施例中,当壳模块的下载量满足阈值条件时,可以将目标功能模块进行动态化,也即是生成目标功能模块对应的动态模块。在动态化之后,当接收到目标终端发送的安装包下载请求时,服务器可以根据安装包下载请求携带的目标用户标识和该动态模块,为目标终端生成对应的用户安装包,并向目标终端发送对应的用户安装包。其中,如果目标用户标识所标识的用户已使用目标功能模块,则为该目标终端生成的用户安装包中包括动态模块。
需要说明的是,在本申请实施例中,终端可以接收到服务器的安装包更新提醒,或者终端还可以向服务器查询是否有新版本的安装包,当目标终端确定要下载新版本的安装包时,会向服务器发送安装包下载请求,该安装包下载请求携带目标终端的目标用户标识,服务器可以根据安装包下载请求中携带的目标用户标识确定对应的用户是否已使用过目标功能模块。
在本申请实施例中,可以将动态化之前安装过基础安装包的终端的用户称为老用户,而将动态化之前未安装过基础安装包的终端的用户称为新用户,也即是未使用过该应用程序的用户可以为老用户,使用过该应用程序的用户可以为新用户。所有的老用户中可能存在部分老用户未使用过目标功能模块,也即是这部分用户的终端未运行过目标功能模块,其余的老用户为使用过目标功能模块的用户,也即是这部分用户的终端上运行过目标功能模块。由此可知,应用程序的所有用户可以分为使用过目标功能模块的老用户、未使用过目标功能模块的老用户、以及新用户。基于此,在动态化之后,本申请实施例中服务器根据安装包下载请求携带的目标用户标识和动态模块,生成目标终端对应的用户安装包对应可以有多种情况。
在第一种情况中,如果多个壳模块下载请求中存在携带有目标用户标识的壳模块下载请求,则可以将基础安装包中包括的目标功能模块进行删除,并将动态模块添加至删除目标功能模块后的基础安装包,得到目标终端对应的用户安装包。
在本申请实施例中,由前述可知,安装有基础安装包的终端在第一次运行目标功能模块时,会向服务器发送壳模块下载请求,且该壳模块下载请求可以携带该终端的用户标识,基于此,服务器在接收到壳模块下载请求之后,可以将该壳模块下载请求进行存储,以使后续服务器根据存储的壳模块下载请求,获知哪些用户下载过壳模块,也即获知哪些用户使用过目标功能模块。服务器在接收到目标终端发送的安装包下载请求之后,可以根据安装包下载请求携带的目标用户标识,从当前时刻之前接收到的多个壳模块下载请求中查找是否存在携带有该目标用户标识的壳模块下载请求,以此来获知目标用户标识所标识的用户是否已使用过目标功能模块。如果服务器存储的多个壳模块下载请求中存在携带有目标用户标识的壳模块下载请求,则说明该目标用户标识所标识的用户已使用过目标功能模块,在这种情况下,服务器可以将基础安装包中包括的目标功能模块进行删除,并将目标功能模块对应的动态模块添加至删除目标功能模块后的基础安装包中,得到目标终端对应的用户安装包。
需要说明的是,对于这种情况,服务器最终得到用户安装包是提供给使用过目标功能模块的老用户的,也即是,使用过目标功能的老用户所对应的终端可以下载并安装包含有动态模块的用户安装包,在安装成功之后,继续使用目标功能模块。这样,对于使用过目标功能模块的老用户来说,目标功能模块的动态化是无感知的,目标功能模块的动态化不会影响到这部分老用户对应用程序的使用。也即,相较于相关技术中,老用户无需在使用应用程序的过程中,暂停应用程序的进程去下载和加载动态模块,省去了用户等待时间。
在第二种情况中,如果多个壳模块下载请求中不存在携带有目标用户标识的壳模块下载请求,则可以将基础安装包中包括的目标功能模块进行删除,并根据动态模块,在删除目标功能模块后的基础安装包中添加动态模块获取接口,得到目标终端对应的用户安装包。
在这种情况中,如果服务器存储的多个壳模块下载请求中不存在携带有目标用户标识的壳模块下载请求,则说明目标终端在当前时刻之前未加载使用过目标功能模块,也即,目标终端的用户可能是一个新用户,也可能是一个对目标功能不感兴趣的老用户。基于此,服务器可以将基础安装包中的目标功能模块进行删除,并根据该动态模块,生成动态模块获取接口,在删除目标功能模块后的基础安装包中添加动态模块获取接口,得到目标终端对应的用户安装包。
需要说明的是,对于这种情况,服务器最终得到用户安装包是提供给未使用过目标功能模块的老用户或新用户的,也即是未使用过目标功能模块的老用户或新用户所对应的终端可以下载并安装不包含动态模块的用户安装包,在安装成功之后,如果想要使用目标功能,可以通过动态模块获取接口,来获取动态模块。这样,对于未使用过目标功能的老用户或新用户来说,对应的用户安装包中不包括目标功能模块以及动态模块,这样,可以减小用户安装包的大小,使这部分用户的终端下载并安装更小的用户安装包,提供安装成功率。
示例性地,如图3所示,假设在版本1.0的应用程序的基础安装包中包括目标功能模块,目标功能模块为录制功能模块,终端可以安装版本1.0的应用程序的基础安装包,并选择是否使用录制功能模块,服务器可以根据前述方法统计壳模块的安装比例。当服务器需要对应用程序进行版本更新时,可以判断当前统计得到的壳模块的安装比例是否超过参考比例。假设此时服务器统计的壳模块的安装比例没有超过参考比例,服务器将应用程序更新到版本1.1时,在版本1.1对应的基础安装包中仍保留录制功能模块,也即是版本1.1对应的基础安装包中仍包括录制功能模块。后续,服务器可以继续根据前述方法统计壳模块的安装比例。假设在更新到版本1.1之后,服务器此时统计的壳模块的安装比例大于参考比例,服务器可以将录制功能模块进行动态化,也即生成录制功能模块对应的录制动态模块,并根据安装包下载请求携带的用户标识和录制动态模块,为不同的目标终端生成不同的版本1.2的安装包。例如,可以在版本1.2中将基础安装包中的录制功能模块进行删除,为使用过录制功能模块的老用户提供包括录制动态模块的用户安装包,为未使用过录制功能模块的老用户以及新用户提供不包括录制动态模块、但包括录制动态模块下载接口的用户安装包。
前述实施例中的动态化之前的基础安装包中包括目标功能模块,终端在安装基础安装包后第一次运行目标功能模块时发送壳模块下载请求,之后再下载壳模块。然后服务器通过壳模块的下载量,确定动态化的时机。
可选地,在另一些实施例中,基础安装包还可以预埋壳模块,也即是基础安装包中包括壳模块,下载过该基础安装包的终端上均包括壳模块,服务器可以通过壳模块的安装比例,确定动态化的时机,当服务器确定壳模块的安装比例大于参考比例时,确定可以对目标功能模块进行动态化。其中,目标功能模块可以为基础安装包中包括的功能模块,例如前述的录制功能模块,目标功能模块还可以是基础安装包中没有的功能模块。
也即,在本申请实施例中,服务器可以将已开发出来的目标功能模块添加进应用程序的基础安装包中,或者可以将已开发出来的目标功能模块暂存在服务器,将壳模块预埋进基础安装包,当确定可以动态化时,再将目标功能模块进行动态化。此外,服务器还可以开发新的目标功能,在开发新的目标功能之前,将壳模块预埋进基础安装包,当开发生成出新的目标功能模块,且壳模块的安装比例大于参考比例时,将新的目标功能模块进行动态化。
示例性地,可以在版本1.2的应用程序的基础安装包中添加壳模块,随着安装基础安装包的用户数增加,壳模块的安装比例也随之增加,服务器可以统计壳模块的安装比例,假设在应用程序更新到版本1.4时,服务器确定壳模块的安装比例大于安装比例,服务器可以在版本1.5中将服务器中暂存的目标功能模块进行动态化,也即是将该目标功能模块确定为动态模块,并替换掉壳模块。对于安装过壳模块的终端,服务器为其提供包含动态模块的用户安装包,对于未安装过壳模块的终端,服务器为其提供不包含动态模块、但包含动态模块下载接口的用户安装包。
本申请实施例中,由于动态化之前,基础安装包中包括目标功能模块,因此,在动态化之前,下载过基础安装包的终端中包括目标功能模块,用户可以直接使用该目标功能模块。之后,在壳模块的下载量达到阈值条件之后,也即在已使用目标功能模块的用户数达到一定数值之后,再将目标功能模块进行动态化,后续,在接收到目标终端的安装包下载请求时,如果目标用户标识所标识的用户已使用过该目标功能模块,则为目标终端生成用户安装包中将包含有该动态模块,这样,对于用户来说,目标功能模块的动态化是无感知的,不会影响到用户对该应用程序的使用,同时,由于是在已使用目标功能模块的用户数达到一定数值之后对目标功能模块进行动态化,因此,相较于相关技术中直接将目标功能模块进行动态化,可以避免动态化后的动态模块的使用率较低所导致的资源浪费。
参见图4,本申请实施例提供了一种应用程序中功能模块的动态化装置400,该应用程序中功能模块的动态化装置可以应用于服务器中,该装置400包括:
统计模块401,用于统计壳模块的下载量,壳模块是为应用程序创建的不包含有代码的空模块,壳模块的下载量用于指示已使用应用程序的基础安装包包括的目标功能模块的用户数;
第一生成模块402,用于当壳模块的下载量满足阈值条件时,根据目标功能模块和壳模块,生成目标功能模块对应的动态模块;
第二生成模块403,用于当接收到目标终端发送的安装包下载请求时,根据安装包下载请求携带的目标用户标识和动态模块,生成目标终端对应的用户安装包,向目标终端发送用户安装包,其中,如果目标用户标识所标识的用户已使用目标功能模块,用户安装包包括动态模块。
可选地,统计模块包括:
接收子模块,用于接收多个终端中每个终端发送的壳模块下载请求,壳模块下载请求是相应终端在安装基础安装包后第一次运行目标功能模块时发送的;
确定子模块,用于根据接收到的多个壳模块下载请求,确定壳模块的下载量。
可选地,该装置还包括:
第一确定模块,用于根据壳模块的下载量和基础安装包的下载量,确定壳模块的安装比例;
第二确定模块,用于当壳模块的安装比例大于参考比例时,确定壳模块的下载量满足阈值条件。
可选地,壳模块下载请求携带终端的用户标识;
第二生成模块包括:
第一删除子模块,用于如果多个壳模块下载请求中存在携带有目标用户标识的壳模块下载请求,则将基础安装包中包括的目标功能模块进行删除;
第一添加子模块,用于将动态模块添加至删除目标功能模块后的基础安装包,得到目标终端对应的用户安装包。
可选地,壳模块下载请求携带终端的用户标识;
第二生成模块包括:
第二删除子模块,用于如果多个壳模块下载请求中不存在携带有目标用户标识的壳模块下载请求,则将基础安装包中包括的目标功能模块进行删除;
第二添加子模块,用于根据动态模块,在删除目标功能模块后的基础安装包中添加动态模块获取接口,得到目标终端对应的用户安装包。
综上所述,本申请实施例中,由于动态化之前,基础安装包中包括目标功能模块,因此,在动态化之前,下载过基础安装包的终端中包括目标功能模块,用户可以直接使用该目标功能模块。之后,在壳模块的下载量达到阈值条件之后,也即在已使用目标功能模块的用户数达到一定数值之后,再将目标功能模块进行动态化,后续,在接收到目标终端的安装包下载请求时,如果目标用户标识所标识的用户已使用过该目标功能模块,则为目标终端生成用户安装包中将包含有该动态模块,这样,对于用户来说,目标功能模块的动态化是无感知的,不会影响到用户对该应用程序的使用,同时,由于是在已使用目标功能模块的用户数达到一定数值之后对目标功能模块进行动态化,因此,相较于相关技术中直接将目标功能模块进行动态化,可以避免动态化后的动态模块的使用率较低所导致的资源浪费。
需要说明的是:上述实施例提供的应用程序中功能模块的动态化装置在功能模块动态化时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的应用程序中功能模块的动态化装置与应用程序中功能模块的动态化方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图5是本申请实施例提供的一种计算机设备的结构示意图。上述图2所示实施例中的服务器可以通过该计算机设备来实现。该计算机设备500包括处理器501、通信接口502、存储器503和通信总线504。其中,处理器501、通信接口502和存储器503通过通信总线504完成互相间的通信。存储器503用于存放计算机程序,处理器501用于执行存储器503上所存放的程序,以实现上述图2所示实施例提供的应用程序中功能模块的动态化方法。
处理器501可以是中央处理器(CPU),存储器503可以包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器503中,被配置由CPU执行。所述一个或者一个以上程序包含用于进行本申请实施例提供的应用程序中功能模块的动态化方法的指令。存储器503还可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
通信接口502包括基本输入/输出接口5021和网络接口5022。其中,基本输入/输出接口5021包括有用于显示信息的显示器和用于用户输入信息的诸如鼠标、键盘之类的输入设备(未示出)。计算机设备500可以通过网络接口5022与网络上的其他设备进行通信。
本申请实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行上述图2所示实施例提供的应用程序中功能模块的动态化方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述图2所示实施例提供的应用程序中功能模块的动态化方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种应用程序中功能模块的动态化方法,其特征在于,所述方法包括:
统计壳模块的下载量,所述壳模块是为应用程序创建的不包含有代码的空模块,所述壳模块的下载量用于指示已使用所述应用程序的基础安装包包括的目标功能模块的用户数;
当所述壳模块的下载量满足阈值条件时,根据所述目标功能模块和所述壳模块,生成所述目标功能模块对应的动态模块;
当接收到目标终端发送的安装包下载请求时,根据所述安装包下载请求携带的目标用户标识和所述动态模块,生成所述目标终端对应的用户安装包,向所述目标终端发送所述用户安装包,其中,如果所述目标用户标识所标识的用户已使用所述目标功能模块,所述用户安装包包括所述动态模块。
2.根据权利1所述的方法,其特征在于,所述统计壳模块的下载量,包括:
接收多个终端中每个终端发送的壳模块下载请求,所述壳模块下载请求是相应终端在安装所述基础安装包后第一次运行所述目标功能模块时发送的;
根据接收到的多个壳模块下载请求,确定所述壳模块的下载量。
3.根据权利2所述的方法,其特征在于,所述统计壳模块的下载量之后,还包括:
根据所述壳模块的下载量和所述基础安装包的下载量,确定所述壳模块的安装比例;
当所述壳模块的安装比例大于参考比例时,确定所述壳模块的下载量满足阈值条件。
4.根据权利要求2或3所述的方法,其特征在于,所述壳模块下载请求携带终端的用户标识;
所述根据所述安装包下载请求携带的目标用户标识和所述动态模块,生成所述目标终端对应的用户安装包,包括:
如果所述多个壳模块下载请求中存在携带有所述目标用户标识的壳模块下载请求,则将所述基础安装包中包括的目标功能模块进行删除;
将所述动态模块添加至删除所述目标功能模块后的基础安装包,得到所述目标终端对应的用户安装包。
5.根据权利要求2或3所述的方法,其特征在于,所述壳模块下载请求携带终端的用户标识;
所述根据所述安装包下载请求携带的目标用户标识和所述动态模块,生成所述目标终端对应的用户安装包,包括:
如果所述多个壳模块下载请求中不存在携带有所述目标用户标识的壳模块下载请求,则将所述基础安装包中包括的所述目标功能模块进行删除;
根据所述动态模块,在删除所述目标功能模块后的基础安装包中添加动态模块获取接口,得到所述目标终端对应的用户安装包。
6.一种应用程序中功能模块的动态化装置,其特征在于,所述装置包括:
统计模块,用于统计壳模块的下载量,所述壳模块是为应用程序创建的不包含有代码的空模块,所述壳模块的下载量用于指示已使用所述应用程序的基础安装包包括的目标功能模块的用户数;
第一生成模块,用于当所述壳模块的下载量满足阈值条件时,根据所述目标功能模块和所述壳模块,生成所述目标功能模块对应的动态模块;
第二生成模块,用于当接收到目标终端发送的安装包下载请求时,根据所述安装包下载请求携带的目标用户标识和所述动态模块,生成所述目标终端对应的用户安装包,向所述目标终端发送所述用户安装包,其中,如果所述目标用户标识所标识的用户已使用所述目标功能模块,所述用户安装包包括所述动态模块。
7.根据权利6所述的装置,其特征在于,所述统计模块包括:
接收子模块,用于接收多个终端中每个终端发送的壳模块下载请求,所述壳模块下载请求是相应终端在安装所述基础安装包后第一次运行所述目标功能模块时发送的;
确定子模块,用于根据接收到的多个壳模块下载请求,确定所述壳模块的下载量。
8.根据权利要求7所述的装置,其特征在于,所述壳模块下载请求携带终端的用户标识;
所述第二生成模块包括:
第一删除子模块,用于如果所述多个壳模块下载请求中存在携带有所述目标用户标识的壳模块下载请求,则将所述基础安装包中包括的目标功能模块进行删除;
第一添加子模块,用于将所述动态模块添加至删除所述目标功能模块后的基础安装包,得到所述目标终端对应的用户安装包。
9.一种计算机设备,其特征在于,所述计算机设备包括处理器、通信接口、存储器和通信总线;
其中,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信;
所述存储器用于存放计算机程序;
所述处理器用于执行所述存储器上所存放的程序,以实现权利要求1-5任一所述的方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-5任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911216200.XA CN110888658B (zh) | 2019-12-02 | 2019-12-02 | 应用程序中功能模块的动态化方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911216200.XA CN110888658B (zh) | 2019-12-02 | 2019-12-02 | 应用程序中功能模块的动态化方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110888658A true CN110888658A (zh) | 2020-03-17 |
CN110888658B CN110888658B (zh) | 2023-04-21 |
Family
ID=69749997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911216200.XA Active CN110888658B (zh) | 2019-12-02 | 2019-12-02 | 应用程序中功能模块的动态化方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110888658B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111399849A (zh) * | 2020-03-18 | 2020-07-10 | 北京奇艺世纪科技有限公司 | 一种应用程序安装包的确定方法及系统 |
CN111817970A (zh) * | 2020-05-28 | 2020-10-23 | 福建天泉教育科技有限公司 | 一种页面限流方法及终端 |
CN114153585A (zh) * | 2021-12-02 | 2022-03-08 | 建信金融科技有限责任公司 | 数据处理方法和相关设备 |
CN114172876A (zh) * | 2021-11-29 | 2022-03-11 | 阿里巴巴(中国)有限公司 | 数据传输方法、装置及计算机存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1841316A (zh) * | 2005-03-28 | 2006-10-04 | 华为技术有限公司 | 基于动态模块的软件处理系统的实现方法和装置 |
CN102932441A (zh) * | 2012-10-26 | 2013-02-13 | 北京小米科技有限责任公司 | 一种下载应用的方法、终端、服务器及系统 |
US20150089491A1 (en) * | 2012-06-07 | 2015-03-26 | Tencent Technology (Shenzhen) Company Limited | Software installation method, terminal, and computer storage medium |
CN106775781A (zh) * | 2017-02-17 | 2017-05-31 | 北京金山安全软件有限公司 | 减小应用安装包的方法、装置及电子设备 |
CN108762800A (zh) * | 2018-05-23 | 2018-11-06 | 北京五八信息技术有限公司 | 应用程序的动态更新方法和装置 |
CN109144533A (zh) * | 2017-06-28 | 2019-01-04 | 北京嘀嘀无限科技发展有限公司 | 一种应用程序的更新及加载的方法、系统及计算机装置 |
-
2019
- 2019-12-02 CN CN201911216200.XA patent/CN110888658B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1841316A (zh) * | 2005-03-28 | 2006-10-04 | 华为技术有限公司 | 基于动态模块的软件处理系统的实现方法和装置 |
US20150089491A1 (en) * | 2012-06-07 | 2015-03-26 | Tencent Technology (Shenzhen) Company Limited | Software installation method, terminal, and computer storage medium |
CN102932441A (zh) * | 2012-10-26 | 2013-02-13 | 北京小米科技有限责任公司 | 一种下载应用的方法、终端、服务器及系统 |
CN106775781A (zh) * | 2017-02-17 | 2017-05-31 | 北京金山安全软件有限公司 | 减小应用安装包的方法、装置及电子设备 |
CN109144533A (zh) * | 2017-06-28 | 2019-01-04 | 北京嘀嘀无限科技发展有限公司 | 一种应用程序的更新及加载的方法、系统及计算机装置 |
CN108762800A (zh) * | 2018-05-23 | 2018-11-06 | 北京五八信息技术有限公司 | 应用程序的动态更新方法和装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111399849A (zh) * | 2020-03-18 | 2020-07-10 | 北京奇艺世纪科技有限公司 | 一种应用程序安装包的确定方法及系统 |
CN111399849B (zh) * | 2020-03-18 | 2023-09-01 | 北京奇艺世纪科技有限公司 | 一种应用程序安装包的确定方法及系统 |
CN111817970A (zh) * | 2020-05-28 | 2020-10-23 | 福建天泉教育科技有限公司 | 一种页面限流方法及终端 |
CN111817970B (zh) * | 2020-05-28 | 2022-10-21 | 福建天泉教育科技有限公司 | 一种页面限流方法及终端 |
CN114172876A (zh) * | 2021-11-29 | 2022-03-11 | 阿里巴巴(中国)有限公司 | 数据传输方法、装置及计算机存储介质 |
CN114153585A (zh) * | 2021-12-02 | 2022-03-08 | 建信金融科技有限责任公司 | 数据处理方法和相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110888658B (zh) | 2023-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110888658B (zh) | 应用程序中功能模块的动态化方法、装置及存储介质 | |
US10467025B2 (en) | Managing delivery of code and dependent data using application containers | |
CN109246229B (zh) | 一种分发资源获取请求的方法和装置 | |
US9182975B2 (en) | Automatic application updates | |
CN110968331B (zh) | 应用程序运行的方法和装置 | |
CN110391938B (zh) | 用于部署服务的方法和装置 | |
CN110730090B (zh) | 云环境中代理端批量更新方法、装置、介质及电子设备 | |
CN110222288B (zh) | 页面展示方法、装置及存储介质 | |
CN110765394A (zh) | so文件加载方法、装置、存储介质及终端设备 | |
CN110069265B (zh) | 服务集群的升级方法、装置及存储介质 | |
CN112506584A (zh) | 资源文件加载方法、装置、设备、存储介质以及产品 | |
CN113434230A (zh) | H5页面的跳转控制方法、装置、存储介质及电子装置 | |
CN113302585A (zh) | 加速应用和子包安装 | |
CN102625290B (zh) | 一种资源下载的方法、装置和系统及终端 | |
CN106293814B (zh) | 升级方法及装置 | |
CN112395337A (zh) | 一种数据导出方法和装置 | |
CN112882733B (zh) | 应用更新方法及装置、电子设备、存储介质 | |
CN115080068A (zh) | 资源文件的传输方法、装置、设备及存储介质 | |
CN114860203A (zh) | 项目创建方法、装置、服务器及存储介质 | |
CN111973991A (zh) | 一种通过分布加载资源文件来加速加载游戏的控制方法及装置 | |
CN115004667A (zh) | 信息推送方法、装置、电子设备及计算机可读介质 | |
CN117883789B (zh) | 数据获取方法、装置、设备、可读存储介质及程序产品 | |
CN113010172B (zh) | 配置文件的处理方法、装置、系统及存储介质 | |
CN117170698A (zh) | 固件升级方法、装置、电子设备和计算机可读存储介质 | |
CN116661844A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231005 Address after: 31a, 15 / F, building 30, maple mall, bangrang Road, Brazil, Singapore Patentee after: Baiguoyuan Technology (Singapore) Co.,Ltd. Address before: 511402 5-13 / F, West Tower, building C, 274 Xingtai Road, Shiqiao street, Panyu District, Guangzhou City, Guangdong Province Patentee before: GUANGZHOU BAIGUOYUAN INFORMATION TECHNOLOGY Co.,Ltd. |
|
TR01 | Transfer of patent right |