CN114090070A - 应用程序安装包文件处理方法及电子设备 - Google Patents
应用程序安装包文件处理方法及电子设备 Download PDFInfo
- Publication number
- CN114090070A CN114090070A CN202111146743.6A CN202111146743A CN114090070A CN 114090070 A CN114090070 A CN 114090070A CN 202111146743 A CN202111146743 A CN 202111146743A CN 114090070 A CN114090070 A CN 114090070A
- Authority
- CN
- China
- Prior art keywords
- file
- target
- files
- compressed
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了应用程序安装包文件处理方法及电子设备,所述方法包括:从与安装目标应用程序相关的文件中确定多个目标文件,并利用第一压缩算法对所述目标文件进行压缩,得到多个压缩文件;将所述压缩文件修改为动态链接库类型的文件,并转移到动态链接库目录中;将所述目标应用程序的代码文件中与加载所述目标文件相关的代码配置为自定义加载类;利用第二压缩算法,对所述动态链接库目录中的文件、代码文件以及与安装所述目标应用程序相关的其他文件进行压缩,生成所述目标应用程序的安装包文件。通过本申请实施例,能够进一步优化安装包的体积,同时可以降低对应用程序运行效率造成的影响。
Description
技术领域
本申请涉及应用程序安装包技术领域,特别是涉及应用程序安装包文件处理方法及电子设备。
背景技术
随着应用程序中功能的增加,会导致应用程序安装文件的体积增大。而如果一个应用的安装文件体积比较大,则至少可能带来以下几点影响:第一,下载转化率低,通常而言,用户比较倾向于选择体积比较小的安装包进行下载,因此,安装包的体积越小,对应的下载率越高。另外,应用程序在进行大版本更新时通常会流失用户,安装包越大,则流失比例越大。第二,在需要对应用程序进行推广等场景中,具体的推广平台一般按照流量进行计费,因此,安装包体积越大,则推广成本越高。
因此,如何优化安装包体积是一个很重要的问题。现有技术中优化安装包体积的方式通常是对资源文件或者第三方开源库的代码进行优化。例如,对于资源文件的优化主要包括在图片文件的格式的选择(对于没有透明度需求的图片,则选择jpg和jpeg,相对png的文件体积更小)、图片的压缩、重复图片的删除等。第三方开源库方法的优化主要包括裁剪掉第三方开源库的一些代码等。
但是,在以上各种优化方式的基础上,如何进一步优化安装包的体积,成为需要本领域技术人员解决的技术问题。
发明内容
本申请提供了应用程序安装包文件处理方法及电子设备,能够进一步优化安装包的体积,同时可以降低对应用程序运行效率造成的影响。
本申请提供了如下方案:
一种应用程序安装包文件处理方法,包括:
从与安装目标应用程序相关的文件中确定多个目标文件,并利用第一压缩算法对所述目标文件进行压缩,得到多个压缩文件;
将所述压缩文件修改为动态链接库类型的文件,并转移到动态链接库目录中;
将所述目标应用程序的代码文件中与加载所述目标文件相关的代码配置为自定义加载类;
利用第二压缩算法,对所述动态链接库目录中的文件、代码文件以及与安装所述目标应用程序相关的其他文件进行压缩,生成所述目标应用程序的安装包文件;
其中,所述目标应用程序被安装在终端设备中后,由操作系统根据所述第二压缩算法,对所述安装包文件中的动态链接库类型的文件进行解压,并保存在所述终端设备的目标目录中;
所述自定义加载类用于在所述目标应用程序的运行阶段,如果需要加载所述目标文件,则从所述终端设备的目标目录中定位到对应的文件,并根据所述第一压缩算法对定位到的文件进行解压处理后进行加载。
其中,所述自定义加载类还用于,在所述目标应用程序的运行阶段,如果是首次加载某目标文件,则将解压得到的目标文件保存在临时目录下,以便在后续需要加载该目标文件时,从所述临时目录对所述目标文件进行加载。
其中,所述将所述压缩文件修改为动态链接库类型的文件,包括:
通过修改所述压缩文件的扩展名,将所述压缩文件修改为动态链接库类型的文件。
其中,所述多个压缩文件中包括:将单个目标文件进行压缩后,得到的与该单个目标文件对应的压缩文件,该压缩文件与对应的目标文件具有相同的主文件名;
所述自定义加载类具体用于,根据所需加载的目标文件的主文件名,从所述终端设备的目标目录中确定与该主文件名对应的文件。
其中,所述多个压缩文件中包括:将所述多个目标文件中的部分目标文件进行合并压缩,生成的同一个压缩文件;
所述方法还包括:
生成配置文件,所述配置文件用于记录压缩文件的主文件名与多个目标文件的主文件名之间的对应关系;
所述自定义加载类具体用于,根据所需加载的目标文件的主文件名查询所述配置文件,确定对应的压缩文件的主文件名,并从所述终端设备的目标目录中确定该压缩文件的主文件名对应的文件。
其中,所述自定义加载类具体用于,将从所述终端设备的目标目录中定位到的文件的类型修改回压缩文件类型,并根据所述第一压缩算法进行解压处理。
其中,所述目标文件包括资源类文件。
其中,所述第二压缩算法为所述操作系统为安装包指定使用的压缩算法;
所述第一压缩算法的压缩率高于所述第二压缩算法。
一种应用程序安装包文件处理装置,包括:
第一压缩单元,用于从与安装目标应用程序相关的文件中确定多个目标文件,并利用第一压缩算法对所述目标文件进行压缩,得到多个压缩文件;
转移单元,用于将所述压缩文件修改为动态链接库类型的文件,并转移到动态链接库目录中;
代码配置单元,用于将所述目标应用程序的代码文件中与加载所述目标文件相关的代码配置为自定义加载类;
第二压缩单元,用于利用第二压缩算法,对所述动态链接库目录中的文件、代码文件以及与安装所述目标应用程序相关的其他文件进行压缩,生成所述目标应用程序的安装包文件;
其中,所述目标应用程序被安装在终端设备中后,由操作系统根据所述第二压缩算法,对所述安装包文件中的动态链接库类型的文件进行解压,并保存在所述终端设备的目标目录中;
所述自定义加载类用于在所述目标应用程序的运行阶段,如果需要加载所述目标文件,则从所述终端设备的目标目录中定位到对应的文件,并根据所述第一压缩算法对定位到的文件进行解压处理后进行加载。
一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任一项所述的方法的步骤。
一种电子设备,包括:
一个或多个处理器;以及
与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行前述任一项所述的方法的步骤。
根据本申请提供的具体实施例,本申请公开了以下技术效果:
通过本申请实施例,在为目标应用程序构建安装包时,可以确定出一些文件作为目标文件,对于这种目标文件,可以首先利用第一压缩算法对所述目标文件进行压缩,得到多个压缩文件,并将所述压缩文件修改为动态链接库类型的文件后,转移到动态链接库目录中。并且,还可以将所述目标应用程序的代码文件中与加载所述目标文件相关的代码配置为自定义加载类。之后,再利用第二压缩算法,对所述动态链接库目录中的文件、代码文件以及与安装所述目标应用程序相关的其他文件进行压缩,生成所述目标应用程序的安装包文件。这样,由于将一部分文件进行了两次压缩,因此,可以减小安装包体积。同时,由于将进行第一次压缩得到的压缩文件修改为动态链接库类型,然后再与其他文件一起进行第二次压缩后生成安装包,因此,在安装过程中,可以由操作系统自动将其从安装包中解压出来,并单独保存。这样,具体应用程序运行过程中,如果需要加载上述目标文件,则只需要通过自定义加载类执行一次解压操作即可,因此,可以降低对应用程序运行效率造成的影响。
其中,为了进一步提升运行效率,具体的自定义加载类还可以在所述目标应用程序的运行阶段,如果是首次加载某目标文件,则将解压得到的目标文件保存在临时目录下,以便在后续需要加载该目标文件时,从所述临时目录对所述目标文件进行加载即可,而不必每次加载时都执行一次解压操作。
当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的系统架构的示意图;
图2是本申请实施例提供的方法的流程图;
图3是本申请实施例提供的装置的示意图;
图4是本申请实施例提供的电子设备的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。
为了便于理解本申请实施例提供的技术方案,下面对一些基础知识进行简单的介绍。首先,对于应用程序的安装包,其中可以包括应用程序安装的所有文件。例如,对于安卓(Android)操作系统中的应用程序而言,安装应用程序所需的文件通常包括:应用程序的代码文件,动态链接库文件,资源类文件,签名文件等。
其中,动态链接库文件是为了实现代码的重用是出现的,它们是一些独立的文件,其中包含能被可执行程序或其他动态链接库调用来完成某些工作的函数。动态链接库通常都是不能直接运行的,只有在其他模块调用动态链接库中的函数时,它才发挥作用。如果同一应用程序中有多个服务或者多个功能模块需要使用同一个动态链接库,则只需要加载一份到内存中共享,因此,动态链接库也称共享库。
资源类文件主要对应应用程序运行过程中所需的图片、视频、音频等各类资源。
在传统的方案中,通常可以通过安装包构建工具实现对应用程序安装包的构建。这种工具在具体进行应用程序安装包构建时,在完成编译、文件优化(例如,动态链接库文件中关于调试用的符号表等内容的裁剪等)等处理后,可以将各类文件统一进行压缩,封装在同一个压缩文件中(通常需要使用操作系统规定的压缩算法进行压缩,例如,对于安卓系统中的应用程序,需要压缩成zip格式的安装包,等等),该压缩文件也即应用程序的安装包文件。之后可以将安装包文件进行发布,用户可以从具体的应用市场等平台中进行下载安装。
在本申请实施例中,为了减小安装包的体积,可以首先使用一种自选的压缩算法(例如,可以称为第一压缩算法),对其中部分文件作为目标文件(例如,主要可以是资源类文件)进行压缩,然后再与其他文件一起,使用操作系统指定的压缩算法(例如,可以称为第二压缩算法)进行压缩,生成最终的安装包文件。通过这种方式,由于对其中的目标文件进行了两次压缩,其中使用的自选压缩算法还可以具有更高的压缩率等特点,因此,可以减小安装包的体积。
但是,本申请发明人在实现本申请的过程中发现,如果直接将目标文件先利用第一压缩算法进行压缩,再与其他文件一起利用第二压缩算法压缩成安装包文件,则在应用程序运行过程中,如果需要加载这种目标文件,则需要执行两次解压操作。也即,需要首先利用第二压缩算法从安装包文件中解压并提取出该目标文件,当然,此时,该目标文件仍然处于压缩状态,因此,还需要再利用第一压缩算法对具体目标文件对应的压缩文件进行解压,此时才能加载该目标文件。显然,这种方式会导致应用程序的运行效率受到影响。
因此,在本申请实施例中,还提供了进一步的改进方案。具体的,在使用第一压缩算法将部分文件进行压缩之后,可以将得到的压缩文件修改为动态链接库类型的文件。由于动态链接库类型的文件具有特殊性,因此,在安装应用程序的过程中,操作系统会对这种文件进行特殊处理。具体的,在具体向某终端设备中安装某应用程序时,操作系统可以将安装包进行部分解压,以此将其拆分成两部分,其中一部分是已经完成解压的动态链接库类型的文件,并将其统一存放在终端设备本地一个单独的目录中。另一部分是仍然处于压缩状态的其他类型的文件。例如,某安装包中包括文件a、b、c、d等等,其中,c、d属于动态链接库类型的文件,a、b是其他类型的文件,则在完成应用程序的安装后,c、d会被解压出来(利用第二压缩算法进行的解压),并单独存放在一个目录中,而a、b则仍然位于压缩包中,并处于被打包压缩的状态。
也就是说,对于动态链接库类型的文件,操作系统会执行将其单独解压出来并保存在一个目录中的操作。而本申请实施例中,将利用第一压缩算法对目标文件进行压缩后得到的压缩文件,在修改为动态链接库类型的文件之后,就可以由操作系统执行第一次的解压处理,也即,完成第二压缩算法对应的解压处理,并与其他真正属于动态链接库类型的文件单独保存在一个目录中。这样,在应用程序运行过程中,如果需要加载某个目标文件,则可以从该目录中进行加载。当然,由于通过第二压缩算法解压后,具体的目标文件仍然处于被第一压缩算法进行压缩的状态,因此,还可以再执行一次解压处理,之后对解压得到的目标文件进行加载即可。也就是说,在本申请实施例中,虽然在构建安装包时,对某些文件进行了两次压缩,但是,在运行状态下,由于操作系统预先将动态链接库类型的文件解压出来,因此,具体的应用代码只需要执行一次解压操作,即可从具体动态链接库类型的文件所在的目录中完成对目标文件的加载。
当然,具体实现时,由于目标文件本身可能是资源文件等,而本申请实施例中,将这种文件对应的压缩文件保存到了动态链接库文件所在的目录中,因此,如果按照操作系统提供的资源文件类型的加载接口,则无法对这种资源文件进行加载。为此,在具体实现时,还可以对具体代码文件中与加载具体目标文件相关的代码配置为自定义加载类,通过该自定义加载类,可以实现从动态链接库文件所在的目录,对这种目标文件的解压以及加载处理。这样,可以在减小安装包体积的同时,降低对应用程序运行效率的影响。
在具体实现时,为了进一步提升应用程序的运行效率,具体的自定义加载类还可以在首次对某个目标文件从动态链接库文件所在目录中进行解压后,将加压后的目标文件保存在一个临时目录中,这样,后续再次需要加载该目标文件时,就可以从该临时目录中进行加载,而不必再重新执行从动态链接库文件所在目录中进行解压的过程。
从系统架构角度而言,本申请实施例提供的功能可以通过安装包构建工具的插件程序形式实现,或者,还可以直接对安装包构建工具的现有功能进行改进,增加本申请实施例提供的相关功能,等等。例如,在一种具体的实现方式下,如图1所示,可以在现有的安装包构建工具中提供压缩工具,这样,在通过该安装包构建工具对应用程序进行安装包构建的过程中,在安装包构建工具内指定需要使用第一压缩算法进行压缩的目标文件,然后,压缩工具便可以使用第一压缩算法将这些目标文件进行压缩,并将得到的压缩文件修改为动态链接库文件类型,并转移到动态链接库文件目录中。另外,还可以对具体代码文件中用于加载目标文件的部分配置为自定义加载类。之后,可以利用第二压缩算法,将动态链接库目录中的文件、代码文件以及其他文件打包到一起,生成安装包文件。
下面对本申请实施例提供的具体实现方案进行详细介绍。
首先,本申请实施例提供了一种应用程序安装包文件处理方法,参见图2,该方法可以包括:
S201:从与安装目标应用程序相关的文件中确定多个目标文件,并利用第一压缩算法对所述目标文件进行压缩,得到多个压缩文件。
其中,具体需要进行两次压缩的目标文件主要可以包括资源类文件,当然,也可以包括其他的文件,并且,也可以对资源类文件中的部分文件进行两次压缩,等等。具体实现时,可以由开发者根据具体的需求,对目标文件进行指定。具体实现时,可以在安装包构建工具中,提供用于指定目标文件的操作选项,开发者可以通过这种操作选项选择具体的目标文件,等等。
在确定出多个目标文件之后,可以首先利用第一压缩算法对所述目标文件进行压缩,以得到多个压缩文件。其中,第一压缩算法可以是任意选择的压缩算法,当然,为了更有效地减小安装包体积,可以选择压缩率比较高的压缩算法。
其中,具体在利用第一压缩算法对多个目标文件进行压缩时,可以将每个目标文件单独压缩为一个压缩文件,或者,还可以将其中的部分目标文件压缩为同一个压缩文件,等等。例如,具体需要压缩的目标文件可能包括a、b、c、d等等,可以将a、b分别使用第一压缩算法进行压缩,得到两个压缩文件,将c、d使用第一压缩算法进行打包压缩,得到一个压缩文件,等等。其中,对于与单个目标文件对应的压缩文件,其主文件名可以与目标文件的主文件名相同,以便于对压缩文件进行定位。而对于对应了多个目标文件的压缩文件,其主文件名则无法与具体某个目标文件的主文件名相同,因此,为了便于进行文件查找定位,还可以另外生成一个配置文件,用于记录压缩文件的主文件名与各个目标文件的主文件名之间的对应关系,以用于在具体加载过程中,对压缩文件进行定位。
S202:将所述压缩文件修改为动态链接库类型的文件,并转移到动态链接库目录中。
在利用第一压缩算法将多个目标文件压缩为多个压缩文件后,在本申请实施例中,还可以将这种压缩文件修改为动态链接库类型的文件,并转移到动态链接库目录中。其中,具体将所述压缩文件修改为动态链接库类型的文件的方式可以有多种,例如,一种方式下,可以直接通过修改所述压缩文件的扩展名,将所述压缩文件修改为动态链接库类型的文件。例如,利用第一压缩算法进行压缩后得到的压缩文件,其扩展名为.7z,为了将其修改为动态链接库类型的文件,可以将这种压缩文件的扩展名修改为.so等。或者,另一种方式下,还可以通过修改压缩文件的文件类型属性信息等方式,来实现对文件类型的修改,等等。当然,这里需要说明的是,在本申请实施例中,虽然将压缩文件的扩展名或者属性信息进行了修改,但是实际上修改后得到的文件并不是真正的动态链接库文件,无法直接作为动态链接库文件来使用。因此,可以称为“伪装”的动态链接库文件,只要使得操作系统能够将这种文件从安装包文件中解压出来即可。
在将压缩文件修改为动态链接库类型的文件之后,可以将这种文件转移到动态链接库目录中。也就是说,对于需要打包进安装包的各类文件,通常也可以有多个目录,每个目录用于存放一个类型的文件,例如,资源类的文件,动态链接库类型的文件,等等。在本申请实施例中,将一些资源类的文件使用第一压缩算法进行压缩,并修改为动态链接库类型之后,可以不再保存在原来的资源类文件对应的目录中,而是改为存放在动态链接库类文件对应的目录中。
S203:将所述目标应用程序的代码文件中与加载所述目标文件相关的代码配置为自定义加载类。
由于本申请实施例中对目标文件的存放路径进行了修改,因此,无法利用操作系统提供的加载类实现对这种目标文件的加载。为此,在本申请实施例中,还可以提供自定义加载类,这样,在目标应用程序的代码文件中具体需要加载所述目标文件的位置,都可以使用该自定义加载类来实现对目标文件的加载。也即,可以将所述目标应用程序的代码文件中与加载所述目标文件相关的代码配置为自定义加载类。
S204:利用第二压缩算法,对所述动态链接库目录中的文件、代码文件以及与安装所述目标应用程序相关的其他文件进行压缩,生成所述目标应用程序的安装包文件。
在完成对目标文件按照第一压缩算法进行压缩并修改为动态链接库类型的文件,以及对代码文件的配置之后,便可以利用第二压缩算法,对所述动态链接库目录中的文件、代码文件以及与安装所述目标应用程序相关的其他文件进行压缩,生成所述目标应用程序的安装包文件。这里的第二压缩算法,可以是具体操作系统指定的用于生成安装包的压缩算法。也即,该第二压缩算法不是任意选择的,而是需要使用操作系统指定的算法。
其中,所述目标应用程序被安装在终端设备中后,操作系统便可以根据所述第二压缩算法,对所述安装包文件中的动态链接库类型的文件进行解压,并保存在所述终端设备的目标目录中。也即,在该目标目录中保存的,都可以是直接以.so等为扩展名的文件。当然,在本申请实施例中,操作系统具体解压得到的动态链接库类型的文件中,包括真正的动态链接库文件,还可以包括“伪装”的动态链接库文件。也即,有的文件虽然以.so为扩展名,但并不是真正的动态链接库文件,而是通过第一压缩算法对目标文件执行压缩处理后得到的压缩文件。
之后,在具体目标应用程序的运行阶段,就可以通过自定义加载类实现对上述目标文件的加载。当然,由于操作系统已经对动态链接库目录中的文件进行了解压,因此,该自定义加载类只需要执行一次解压操作,即可还原具体的目标文件。具体的,如果具体的应用程序需要加载所述目标文件,则该自定义加载类可以从所述终端设备的目标目录中定位到所需加载的文件,当然,在该状态下,该所需加载的文件其实仍然处于压缩状态,因此,还可以根据所述第一压缩算法对定位到的文件进行解压处理,然后再进行加载。
其中,如前文所述,在利用第一压缩算法对多个目标文件进行压缩时,得到的压缩文件可能有两种情况,一种情况是,将单个目标文件进行压缩后,得到的与该单个目标文件对应的压缩文件,此时,该压缩文件与对应的目标文件可以具有相同的主文件名。此时,所述自定义加载类具体可以用于,根据所需加载的目标文件的主文件名,从所述终端设备的目标目录中确定与该主文件名对应的文件。也即,假设需要加载的目标文件的文件名是a.res,则利用第一压缩算法进行压缩后,得到的压缩文件的文件名可以为a.7z(假设第一压缩算法为7z);修改压缩文件的类型后,文件名可以是a.so,等等。可见,在压缩以及修改文件类型的过程中,文件的主文件名都可以是不变的,因此,可以直接根据需要加载的目标文件的主文件名,从保存有动态链接库文件的目标目录中定位到具体所需加载的文件,例如前述a.so。
或者,另一种情况下,可以将多个目标文件中的部分目标文件进行合并压缩,生成的同一个压缩文件,也即,同一个压缩文件其实对应了多个目标文件。对于这种情况,还可以生成配置文件,所述配置文件用于记录压缩文件的主文件名与多个目标文件的主文件名之间的对应关系。该配置文件也可以打包到安装包中。这样,具体的自定义加载类具体可以用于,根据所需加载的目标文件的主文件名查询所述配置文件,确定对应的压缩文件的主文件名,并从所述终端设备的目标目录中确定该压缩文件的主文件名对应的文件。例如,当前需要加载的目标文件是c.res,但是,该c.res与d.res打包成了同一个压缩文件(如,1.7z,之后修改为1.so后保存到动态链接库目录中)。此时,可以在配置文件中记录“1”与“c”、“d”之间的对应关系。这样,自定义加载类可以从该配置文件中读取出与“c”对应的压缩文件主文件名“1”,这样,可以将从保存有动态链接库文件的目标目录中定位到文件名为1.so的文件,然后,可以从该文件中解压出具体的c.res文件,然后对其进行加载即可。
这里需要说明的是,具体实现时,在从所述终端设备的目标目录中定位到于目标文件对应的文件之后,具体的自定义加载类还可以首先将该文件的类型修改回压缩文件类型,例如,将前述1.so修改为1.7z,等等。之后,再根据第一压缩算法,从该压缩文件中解压得到目标文件。
通过上述方式,由于将一部分文件进行了两次压缩,因此,可以减小安装包体积。同时,由于将进行第一次压缩的文件修改为动态链接库类型,然后再与其他文件一起进行第二次压缩后生成安装包,因此,在安装过程中,可以由操作系统自动将其从安装包中解压出来,并单独保存。这样,具体应用程序运行过程中,如果需要加载上述目标文件,则只需要执行一次解压操作即可,因此,可以降低对应用程序运行效率造成的影响。
在具体实现时,为了进一步提升运行效率,该自定义加载类还可以在所述目标应用程序的运行阶段,如果是首次加载某目标文件,则将解压得到的目标文件保存在临时目录下,以便在后续需要加载该目标文件时,从所述临时目录对所述目标文件进行加载即可,而不必每次加载时都执行一次解压操作。这样,具体自定义加载类的执行逻辑可以是,接收到对某个目标文件的加载请求后,可以首先判断该目标文件是否为首次加载,如果是,则可以在动态链接库类型的文件所在的目录中进行文件定位,并执行解压操作后加载,同时可以将该解压后的目标文件保存到临时目录中;如果不是首次加载,则可以直接从临时目录中加载该目标文件。
需要说明的是,本申请实施例中可能会涉及到对用户数据的使用,在实际应用中,可以在符合所在国的适用法律法规要求的情况下(例如,用户明确同意,对用户切实通知,等),在适用法律法规允许的范围内在本文描述的方案中使用用户特定的个人数据。
与前述方法实施例相对应,本申请实施例还提供了一种应用程序安装包文件处理装置,参见图3,该装置可以包括:
第一压缩单元301,用于从与安装目标应用程序相关的文件中确定多个目标文件,并利用第一压缩算法对所述目标文件进行压缩,得到多个压缩文件;
转移单元302,用于将所述压缩文件修改为动态链接库类型的文件,并转移到动态链接库目录中;
代码配置单元303,用于将所述目标应用程序的代码文件中与加载所述目标文件相关的代码配置为自定义加载类;
第二压缩单元304,用于利用第二压缩算法,对所述动态链接库目录中的文件、代码文件以及与安装所述目标应用程序相关的其他文件进行压缩,生成所述目标应用程序的安装包文件;
其中,所述目标应用程序被安装在终端设备中后,由操作系统根据所述第二压缩算法,对所述安装包文件中的动态链接库类型的文件进行解压,并保存在所述终端设备的目标目录中;
所述自定义加载类用于在所述目标应用程序的运行阶段,如果需要加载所述目标文件,则从所述终端设备的目标目录中定位到对应的文件,并根据所述第一压缩算法对定位到的文件进行解压处理后进行加载。
其中,所述自定义加载类还用于,在所述目标应用程序的运行阶段,如果是首次加载某目标文件,则将解压得到的目标文件保存在临时目录下,以便在后续需要加载该目标文件时,从所述临时目录对所述目标文件进行加载。
具体的,所述转移单元具体可以用于:
通过修改所述压缩文件的扩展名,将所述压缩文件修改为动态链接库类型的文件。
其中,所述多个压缩文件中包括:将单个目标文件进行压缩后,得到的与该单个目标文件对应的压缩文件,该压缩文件与对应的目标文件具有相同的主文件名;
所述自定义加载类具体用于,根据所需加载的目标文件的主文件名,从所述终端设备的目标目录中确定与该主文件名对应的文件。
其中,所述多个压缩文件中包括:将所述多个目标文件中的部分目标文件进行合并压缩,生成的同一个压缩文件;
所述装置还包括:
配置文件生成单元,用于生成配置文件,所述配置文件用于记录压缩文件的主文件名与多个目标文件的主文件名之间的对应关系;
所述自定义加载类具体用于,根据所需加载的目标文件的主文件名查询所述配置文件,确定对应的压缩文件的主文件名,并从所述终端设备的目标目录中确定该压缩文件的主文件名对应的文件。
另外,所述自定义加载类具体用于,将从所述终端设备的目标目录中定位到的文件的类型修改回压缩文件类型,并根据所述第一压缩算法进行解压处理。
其中,所述目标文件包括资源类文件。
所述第二压缩算法为所述操作系统为安装包指定使用的压缩算法;
所述第一压缩算法的压缩率高于所述第二压缩算法。
另外,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述方法实施例中任一项所述的方法的步骤。
以及一种电子设备,包括:
一个或多个处理器;以及
与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行前述方法实施例中任一项所述的方法的步骤。
其中,图4示例性的展示出了电子设备的架构,具体可以包括处理器410,视频显示适配器411,磁盘驱动器412,输入/输出接口413,网络接口414,以及存储器420。上述处理器410、视频显示适配器411、磁盘驱动器412、输入/输出接口413、网络接口414,与存储器420之间可以通过通信总线430进行通信连接。
其中,处理器410可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请所提供的技术方案。
存储器420可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器420可以存储用于控制电子设备400运行的操作系统421,用于控制电子设备400的低级别操作的基本输入输出系统(BIOS)。另外,还可以存储网页浏览器423,数据存储管理系统424,以及安装包处理系统425等等。上述安装包处理系统425就可以是本申请实施例中具体实现前述各步骤操作的应用程序。总之,在通过软件或者固件来实现本申请所提供的技术方案时,相关的程序代码保存在存储器420中,并由处理器410来调用执行。
输入/输出接口413用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
网络接口414用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线430包括一通路,在设备的各个组件(例如处理器410、视频显示适配器411、磁盘驱动器412、输入/输出接口413、网络接口414,与存储器420)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器410、视频显示适配器411、磁盘驱动器412、输入/输出接口413、网络接口414,存储器420,总线430等,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本申请方案所必需的组件,而不必包含图中所示的全部组件。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本申请所提供的应用程序安装包文件处理方法及电子设备,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本申请的限制。
Claims (11)
1.一种应用程序安装包文件处理方法,其特征在于,包括:
从与安装目标应用程序相关的文件中确定多个目标文件,并利用第一压缩算法对所述目标文件进行压缩,得到多个压缩文件;
将所述压缩文件修改为动态链接库类型的文件,并转移到动态链接库目录中;
将所述目标应用程序的代码文件中与加载所述目标文件相关的代码配置为自定义加载类;
利用第二压缩算法,对所述动态链接库目录中的文件、代码文件以及与安装所述目标应用程序相关的其他文件进行压缩,生成所述目标应用程序的安装包文件;
其中,所述目标应用程序被安装在终端设备中后,由操作系统根据所述第二压缩算法,对所述安装包文件中的动态链接库类型的文件进行解压,并保存在所述终端设备的目标目录中;
所述自定义加载类用于在所述目标应用程序的运行阶段,如果需要加载所述目标文件,则从所述终端设备的目标目录中定位到对应的文件,并根据所述第一压缩算法对定位到的文件进行解压处理后进行加载。
2.根据权利要求1所述的方法,其特征在于,
所述自定义加载类还用于,在所述目标应用程序的运行阶段,如果是首次加载某目标文件,则将解压得到的目标文件保存在临时目录下,以便在后续需要加载该目标文件时,从所述临时目录对所述目标文件进行加载。
3.根据权利要求1所述的方法,其特征在于,
所述将所述压缩文件修改为动态链接库类型的文件,包括:
通过修改所述压缩文件的扩展名,将所述压缩文件修改为动态链接库类型的文件。
4.根据权利要求1所述的方法,其特征在于,
所述多个压缩文件中包括:将单个目标文件进行压缩后,得到的与该单个目标文件对应的压缩文件,该压缩文件与对应的目标文件具有相同的主文件名;
所述自定义加载类具体用于,根据所需加载的目标文件的主文件名,从所述终端设备的目标目录中确定与该主文件名对应的文件。
5.根据权利要求1所述的方法,其特征在于,
所述多个压缩文件中包括:将所述多个目标文件中的部分目标文件进行合并压缩,生成的同一个压缩文件;
所述方法还包括:
生成配置文件,所述配置文件用于记录压缩文件的主文件名与多个目标文件的主文件名之间的对应关系;
所述自定义加载类具体用于,根据所需加载的目标文件的主文件名查询所述配置文件,确定对应的压缩文件的主文件名,并从所述终端设备的目标目录中确定该压缩文件的主文件名对应的文件。
6.根据权利要求1所述的方法,其特征在于,
所述自定义加载类具体用于,将从所述终端设备的目标目录中定位到的文件的类型修改回压缩文件类型,并根据所述第一压缩算法进行解压处理。
7.根据权利要求1至6任一项所述的方法,其特征在于,
所述目标文件包括资源类文件。
8.根据权利要求1至6任一项所述的方法,其特征在于,
所述第二压缩算法为所述操作系统为安装包指定使用的压缩算法;
所述第一压缩算法的压缩率高于所述第二压缩算法。
9.一种应用程序安装包文件处理装置,其特征在于,包括:
第一压缩单元,用于从与安装目标应用程序相关的文件中确定多个目标文件,并利用第一压缩算法对所述目标文件进行压缩,得到多个压缩文件;
转移单元,用于将所述压缩文件修改为动态链接库类型的文件,并转移到动态链接库目录中;
代码配置单元,用于将所述目标应用程序的代码文件中与加载所述目标文件相关的代码配置为自定义加载类;
第二压缩单元,用于利用第二压缩算法,对所述动态链接库目录中的文件、代码文件以及与安装所述目标应用程序相关的其他文件进行压缩,生成所述目标应用程序的安装包文件;
其中,所述目标应用程序被安装在终端设备中后,由操作系统根据所述第二压缩算法,对所述安装包文件中的动态链接库类型的文件进行解压,并保存在所述终端设备的目标目录中;
所述自定义加载类用于在所述目标应用程序的运行阶段,如果需要加载所述目标文件,则从所述终端设备的目标目录中定位到对应的文件,并根据所述第一压缩算法对定位到的文件进行解压处理后进行加载。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至8任一项所述的方法的步骤。
11.一种电子设备,其特征在于,包括:
一个或多个处理器;以及
与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行权利要求1至8任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111146743.6A CN114090070A (zh) | 2021-09-28 | 2021-09-28 | 应用程序安装包文件处理方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111146743.6A CN114090070A (zh) | 2021-09-28 | 2021-09-28 | 应用程序安装包文件处理方法及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114090070A true CN114090070A (zh) | 2022-02-25 |
Family
ID=80296254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111146743.6A Pending CN114090070A (zh) | 2021-09-28 | 2021-09-28 | 应用程序安装包文件处理方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114090070A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117311853A (zh) * | 2023-11-28 | 2023-12-29 | 深圳市移卡科技有限公司 | Apk文件的处理方法、装置、计算机设备及存储介质 |
-
2021
- 2021-09-28 CN CN202111146743.6A patent/CN114090070A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117311853A (zh) * | 2023-11-28 | 2023-12-29 | 深圳市移卡科技有限公司 | Apk文件的处理方法、装置、计算机设备及存储介质 |
CN117311853B (zh) * | 2023-11-28 | 2024-03-12 | 深圳市移卡科技有限公司 | Apk文件的处理方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112256286B (zh) | 一种应用运行的方法、装置及计算机存储介质 | |
CN104375849A (zh) | 加载内核的方法及装置 | |
CN101694624A (zh) | 处理软件安装包光盘镜像文件的方法及装置 | |
CN110895471A (zh) | 安装包生成方法、装置、介质及电子设备 | |
CN111651219A (zh) | 一种多模块项目配置文件管理的方法及设备 | |
CN108279941A (zh) | 一种应用程序的压缩方法和装置 | |
KR101117165B1 (ko) | 이기종 운영체제 계층 모듈에서 동작하는 웹기반어플리케이션의 연동이 가능한 모바일 단말기용 웹 플랫폼 유닛 | |
CN110489162B (zh) | 安装包so文件精简方法、装置、介质和设备 | |
CN112214250B (zh) | 一种应用程序组件的加载方法和装置 | |
CN113885935A (zh) | 资源打包方法、装置、电子设备及计算机可读存储介质 | |
CN109766123B (zh) | 应用程序封装方法及装置 | |
CN114090070A (zh) | 应用程序安装包文件处理方法及电子设备 | |
CN113138768B (zh) | 应用程序包生成方法、装置、电子设备以及可读存储介质 | |
CN113127000B (zh) | 应用程序组件的编译方法、装置、设备及存储介质 | |
CN102117219A (zh) | 一种客户端生成的方法、系统和终端设备 | |
CN113296781A (zh) | 应用程序安装包文件编译构建方法、装置及电子设备 | |
CN112235132A (zh) | 动态配置服务的方法、装置、介质以及服务器 | |
CN111414154A (zh) | 前端开发的方法、装置、电子设备和存储介质 | |
CN115129360A (zh) | 代码文件管理方法、装置、电子设备及存储介质 | |
CN110502251B (zh) | 应用安装方法及装置 | |
CN111367512B (zh) | 一种应用程序开发中创建Android库模块依赖关系的方法及装置 | |
CN112732365A (zh) | 预装应用程序启动方法、装置、电子设备及存储介质 | |
CN112882698A (zh) | 开发环境的生成方法及装置、计算机存储介质及电子设备 | |
CN111142972A (zh) | 用于扩展应用程序的功能的方法、装置、系统及介质 | |
US7702890B2 (en) | Information processing apparatus and program |
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 |