应用安装包处理方法、应用运行方法及设备与流程

摘要: 本公开涉及计算机,尤其涉及一种应用安装包处理方法、应用运行方法及设备。背景技术:1、在应用预先安装场景中,操作系统或运行时环境通常依赖内存映射机制加载共享对象(...
应用安装包处理方法、应用运行方法及设备与流程

本公开涉及计算机,尤其涉及一种应用安装包处理方法、应用运行方法及设备。

背景技术:

1、在应用预先安装场景中,操作系统或运行时环境通常依赖内存映射机制加载共享对象(shared object,so)文件。由于压缩后的共享对象文件无法被直接内存映射,为保障运行时加载性能,目前通常要求在生成应用安装包的打包过程中,不得对共享对象文件进行压缩。然而,这种方式会增大了应用安装包的体积,进而导致更高的数据传输成本和存储成本。

技术实现思路

1、为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种应用安装包处理方法、应用运行方法及设备。

2、本公开实施例提供了一种应用安装包处理方法,所述方法包括:

3、获取目标应用的第一安装包,所述第一安装包包括多个第一共享对象文件,所述第一共享对象文件用于在所述目标应用运行时提供原生代码;

4、对所述多个第一共享对象文件进行压缩,得到至少一个第二共享对象文件,并基于所述第一共享对象文件与所述第二共享对象文件的关系生成配置信息,所述配置信息指示每个第二共享对象文件对应的第一共享对象文件以及所述第一共享对象文件对应的压缩数据在对应的第二共享对象文件中的位置;

5、利用所述至少一个第二共享对象文件替换所述第一安装包中对应的第一共享对象文件,为所述至少一个第二共享对象文件添加禁止压缩标识,在所述第一安装包中添加所述配置信息,生成所述目标应用的第二安装包,所述禁止压缩标识指示生成所述第二安装包的过程中禁止对所述第二共享对象文件进行压缩。

6、本公开实施例还提供了一种应用运行方法,包括:

7、在基于应用安装包安装目标应用的情况下,响应于所述目标应用首次启动,基于所述应用安装包中的配置信息,对所述应用安装包中的第一共享对象文件进行解压,得到多个第二共享对象文件,所述第二共享对象文件用于在所述目标应用运行时提供原生代码,所述配置信息指示所述第一共享对象文件对应的第二共享对象文件以及所述第二共享对象文件对应的压缩数据在对应的第一共享对象文件中的位置;

8、响应于检测到对用于加载所述目标应用的第二共享对象文件的文件加载函数的调用,拦截所述文件加载函数的执行,并将所述文件加载函数所指向的文件地址更新为解压后的第二共享对象文件的文件地址;

9、通过所述文件加载函数,按照更新后的文件地址,加载对应的第二共享对象文件。

10、本公开实施例还提供了一种应用安装包处理装置,包括:

11、获取模块,用于获取目标应用的第一安装包,所述第一安装包包括多个第一共享对象文件,所述第一共享对象文件用于在所述目标应用运行时提供原生代码;

12、压缩模块,用于对所述多个第一共享对象文件进行压缩,得到至少一个第二共享对象文件,并基于所述第一共享对象文件与所述第二共享对象文件的关系生成配置信息,所述配置信息指示每个第二共享对象文件对应的第一共享对象文件以及所述第一共享对象文件对应的压缩数据在对应的第二共享对象文件中的位置;

13、生成模块,用于利用所述至少一个第二共享对象文件替换所述第一安装包中对应的第一共享对象文件,为所述至少一个第二共享对象文件添加禁止压缩标识,在所述第一安装包中添加所述配置信息,生成所述目标应用的第二安装包,所述禁止压缩标识指示生成所述第二安装包的过程中禁止对所述第二共享对象文件进行压缩。

14、本公开实施例还提供了一种应用运行装置,包括:

15、解压模块,用于在基于应用安装包安装目标应用的情况下,响应于所述目标应用首次启动,基于所述应用安装包中的配置信息,对所述应用安装包中的第一共享对象文件进行解压,得到多个第二共享对象文件,所述第二共享对象文件用于在所述目标应用运行时提供原生代码,所述配置信息指示所述第一共享对象文件对应的第二共享对象文件以及所述第二共享对象文件对应的压缩数据在对应的第一共享对象文件中的位置;

16、更新模块,用于响应于检测到对用于加载所述目标应用的第二共享对象文件的文件加载函数的调用,拦截所述文件加载函数的执行,并将所述文件加载函数所指向的文件地址更新为解压后的第二共享对象文件的文件地址;

17、加载模块,用于通过所述文件加载函数,按照更新后的文件地址,加载对应的第二共享对象文件。

18、本公开实施例还提供了一种电子设备,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现如本公开实施例提供的应用安装包处理方法或应用运行方法。

19、本公开实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行如本公开实施例提供的应用安装包处理方法或应用运行方法。

20、本公开实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如本公开实施例提供的应用安装包处理方法或应用运行方法。

21、本公开实施例提供的方案,将原始安装包中的第一共享对象文件压缩为体积更小的第二共享对象文件,并生成用于表示二者映射关系的配置信息;随后,在生成新安装包时,利用第二共享对象文件替换第一共享对象文件,并添加配置信息,并为第二共享对象文件添加禁止压缩标识,使生成新安装包的过程中(即重新打包过程)跳过对第二共享对象文件的二次压缩,从而让第二共享对象文件以未压缩格式(即已压缩的数据块)直接存入新安装包中,形成应用新的安装包。这样,既满足了厂商对打包过程中共享对象文件不可压缩的规范,同时,减小了新的安装包的体积,同时在后续应用安装时,能够利用所述配置信息将第二共享对象文件准确还原出原始的第一共享对象文件,能够保证应用的正常运行,保证了应用的运行可靠性。

22、应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

1.一种应用安装包处理方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述对所述多个第一共享对象文件进行压缩,得到至少一个第二共享对象文件,包括:

3.根据权利要求2所述的方法,其特征在于,所述文件组合的数量为多个;所述基于所述多个第一共享对象文件分别对应的数据量,对所述多个第一共享对象文件进行分组,得到至少一个文件组合,包括:

4.根据权利要求2所述的方法,其特征在于,所述第一安装包包括多个处理器架构类型分别对应的第一共享对象文件;所述基于所述多个第一共享对象文件分别对应的数据量,对所述多个第一共享对象文件进行分组,得到至少一个文件组合,包括:

5.根据权利要求4所述的方法,其特征在于,所述配置信息还指示所述第二共享对象文件与对应的处理器架构类型之间的映射关系。

6.根据权利要求1所述的方法,其特征在于,所述对所述多个第一共享对象文件进行压缩,得到至少一个第二共享对象文件,并基于所述第一共享对象文件与所述第二共享对象文件的关系生成配置信息之前,所述方法还包括:

7.一种应用运行方法,其特征在于,包括:

8.根据权利要求7所述的方法,其特征在于,所述应用安装包包括多个处理器架构类型分别对应的第一共享对象文件;所述响应于所述目标应用首次启动,基于所述应用安装包中的配置信息,对所述应用安装包中的第一共享对象文件进行解压,得到多个第二共享对象文件,包括:

9.根据权利要求8所述的方法,其特征在于,所述配置信息还指示所述第一共享对象文件与处理器架构类型之间的映射关系;所述基于所述当前设备适配的处理器架构类型,从所述多个处理器架构类型分别对应的第一共享对象文件中,确定当前设备适配的处理器架构类型所对应的第一共享对象文件,包括:

10.根据权利要求8所述的方法,其特征在于,所述基于所述配置信息,对所述当前设备适配的第一共享对象文件进行解压,得到所述当前设备适配的所述多个第二共享对象文件,包括:

11.一种应用安装包处理装置,其特征在于,包括:

12.一种应用运行装置,其特征在于,包括:

13.一种电子设备,其特征在于,所述电子设备包括:

14.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序用于执行权利要求1-6中任一项所述的应用安装包处理方法;或者,以实现权利要求7-10中任一项所述的应用运行方法。

15.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序在被处理器执行时实现权利要求1-6中任一项所述的应用安装包处理方法;或者,以实现权利要求7-10中任一项所述的应用运行方法。