CN109831476A - 安装包下载方法、装置、电子设备及存储介质 - Google Patents
安装包下载方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN109831476A CN109831476A CN201811537802.0A CN201811537802A CN109831476A CN 109831476 A CN109831476 A CN 109831476A CN 201811537802 A CN201811537802 A CN 201811537802A CN 109831476 A CN109831476 A CN 109831476A
- Authority
- CN
- China
- Prior art keywords
- installation kit
- file
- dynamic link
- link file
- compression
- 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
Links
- 238000009434 installation Methods 0.000 title claims abstract description 213
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 38
- 230000006835 compression Effects 0.000 claims description 133
- 238000007906 compression Methods 0.000 claims description 133
- 230000006870 function Effects 0.000 claims description 130
- 238000004590 computer program Methods 0.000 claims description 20
- 230000005540 biological transmission Effects 0.000 claims description 7
- 230000009467 reduction Effects 0.000 abstract description 4
- 230000006837 decompression Effects 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000003442 weekly effect Effects 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Abstract
本发明涉及一种安装包下载方法、装置、电子设备及存储介质。所述方法包括:将安装包中的第三方库独立打包生成动态链接文件;将生成的动态链接文件的路径插入到安装包中的HTML模板文件中,以使HTML模板文件的页面在启动时加载动态链接文件;对安装包中的功能模块文件采用MD5算法计算出功能模块文件的MD5值;接收客户端发送的安装包下载请求信息;根据接收的安装包下载请求信息获取所述安装包以及与安装包相关的动态链接文件,并对获取的动态链接文件进行编译以减小所述动态链接文件的大小;及将减小后的所述动态链接文件与安装包打包后发送给所述客户端。本发明能够解决在下载安装包时消耗时间过长及资源消耗过大的问题。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种安装包下载方法、装置、电子设备和存储介质。
背景技术
目前多数第三方库都是并行下载,造成页面请求数过多,资源消耗过大。同时,目前APP发版之前都需要将H5资源拷贝至APP目录下,造成APP安装包过大。
发明内容
鉴于以上内容,有必要提出一种安装包下载方法、装置、计算机装置和计算机可读存储介质,以解决在下载安装包时消耗时间过长及资源消耗过大的问题。
本申请的第一方面提供一种安装包下载方法,所述方法包括:
将安装包中的第三方库独立打包生成动态链接文件;
将生成的动态链接文件的路径插入到所述安装包中的HTML模板文件中,以使所述HTML模板文件的页面在启动时加载所述动态链接文件;
对所述安装包中的功能模块文件采用MD5算法计算出所述功能模块文件的MD5值;
接收客户端发送的安装包下载请求信息;
根据接收的所述安装包下载请求信息获取所述安装包以及与所述安装包相关的动态链接文件,并对获取的所述动态链接文件进行编译以减小所述动态链接文件的大小;及
将编译后的所述动态链接文件与所述安装包打包后发送给所述客户端。
优选地,所述方法还包括:
所述客户端识别所述安装包中的功能模块文件的MD5值,并判断是否已经存储有所述MD5值;
当确定所述客户端中不存在所述MD5值时将与所述MD5值对应的功能文件进行缓存;及
当确定所述客户端中存在所述MD5值时不将与MD5值对应的功能文件进行缓存。
优选地,所述将安装包中的第三方库独立打包生成动态链接文件包括:
通过webpack工具将所述安装包所使用的第三方库独立打包成一个动态链接文件。
优选地,所述方法还包括:
对所述安装包的共享函数库文件进行压缩处理。
优选地,所述对所述安装包的共享函数库文件进行压缩处理还包括:
获取所述安装包中的共享函数库文件对应的初始压缩包;
解压所述初始压缩包得到所述共享函数库文件;
调用预置压缩工具对所述共享函数库文件进行压缩得到目标压缩包;及
将所述目标压缩包存储至所述安装包的预置位置,并删除所述初始压缩包。
优选地,所述预置压缩工具为7-Zip压缩工具。
优选地,所述下载请求信息中包含安装包唯一标识符信息。
本申请的第二方面提供一种安装包下载装置,所述装置包括:
打包模块,用于将安装包中的第三方库独立打包生成动态链接文件;
路径插入模块,用于将生成的动态链接文件的路径插入到所述安装包中的HTML模板文件中,以使所述HTML模板文件的页面在启动时加载所述动态链接文件;
计算模块,用于对所述安装包中的功能模块文件采用MD5算法计算出所述功能模块文件的MD5值;
接收模块,用于接收客户端发送的安装包下载请求信息;
编译模块,用于根据接收的所述安装包下载请求信息获取所述安装包以及与所述安装包相关的动态链接文件,并对获取的所述动态链接文件进行编译以减小所述动态链接文件的大小;及
发送模块,用于将减小后的所述动态链接文件与所述安装包打包后发送给所述客户端。
本申请的第三方面提供一种电子设备,所述电子设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现所述安装包下载方法。
本申请的第四方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述安装包下载方法。
本发明提供的安装包下载方法,能够获取安装包内共享函数库文件对应的初始压缩包,及解压所述初始压缩包得到共享函数库文件;并调用预置压缩工具对所述共享函数库文件进行压缩得到目标压缩包;最后将所述目标压缩包储存至所述安装包的预置位置,删除所述初始压缩包。从而可以有效减小共享函数库文件对压缩包的占用空间大小,因此减小了安装包的大小,进而减少传输过程中产生的流量,节省网络传输流量资源。
附图说明
图1是本发明一实施方式中安装包下载方法的应用环境示意图。
图2是本发明一实施方式中安装包下载方法的流程图。
图3为本发明一实施方式中安装包下载装置的结构图。
图4为本发明一实施方式中压缩模块的结构图。
图5为本发明电子设备较佳实施例的示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
优选地,本发明的安装包下载方法应用在一个或者多个电子设备中。所述电子设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(DigitalSignal Processor,DSP)、嵌入式设备等。
所述电子设备可以是桌上型计算机、笔记本电脑、平板电脑及云端服务器等计算设备。所述设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
实施例1
图1是本发明安装包下载方法的应用环境示意图。
参阅图1所示,所述安装包下载方法应用在服务器1与至少一客户端3中,所述服务器1通过网络2与至少一客户端3连接。其中,所述网络2可以是有线网络,也可以是无线网络,例如无线电、无线保真(Wireless Fidelity,WIFI)、蜂窝、卫星、广播等。在一实施方式中,所述服务器1可以是单一的服务器,也可以是一服务器群。所述客户端3可以是笔记本电脑、台式电脑、平板电脑、移动手机等装置。
图2是本发明安装包下载方法较佳实施例的流程图。根据不同的需求,所述流程图中步骤的顺序可以改变,某些步骤可以省略。
参阅图2所示,所述安装包下载方法具体包括以下步骤:
步骤201,将安装包中的第三方库独立打包生成动态链接文件(dynamic linklibrary,dll)。
本实施方式中,所述服务器1中存储有安装包。所述安装包包括所使用的第三方库信息、HTML模板文件、共享库函数文件、动态链接文件及各个功能模块文件。其中,所述动态链接文件为共享函数库的可执行文件,用于使进程可以调用不属于进程可执行代码的函数。
本实施方式中,通过webpack工具将安装包所使用的第三方库独立打包成一个动态链接文件。所述第三方库为一开源库。所述生成的动态链接文件内容在较长的一段时间内不会发生改变。
步骤202,将生成的动态链接文件的路径插入到安装包中的HTML模板文件中,以使所述HTML模板文件对应的页面在启动时加载所述动态链接文件。
本实施方式中,通过将安装包中的第三方库独立打包后拆分生成动态链接文件及将生成的动态链接文件的路径插入到安装包中的HTML模板文件中可以大量减少安装包文件的体积。
步骤S203,对安装包中的功能模块文件采用MD5(Message Digest Algotithm 5,信息-摘要算法5)算法计算出功能模块文件的MD5值。
本实施方式中,通过信息-摘要算法5计算所述功能模块文件的MD5哈希值,其中所述MD5哈希值为一128位的散列值且不同的功能模块文件文件通过信息-摘要算法5计算出的MD5哈希值是不同的。如此,本发明通过比较两个功能模块文件文件对应的MD5哈希值是否相同,可以确定两个功能模块文件的内容是否相同。步骤S204,对安装包的共享函数库文件进行压缩处理。
本实施方式中,在对安装包的共享函数库文件进行压缩处理时首先获取安装包内共享函数库文件对应的初始压缩包,及解压所述初始压缩包得到共享函数库文件;然后调用预置压缩工具对所述共享函数库文件进行压缩得到目标压缩包;最后将所述目标压缩包储存至所述安装包的预置位置,并删除所述初始压缩包,从而有效减小共享函数库文件对压缩包的占用空间大小,减小安装包的大小,进而减少传输过程中产生的流量并节省网络传输流量资源。
本实施方式中,所述对安装包的共享函数库文件进行压缩处理包括:
(S2041)获取安装包中的共享函数库文件对应的初始压缩包。
在一实施方式中,所述安装包包括apk安装包。在一预设编译平台上中通过aapt对资源文件进行编译形成二进制文件,并当所有的资源文件编译完成后将打包形成apk安装包。其中,预设编译平台为Android编译平台。当应用程序有共享函数库文件的情况下,通常采用Android编译平台内置默认的Deflate算法压缩共享函数库文件,并将共享函数库文件压缩后存储在apk安装包的libs中。本实施方式中,上述初始压缩包为apk安装包的libs中共享函数库文件通过Deflate算法压缩得到的压缩文件。
(S2042)解压所述初始压缩包得到共享函数库文件。
本实施方式中,当获取到上述apk安装包的libs中存在初始压缩包时,可以通过对应的压缩工具对初始压缩包进行解压,以还原共享函数库文件。具体地,本实施方式中,上述对压缩工具所采用的压缩算法可以根据实际需要进行设置,在此不做进一步地限定。例如,可以采用Deflate算法,具体地,所述7-Zip压缩工具应用了LZMA(Lempel-Ziv-Markovchain-Algorithm)算法,所述LZMA算法是Deflate算法和LZ77算法改良和优化后的压缩算法。在其他实施例中,还可以直接采用Deflate算法对初始压缩包进行解压处理,以得到共享函数库文件。
(S2043)调用预置压缩工具对所述共享函数库文件进行压缩得到目标压缩包。
所述预置压缩工具的形式可以根据实际实际需要进行设置,但所述预置压缩工具的压缩比要大于上述Deflate算法的压缩比。所述压缩比是指压缩前与压缩后的文件所占的磁盘空间比值,其中压缩比越大,压缩效果越好,压缩后的体积越小。本实施方式中,通过上述预置压缩工具压缩后的目标压缩包小于上述初始压缩包。优选地,所述预置压缩工具可以为7-Zip压缩工具,所述7-Zip压缩工具中应用了LZMA算法。
(S2044)将所述目标压缩包存储至所述安装包的预置位置,并删除所述初始压缩包。
本实施方式中,上述预置位置的路径可以根据实际需要进行设置,例如,优选地,可以放在apk安装包的assets目录下。具体地,可以在对所述共享函数库文件进行压缩的过程中对是否压缩成功进行判断,当压缩出错时,则不进行压缩包替换,当成功压缩得到上述目标压缩包时,则将目标压缩包储存至apk安装包的assets目录下,然后删除初始压缩包。在本实施方式中,由于在将目标压缩包储存至所述安装包的预置位置后,删除初始压缩包,从而有效保证了安装包的完整性,防止了由于在压缩得到目标压缩包时发生错误,影响后续安装所述apk安装包时无法正常加载共享函数。
本发明实施例中获取安装包内共享函数库文件对应的初始压缩包,及解压所述初始压缩包得到共享函数库文件;并调用预置压缩工具对所述共享函数库文件进行压缩得到目标压缩包;最后将所述目标压缩包储存至所述安装包的预置位置,删除所述初始压缩包。从而可以有效减小共享函数库文件对压缩包的占用空间大小,因此减小了安装包的大小,进而减少传输过程中产生的流量,节省网络传输流量资源。
步骤S205,接收客户端3发送的安装包下载请求信息。
在一实施方式中,客户端3在接收到用户发出的安装包下载指令后向服务器1发送安装包下载请求信息。在另一实施方式中,客户端3根据预设的时间间隔产生安装包下载的触发信息,并根据生成的安装包触发信息向服务器1发送安装包下载请求信息。需要说明的是,由于服务器1的安装包可能在不断更新,因此用户可以预先设置一安装包下载的时间间隔(例如一周一次),在达到所述下载时间间隔时,客户端3自动向服务器1发送安装包下载请求信息。其中,所述下载请求信息中包含安装包唯一标识符等信息。
步骤S206,根据接收的所述安装包下载请求信息获取所述安装包以及与所述安装包相关的动态链接文件,并对获取的所述动态链接文件进行编译以减小所述动态链接文件的大小。
在一实施方式中,为了提高下载的效率,服务器1可以预先将所述安装包以及与所述安装包相关的动态链接文件存储至同一路径下。
在一实施方式中,所述服务器1对获取的所述动态链接文件中的导出函数进行编译修饰,并对编译修饰后的所述导出函数添加编译选项以减小所述动态链接文件的大小。为了方便其他动态链接文件或应用程序调用所述动态链接文件中的函数,所述服务器1对获取的所述动态链接库中的导出函数进行如下编译修饰attribute_((visibility(“default”))),并对编译修饰后的所述导出函数添加如下所示编译选项LOCAL_CPPFLAGS:=-fvisibility=hidden-fvisibility-inlines-hidden;添加编译选项后的导出函数将被保留在所述动态链接文件中,未添加编译选项的函数将会被删除或者只保留函数名称,从而减少所述动态链接文件的大小。
本实施方式中,动态链接文件中一般包括导出函数和私有函数,所述导出函数为外部可执行程序访问的函数,所述私有函数为动态链接文件中的内部函数,不能为外部可执行程序所访问。
在另一实施方式中,服务器1对获取的所述动态链接文件进行编译,使得编译后的所述动态链接文件中只包含导出表,所述导出表中包含所有可导出的函数名称。为了减小所述动态链接文件的大小,但又不影响减小后的动态链接文件的功能,本实施方式中对所述动态链接文件进行编译,使得编译后的所述动态链接文件中只包含含有函数名称的导出表。本实施方式中,虽然编译后所述动态链接文件中只包含含有函数名称的导出表,但依赖于所述动态链接文件的其他动态链接文件或者应用程序仍能够启动,因为动态链接文件或者应用程序在启动时,主要查找所需的函数存不存在,若存在,则启动。
步骤S207,将编译后的所述动态链接文件与所述安装包打包后发送给所述客户端3。
本实施方式中,由于服务器1中的安装包可能在不断更新,为了节省下载流量及提高下载效率,本实施方式中服务器1还可以将更新部分的安装包作为另一压缩包,服务器1在接收到包含时间戳(所述时间戳用于表示安装包下载的时间)的安装包下载请求信息后,根据所述时间戳判断是否有更新部分的安装包,如果有,则将更新部分的安装包以及减小后的所述动态链接文件打包后发送给所述客户端3。客户端3在接收到服务器1返回的所述安装包,并在客户端的应用程序需要调用所述安装包中动态链接文件中的函数且所述动态链接文件中不存在所述函数或者仅存在所述函数的函数名称时,输出提示信息,提示用户下载完整的动态链接文件。
本发明实施方式中客户端3在下载安装包时,服务器1可以通过减少与所述安装包相关的动态链接文件的大小,从而减少下载时消耗的时间以及流量,提高下载效率。
本实施方式中,所述步骤S207之后还包括步骤:客户端3识别安装包中功能模块文件的MD5值,并判断是否已经存储有所述MD5值;当确定客户端3中不存在所述MD5值时将与所述MD5值对应的功能文件进行缓存;当确定客户端3中存在所述MD5值时不将MD5值对应的功能文件进行缓存。
本实施方式中,当确定客户端3中不存在所述MD5值时,则表示客户端3中第一次接收到MD5值对应的功能文件,当定客户端3中存在所述MD5值时,则表示客户端3之前已经接收到所述MD5值对应的功能文件。
实施例2
图3为本发明一实施方式中安装包下载装置40的结构图。
在一些实施例中,所述安装包下载装置40运行于电子设备中。所述安装包下载装置40可以包括多个由程序代码段所组成的功能模块。所述安装包下载装置40中的各个程序段的程序代码可以存储于存储器中,并由至少一个处理器所执行,以执行单证验证的功能。
本实施例中,所述电子设备的安装包下载装置40根据其所执行的功能,可以被划分为多个功能模块。参阅图3所示,所述安装包下载装置40可以包括打包模块401、路径插入模块402、计算模块403、压缩模块404、接收模块405、编译模块406、发送模块407。本发明所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。在一些实施例中,关于各模块的功能将在后续的实施例中详述。
所述打包模块401用于将安装包中的第三方库独立打包生成动态链接文件(dynamic link library,dll)。
本实施方式中,所述服务器1中存储有安装包。所述安装包包括所使用的第三方库信息、HTML模板文件、共享库函数文件、动态链接文件及各个功能模块文件。其中,所述动态链接文件为共享函数库的可执行文件,用于使进程可以调用不属于进程可执行代码的函数。
本实施方式中,所述打包模块401通过webpack工具将安装包所使用的第三方库独立打包成一个动态链接文件。所述第三方库为一开源库。所述生成的动态链接文件内容在较长的一段时间内不会发生改变。
所述路径插入模块402用于将生成的动态链接文件的路径插入到安装包中的HTML模板文件中,以使所述HTML模板文件对应的页面在启动时加载所述动态链接文件。
本实施方式中,通过将安装包中的第三方库独立打包后拆分生成动态链接文件及将生成的动态链接文件的路径插入到安装包中的HTML模板文件中可以大量减少安装包文件的体积。
所述计算模块403用于对安装包中的功能模块文件采用MD5(Message DigestAlgotithm 5,信息-摘要算法5)算法计算出功能模块文件的MD5值。
本实施方式中,所述计算模块403通过信息-摘要算法5计算所述功能模块文件的MD5哈希值,其中所述MD5哈希值为一128位的散列值且不同的功能模块文件文件通过信息-摘要算法5计算出的MD5哈希值是不同的。如此,本发明通过比较两个功能模块文件文件对应的MD5哈希值是否相同,可以确定两个功能模块文件的内容是否相同。
所述压缩模块404用于对安装包的共享函数库文件进行压缩处理。
本实施方式中,所述压缩模块404在对安装包的共享函数库文件进行压缩处理时首先获取安装包内共享函数库文件对应的初始压缩包,及解压所述初始压缩包得到共享函数库文件;然后调用预置压缩工具对所述共享函数库文件进行压缩得到目标压缩包;最后将所述目标压缩包储存至所述安装包的预置位置,并删除所述初始压缩包,从而有效减小共享函数库文件对压缩包的占用空间大小,减小安装包的大小,进而减少传输过程中产生的流量并节省网络传输流量资源。
具体的,请参考图4,所示为本发明一实施方式中压缩模块404的结构示意图。所述压缩模块404包括获取子模块4041、解压子模块4042、压缩子模块4043、存储子模块4044。
所述获取子模块4041用于获取安装包中的共享函数库文件对应的初始压缩包。
在一实施方式中,所述安装包包括apk安装包。所述获取子模块4041在一预设编译平台上中通过aapt对资源文件进行编译形成二进制文件,并当所有的资源文件编译完成后将打包形成apk安装包。其中,预设编译平台为Android编译平台。当应用程序有共享函数库文件的情况下,通常采用Android编译平台内置默认的Deflate算法压缩共享函数库文件,并将共享函数库文件压缩后存储在apk安装包的libs中。本实施方式中,上述初始压缩包为apk安装包的libs中共享函数库文件通过Deflate算法压缩得到的压缩文件。
所述解压子模块4042用于解压所述初始压缩包得到共享函数库文件。
本实施方式中,当获取到上述apk安装包的libs中存在初始压缩包时,所述解压子模块4042通过对应的压缩工具对初始压缩包进行解压,以还原共享函数库文件。具体地,本实施方式中,上述对压缩工具所采用的压缩算法可以根据实际需要进行设置,在此不做进一步地限定。例如,可以采用Deflate算法,具体地,所述7-Zip压缩工具应用了LZMA(Lempel-Ziv-Markov chain-Algorithm)算法,所述LZMA算法是Deflate算法和LZ77算法改良和优化后的压缩算法。在其他实施例中,还可以直接采用Deflate算法对初始压缩包进行解压处理,以得到共享函数库文件。
所述压缩子模块4043用于调用预置压缩工具对所述共享函数库文件进行压缩得到目标压缩包。
所述预置压缩工具的形式可以根据实际实际需要进行设置,但所述预置压缩工具的压缩比要大于上述Deflate算法的压缩比。所述压缩比是指压缩前与压缩后的文件所占的磁盘空间比值,其中压缩比越大,压缩效果越好,压缩后的体积越小。本实施方式中,所述压缩子模块4043通过上述预置压缩工具压缩后的目标压缩包小于上述初始压缩包。优选地,所述预置压缩工具可以为7-Zip压缩工具,所述7-Zip压缩工具中应用了LZMA算法。
所述存储子模块4044用于将所述目标压缩包存储至所述安装包的预置位置,并删除所述初始压缩包。
本实施方式中,上述预置位置的路径可以根据实际需要进行设置,例如,优选地,可以放在apk安装包的assets目录下。具体地,所述存储子模块4044在对所述共享函数库文件进行压缩的过程中对是否压缩成功进行判断,当压缩出错时,则不进行压缩包替换,当成功压缩得到上述目标压缩包时,则将目标压缩包储存至apk安装包的assets目录下,然后删除初始压缩包。在本实施方式中,由于在将目标压缩包储存至所述安装包的预置位置后,删除初始压缩包,从而有效保证了安装包的完整性,防止了由于在压缩得到目标压缩包时发生错误,影响后续安装所述apk安装包时无法正常加载共享函数。
所述接收模块405用于接收客户端3发送的安装包下载请求信息。
在一实施方式中,客户端3在接收到用户发出的安装包下载指令后向服务器1发送安装包下载请求信息。在另一实施方式中,客户端3根据预设的时间间隔产生安装包下载的触发信息,并根据生成的安装包触发信息向服务器1发送安装包下载请求信息。需要说明的是,由于服务器1的安装包可能在不断更新,因此用户可以预先设置一安装包下载的时间间隔(例如一周一次),在达到所述下载时间间隔时,客户端3自动向服务器1发送安装包下载请求信息。其中,所述下载请求信息中包含安装包唯一标识符等信息。
所述编译模块406用于根据接收的所述安装包下载请求信息获取所述安装包以及与所述安装包相关的动态链接文件,并对获取的所述动态链接文件进行编译以减小所述动态链接文件的大小。
在一实施方式中,为了提高下载的效率,服务器1可以预先将所述安装包以及与所述安装包相关的动态链接文件存储至同一路径下。
在一实施方式中,所述编译模块406对获取的所述动态链接文件中的导出函数进行编译修饰,并对编译修饰后的所述导出函数添加编译选项以减小所述动态链接文件的大小。为了方便其他动态链接文件或应用程序调用所述动态链接文件中的函数,所述编译模块406对获取的所述动态链接库中的导出函数进行如下编译修饰attribute_((visibility(“default”))),并对编译修饰后的所述导出函数添加如下所示编译选项LOCAL_CPPFLAGS:=-fvisibility=hidden-fvisibility-inlines-hidden;添加编译选项后的导出函数将被保留在所述动态链接文件中,未添加编译选项的函数将会被删除或者只保留函数名称,从而减少所述动态链接文件的大小。
本实施方式中,动态链接文件中一般包括导出函数和私有函数,所述导出函数为外部可执行程序访问的函数,所述私有函数为动态链接文件中的内部函数,不能为外部可执行程序所访问。
在另一实施方式中,所述编译模块406对获取的所述动态链接文件进行编译,使得编译后的所述动态链接文件中只包含导出表,所述导出表中包含所有可导出的函数名称。为了减小所述动态链接文件的大小,但又不影响减小后的动态链接文件的功能,本实施方式中对所述动态链接文件进行编译,使得编译后的所述动态链接文件中只包含含有函数名称的导出表。本实施方式中,虽然编译后所述动态链接文件中只包含含有函数名称的导出表,但依赖于所述动态链接文件的其他动态链接文件或者应用程序仍能够启动,因为动态链接文件或者应用程序在启动时,主要查找所需的函数存不存在,若存在,则启动。
所述发送模块407用于将编译后的所述动态链接文件与所述安装包打包后发送给所述客户端3。
本实施方式中,由于服务器1中的安装包可能在不断更新,为了节省下载流量及提高下载效率,本实施方式中所述发送模块308还可以将更新部分的安装包作为另一压缩包,在接收到包含时间戳(所述时间戳用于表示安装包下载的时间)的安装包下载请求信息后,所述发送模块308根据所述时间戳判断是否有更新部分的安装包,如果有,则将更新部分的安装包以及减小后的所述动态链接文件打包后发送给所述客户端3。客户端3在接收到服务器1返回的所述安装包,并在客户端3的应用程序需要调用所述安装包中动态链接文件中的函数且所述动态链接文件中不存在所述函数或者仅存在所述函数的函数名称时,输出提示信息,提示用户下载完整的动态链接文件。
本发明实施方式中客户端3在下载安装包时,服务器1可以通过减少与所述安装包相关的动态链接文件的大小,从而减少下载时消耗的时间以及流量,提高下载效率。
本实施方式中,所述发送模块308将减小后的所述动态链接文件与所述安装包打包后发送给所述客户端3之后,所述客户端3用于:识别安装包中功能模块文件的MD5值,并判断是否已经存储有所述MD5值;当确定客户端3中不存在所述MD5值时将与所述MD5值对应的功能文件进行缓存;当确定客户端3中存在所述MD5值时不将MD5值对应的功能文件进行缓存。
本实施方式中,当确定客户端3中不存在所述MD5值时,则表示客户端3中第一次接收到MD5值对应的功能文件,当定客户端3中存在所述MD5值时,则表示客户端3之前已经接收到所述MD5值对应的功能文件。
实施例三
图5为本发明电子设备7较佳实施例的示意图。
所述电子设备7包括存储器71、处理器72以及存储在所述存储器71中并可在所述处理器72上运行的计算机程序73。所述处理器72执行所述计算机程序73时实现上述安装包下载方法实施例中的步骤,例如图2所示的步骤201~207。或者,所述处理器42执行所述计算机程序43时实现上述装置实施例中各模块/单元的功能,例如图3中的模块401~407。
示例性的,所述计算机程序73可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器71中,并由所述处理器72执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,所述指令段用于描述所述计算机程序73在所述电子设备7中的执行过程。例如,所述计算机程序73可以被分割成图3中的打包模块401、路径插入模块402、计算模块403、压缩模块404、接收模块405、编译模块406、发送模块407,各模块具体功能参见实施例二。
所述电子设备7可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。本领域技术人员可以理解,所述示意图仅仅是电子设备7的示例,并不构成对电子设备7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述电子设备7还可以包括输入输出设备、网络接入设备、总线等。
所称处理器72可以是中央处理模块(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者所述处理器72也可以是任何常规的处理器等,所述处理器72是所述电子设备7的控制中心,利用各种接口和线路连接整个电子设备7的各个部分。
所述存储器71可用于存储所述计算机程序73和/或模块/单元,所述处理器72通过运行或执行存储在所述存储器71内的计算机程序和/或模块/单元,以及调用存储在存储器71内的数据,实现所述计电子设备7的各种功能。所述存储器71可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备4的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器41可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
所述电子设备7集成的模块/单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,所述计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
在本发明所提供的几个实施例中,应所述理解到,所揭露的电子设备和方法,可以通过其它的方式实现。例如,以上所描述的电子设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
另外,在本发明各个实施例中的各功能模块可以集成在相同处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在相同模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他模块或步骤,单数不排除复数。电子设备权利要求中陈述的多个模块或电子设备也可以由同一个模块或电子设备通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
Claims (10)
1.一种安装包下载方法,其特征在于,所述方法包括:
将安装包中的第三方库独立打包生成动态链接文件;
将生成的动态链接文件的路径插入到所述安装包中的HTML模板文件中,以使所述HTML模板文件的页面在启动时加载所述动态链接文件;
对所述安装包中的功能模块文件采用MD5算法计算出所述功能模块文件的MD5值;
接收客户端发送的安装包下载请求信息;
根据接收的所述安装包下载请求信息获取所述安装包以及与所述安装包相关的动态链接文件,并对获取的所述动态链接文件进行编译以减小所述动态链接文件的大小;及
将编译后的所述动态链接文件与所述安装包打包后发送给所述客户端。
2.如权利要求1所述的安装包下载方法,其特征在于,所述方法还包括:
所述客户端识别所述安装包中的功能模块文件的MD5值,并判断是否已经存储有所述MD5值;
当确定所述客户端中不存在所述MD5值时将与所述MD5值对应的功能文件进行缓存;及
当确定所述客户端中存在所述MD5值时不将与MD5值对应的功能文件进行缓存。
3.如权利要求1所述的安装包下载方法,其特征在于,所述将安装包中的第三方库独立打包生成动态链接文件包括:
通过webpack工具将所述安装包所使用的第三方库独立打包成一个动态链接文件。
4.如权利要求1所述的安装包下载方法,其特征在于,所述方法还包括:
对所述安装包的共享函数库文件进行压缩处理。
5.如权利要求4所述的安装包下载方法,其特征在于,所述对所述安装包的共享函数库文件进行压缩处理还包括:
获取所述安装包中的共享函数库文件对应的初始压缩包;
解压所述初始压缩包得到所述共享函数库文件;
调用预置压缩工具对所述共享函数库文件进行压缩得到目标压缩包;及
将所述目标压缩包存储至所述安装包的预置位置,并删除所述初始压缩包。
6.如权利要求5所述的安装包下载方法,其特征在于,所述预置压缩工具为7-Zip压缩工具。
7.如权利要求1所述的安装包下载方法,其特征在于,所述下载请求信息中包含安装包唯一标识符信息。
8.一种安装包下载装置,其特征在于,所述装置包括:
打包模块,用于将安装包中的第三方库独立打包生成动态链接文件;
路径插入模块,用于将生成的动态链接文件的路径插入到所述安装包中的HTML模板文件中,以使所述HTML模板文件的页面在启动时加载所述动态链接文件;
计算模块,用于对所述安装包中的功能模块文件采用MD5算法计算出所述功能模块文件的MD5值;
接收模块,用于接收客户端发送的安装包下载请求信息;
编译模块,用于根据接收的所述安装包下载请求信息获取所述安装包以及与所述安装包相关的动态链接文件,并对获取的所述动态链接文件进行编译以减小所述动态链接文件的大小;及
发送模块,用于将编译后的所述动态链接文件与所述安装包打包后发送给所述客户端。
9.一种电子设备,其特征在于:所述电子设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-7中任一项所述安装包下载方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述安装包下载方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811537802.0A CN109831476A (zh) | 2018-12-15 | 2018-12-15 | 安装包下载方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811537802.0A CN109831476A (zh) | 2018-12-15 | 2018-12-15 | 安装包下载方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109831476A true CN109831476A (zh) | 2019-05-31 |
Family
ID=66858916
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811537802.0A Pending CN109831476A (zh) | 2018-12-15 | 2018-12-15 | 安装包下载方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109831476A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110321122A (zh) * | 2019-05-24 | 2019-10-11 | 中国平安人寿保险股份有限公司 | 浏览器应用的开发方法及相关设备 |
CN111782302A (zh) * | 2020-07-13 | 2020-10-16 | 腾讯科技(深圳)有限公司 | 进程更新方法和装置、存储介质及电子设备 |
CN111783017A (zh) * | 2020-07-23 | 2020-10-16 | 北京斗米优聘科技发展有限公司 | 一种h5页面构建方法、装置、电子设备及其计算机可读存储介质 |
CN111813423A (zh) * | 2020-08-31 | 2020-10-23 | 腾讯科技(深圳)有限公司 | 应用安装包处理方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110047594A1 (en) * | 2008-10-21 | 2011-02-24 | Lookout, Inc., A California Corporation | System and method for mobile communication device application advisement |
CN102833350A (zh) * | 2012-09-11 | 2012-12-19 | 优视科技有限公司 | WebApp更新的处理方法和处理装置 |
CN103345405A (zh) * | 2013-06-09 | 2013-10-09 | 贝壳网际(北京)安全技术有限公司 | 应用程序的启动方法、装置和客户端 |
CN104156225A (zh) * | 2013-05-14 | 2014-11-19 | 腾讯科技(深圳)有限公司 | 一种安装包的下载方法、系统及服务器 |
CN106325896A (zh) * | 2015-06-18 | 2017-01-11 | 腾讯科技(深圳)有限公司 | 安装包的共享函数库文件处理方法及装置 |
-
2018
- 2018-12-15 CN CN201811537802.0A patent/CN109831476A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110047594A1 (en) * | 2008-10-21 | 2011-02-24 | Lookout, Inc., A California Corporation | System and method for mobile communication device application advisement |
CN102833350A (zh) * | 2012-09-11 | 2012-12-19 | 优视科技有限公司 | WebApp更新的处理方法和处理装置 |
CN104156225A (zh) * | 2013-05-14 | 2014-11-19 | 腾讯科技(深圳)有限公司 | 一种安装包的下载方法、系统及服务器 |
CN103345405A (zh) * | 2013-06-09 | 2013-10-09 | 贝壳网际(北京)安全技术有限公司 | 应用程序的启动方法、装置和客户端 |
CN106325896A (zh) * | 2015-06-18 | 2017-01-11 | 腾讯科技(深圳)有限公司 | 安装包的共享函数库文件处理方法及装置 |
Non-Patent Citations (1)
Title |
---|
啃先生: "Webpack 打包第三方代码库", 《HTTPS://SEGMENTFAULT.COM/A/1190000007498471/》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110321122A (zh) * | 2019-05-24 | 2019-10-11 | 中国平安人寿保险股份有限公司 | 浏览器应用的开发方法及相关设备 |
CN111782302A (zh) * | 2020-07-13 | 2020-10-16 | 腾讯科技(深圳)有限公司 | 进程更新方法和装置、存储介质及电子设备 |
CN111783017A (zh) * | 2020-07-23 | 2020-10-16 | 北京斗米优聘科技发展有限公司 | 一种h5页面构建方法、装置、电子设备及其计算机可读存储介质 |
CN111813423A (zh) * | 2020-08-31 | 2020-10-23 | 腾讯科技(深圳)有限公司 | 应用安装包处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109831476A (zh) | 安装包下载方法、装置、电子设备及存储介质 | |
CN104461504B (zh) | 一种终端应用程序的管理方法 | |
CN109857454B (zh) | 安装包生成与缓存方法、装置、电子设备及存储介质 | |
US20150006475A1 (en) | Data deduplication in a file system | |
CN105302587B (zh) | 数据更新方法及装置 | |
CN106970816B (zh) | 一种软件升级处理方法、装置及音频播放设备 | |
CN103188097A (zh) | 一种实现补丁管理的方法、装置及系统 | |
CN104852971B (zh) | 一种插件式协议装置及基于插件式协议的数据通信方法 | |
CN104156225A (zh) | 一种安装包的下载方法、系统及服务器 | |
CN108959122A (zh) | 一种升级包下载的保存方法、装置和终端 | |
CN112506584B (zh) | 资源文件加载方法、装置、设备、存储介质以及产品 | |
CN104038520A (zh) | 一种多版本分布式资源管理方法和系统 | |
CN105049514A (zh) | 一种文件下载方法和装置 | |
CN114185491A (zh) | 一种分区文件的下载方法、装置、存储介质及计算机设备 | |
EP3506599B1 (en) | Method for synchronizing contact information, apparatus and medium | |
CN110888658B (zh) | 应用程序中功能模块的动态化方法、装置及存储介质 | |
CN104182532B (zh) | 终端文件的清理方法、装置及终端 | |
CN106325896A (zh) | 安装包的共享函数库文件处理方法及装置 | |
CN107025122B (zh) | 一种轻应用接入方法及系统 | |
CN114143377B (zh) | 资源请求的配置方法、服务端、客户端、设备和存储介质 | |
CN108008984A (zh) | 一种资源文件下载更新方法及装置 | |
CN102916993B (zh) | 一种网络硬盘数据更新方法以及装置 | |
CN111796878B (zh) | 一种应用于单页应用的资源拆分、加载方法和装置 | |
CN111176679B (zh) | 一种应用程序更新方法和装置 | |
CN114945026A (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: 20190531 |