技术简介:
本发明针对传统应用安装包体积大、资源冗余的问题,提出基于用户使用数据的动态裁剪方案。通过采集用户功能使用频率,将非常用资源替换为占位符,仅在安装包中保留核心功能资源,实现按需加载。该方法在保证功能完整性的前提下,显著降低安装包体积,减少存储占用与传输成本,提升应用部署效率。
关键词:应用安装包裁剪,用户数据驱动
1.本发明涉及人工智能技术领域,尤其涉及应用程序安装包的处理方法及装置。
背景技术:2.本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
3.随着手机终端的配置越来越高,用户对应用程序(application,app)的使用体验需求也越来越高。目前在android应用市场上的应用程序种类繁多,涉及的领域范围越来越广,但随之而来的问题也日渐突出,即应用程序安装包,如apk(androidpackage,apk)的体积逐渐增大:游戏类应用程序安装包所占存储空间动辄几个gb,应用类应用程序安装包所占存储空间也达到了几百mb。应用程序安装包被安装到手机终端后,其实际占用的物理空间会更大,这无疑给用户的物理空间造成了极大的压力。应用程序安装包的体积越大,维护成本也越高,且应用程序安装包越大,其编译速度越慢,从而浪费了时间成本。
4.目前,针对应用程序安装包体积大的问题,存在一些关于应用程序安装包的裁剪技术,多数是基于插件化原理,利用java反射技术实现应用程序功能的现用现下载,但该技术的实现条件比较苛刻,容易出现不可预见的错误,导致多数应用程序无法通过该方式实现裁剪,例如某些依赖第三方库的功能,如果第三方库源码发生混淆,反射功能就会失效,也就无法实现插件化裁剪。因此插件化的裁剪技术通用性较差,且开发和维护难度也很高。
技术实现要素:5.本发明实施例提供一种应用程序安装包的处理方法,用以减小应用程序安装包体积大,减少占用物理空间,提高应用程序安装包裁剪的通用性,降低开发和维护成本,该方法包括:
6.获取用户对应用程序中各个功能的使用数据;
7.根据用户对应用程序中各个功能的使用数据,确定用户在应用程序中的常用功能;
8.获取应用程序源代码,其中,应用程序源代码引用的各个资源文件已由对应的占位符替换;
9.将应用程序源代码中对应用户不常用功能的源代码去除,得到应用程序裁剪后的源代码;
10.将应用程序裁剪后的源代码中的占位符以对应的资源文件替换;
11.对应用程序裁剪后的源代码进行应用程序安装包编译,得到应用程序裁剪后的安装包;
12.将应用程序裁剪后的安装包推送给用户。
13.本发明实施例还提供一种应用程序安装包的处理装置,用以减小应用程序安装包体积大,减少占用物理空间,提高应用程序安装包裁剪的通用性,降低开发和维护成本,该
装置包括:
14.使用数据获取模块,用于获取用户对应用程序中各个功能的使用数据;
15.常用功能确定模块,用于根据用户对应用程序中各个功能的使用数据,确定用户在应用程序中的常用功能;
16.源代码获取模块,用于获取应用程序源代码,其中,应用程序源代码引用的各个资源文件已由对应的占位符替换;
17.源代码裁剪模块,用于将应用程序源代码中对应用户不常用功能的源代码去除,得到应用程序裁剪后的源代码;
18.资源文件替换模块,用于将应用程序裁剪后的源代码中的占位符以对应的资源文件替换;
19.裁剪后安装包获取模块,用于对应用程序裁剪后的源代码进行应用程序安装包编译,得到应用程序裁剪后的安装包;
20.裁剪后安装包推送模块,用于将应用程序裁剪后的安装包推送给用户。
21.本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述应用程序安装包的处理方法。
22.本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述应用程序安装包的处理方法。
23.本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述应用程序安装包的处理方法。
24.本发明实施例中,获取用户对应用程序中各个功能的使用数据;根据用户对应用程序中各个功能的使用数据,确定用户在应用程序中的常用功能;获取应用程序源代码,其中,应用程序源代码引用的各个资源文件已由对应的占位符替换;将应用程序源代码中对应用户不常用功能的源代码去除,得到应用程序裁剪后的源代码将应用程序裁剪后的源代码中的占位符以对应的资源文件替换;对应用程序裁剪后的源代码进行应用程序安装包编译,得到应用程序裁剪后的安装包;将应用程序裁剪后的安装包推送给用户。本发明实施例实现了在不影响用户使用的情况下对于不同用户的应用程序安装包的个性化裁剪,符合用户的使用习惯,改善了用户体验,并且应用程序安装包经过裁剪之后体积变小,可以减少用户端物理空间的占用;本发明实施例通过对应用程序安装包的裁剪,减小了应用程序安装包的体积,提高了编译速度,降低了研发维护成本,节约了时间成本;本发明实施例还利用体积较小的占位符暂时代替体积较大的资源文件,提高了裁剪处理的效率,实现简单,通用性较强。
附图说明
25.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
26.图1为本发明实施例中应用程序安装包的处理方法的流程示例图;
27.图2为本发明实施例中将应用程序裁剪后的源代码中的占位符以对应的资源文件替换的一具体实例图;
28.图3为本发明实施例中应用程序安装包的处理装置的结构示意图;
29.图4为本发明实施例中应用程序安装包的处理装置的一具体实例图;
30.图5为本发明实施例中提供的计算机设备的示意图。
具体实施方式
31.为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
32.如前所述,应用程序安装包体积大,不仅占用了用户端较大的物理空间,而且造成了研发维护成本较高,现有的应用程序安装包裁剪技术多数基于插件化原理,当依赖于第三方库的时候,容易出现不可预见的错误,复用性较差。
33.应用程序安装包体积大的根本原因是引用的资源文件过多,资源文件中比较占用应用程序安装包体积的是图片、文本文件以及源文件等。本发明实施例的意图是,首先将应用程序安装包的源代码与资源文件进行完全解耦,即应用程序安装包的源代码在引用资源文件时不再引用资源文件本身,而只是“占位符”而已,该方案既不会出现编译报错,也不会将资源文件提前打包进应用程序安装包中;其次源代码的实现需要将各功能进行模块化,再将各模块运行时需要的真正资源文件和对应的占位符制作成资源映射表存储到数据库中;最后以采集到的用户常用功能的使用数据为基础,从资源映射表中查找资源文件代替“占位符”进行应用程序安装包编译,同时保证用户不使用的功能在源码实现中不会展示给用户。通过以上方式编译出来的应用程序安装包,除用户使用的功能加载了真正的资源文件外,其它功能既不会出现在用户界面中,也不会引用资源文件,从而实现了应用程序安装包的裁剪,大大减少了应用程序安装包的体积。
34.基于以上的发明构思,本发明实施例提出一种应用程度安装包的处理方法,如图1所示,该方法包括:
35.步骤101、获取用户对应用程序中各个功能的使用数据;
36.步骤102、根据用户对应用程序中各个功能的使用数据,确定用户在应用程序中的常用功能;
37.步骤103、获取应用程序源代码,其中,应用程序源代码引用的各个资源文件已由对应的占位符替换;
38.步骤104、将应用程序源代码中对应用户不常用功能的源代码去除,得到应用程序裁剪后的源代码;
39.步骤105、将应用程序裁剪后的源代码中的占位符以对应的资源文件替换;
40.步骤106、对应用程序裁剪后的源代码进行应用程序安装包编译,得到应用程序裁剪后的安装包;
41.步骤107、将应用程序裁剪后的安装包推送给用户。
42.由图1所示流程可以得知,本发明实施例中,获取用户对应用程序中各个功能的使用数据;根据用户对应用程序中各个功能的使用数据,确定用户在应用程序中的常用功能;
获取应用程序源代码,其中,应用程序源代码引用的各个资源文件已由对应的占位符替换;将应用程序源代码中对应用户不常用功能的源代码去除,得到应用程序裁剪后的源代码将应用程序裁剪后的源代码中的占位符以对应的资源文件替换;对应用程序裁剪后的源代码进行应用程序安装包编译,得到应用程序裁剪后的安装包;将应用程序裁剪后的安装包推送给用户。本发明实施例实现了在不影响用户使用的情况下对于不同用户的应用程序安装包的个性化裁剪,符合用户的使用习惯,改善了用户体验,并且应用程序安装包经过裁剪之后体积变小,可以减少用户端物理空间的占用;本发明实施例通过对应用程序安装包的裁剪,减小了应用程序安装包的体积,提高了编译速度,降低了研发维护成本,节约了时间成本;本发明实施例还利用体积较小的占位符暂时代替体积较大的资源文件,提高了裁剪处理的效率,实现简单,通用性较强。
43.具体实施时,在得到用户授权的前提下,首先获取用户需要处理的应用程序中各个功能的使用数据,在一个实施例中,用户对应用程序中各个功能的使用数据包括:用户对应用程序中各个功能的使用频率和/或时长,可以理解,用户对各个功能的使用数据不应只限于本例,可根据实际情况进行具体选择,例如:订单金额、收藏状态。
44.然后根据用户对应用程序中各个功能的使用数据,确定用户在应用程序中的常用功能,在一个实施例中,根据用户对应用程序中各个功能的使用数据,确定用户在应用程序中的常用功能,可以包括:将应用程序中用户使用频率和/或时长超过相应阈值的功能,确定为用户在应用程序中的常用功能。可以理解,确定条件不应只限于本例,可根据实际情况进行具体选择,例如:订单金额超过相应阈值。
45.之后对源代码与资源文件进行解耦。
46.获取应用程序源代码。其中,应用程序源代码引用的各个资源文件可由对应的占位符替换,在一个实施例中,占位符内容为空。
47.之后对应用程序安装包进行裁剪,包括:将应用程序源代码中对应用户不常用功能的源代码去除,得到应用程序裁剪后的源代码。在一个实施例中,将用户使用次数少于2的功能模块对应的源代码去除。
48.之后将应用程序裁剪后的源代码中的占位符以对应的资源文件替换。
49.图2为本发明实施例中将应用程序裁剪后的源代码中的占位符以对应的资源文件替换的一具体实例图,如图2所示,在一个实施例中,将应用程序裁剪后的源代码中的占位符以对应的资源文件替换,可以包括:
50.步骤201、从资源映射表中查找应用程序裁剪后的源代码中的占位符对应的资源文件;资源映射表中存储有占位符与资源文件的对应关系。
51.在一个实施例中,资源映射表中,占位符的密钥标识符与占位符对应的资源文件的密钥标识符相同。资源映射表为记录应用程序源代码所引用的各个资源文件和占位符的对应关系的表格,可以存储在数据库中。
52.在一个实施例中,占位符内容可以为空。
53.应用程序安装包的裁剪完成后,对应用程序裁剪后的源代码进行应用程序安装包编译,得到应用程序裁剪后的安装包,在一个实施例中,对不同的用户,分别对其常用的应用程序功能进行编译,得到不同用户的定制化应用程序版本。
54.最后将应用程序裁剪后的安装包推送给用户,在一个实施例中,对每一个用户推
送定制化版本应用程序,推荐客户进行下载和覆盖安装。
55.本发明实施例中还提供了一种应用程序安装包的处理装置,如下面的实施例所述。由于该装置解决问题的原理与应用程序安装包的处理方法相似,因此该装置的实施可以参见应用程序安装包的处理方法的实施,重复之处不再赘述。
56.图3为本发明实施例中应用程序安装包的处理装置的结构示意图,如图3所示,该装置包括:
57.使用数据获取模块301,可用于获取用户对应用程序中各个功能的使用数据;
58.常用功能确定模块302,可用于根据用户对应用程序中各个功能的使用数据,确定用户在应用程序中的常用功能;
59.源代码获取模块303,可用于获取应用程序源代码,其中,应用程序源代码引用的各个资源文件已由对应的占位符替换;
60.源代码裁剪模块304,可用于将应用程序源代码中对应用户不常用功能的源代码去除,得到应用程序裁剪后的源代码;
61.资源文件替换模块305,可用于将应用程序裁剪后的源代码中的占位符以对应的资源文件替换;
62.裁剪后安装包获取模块306,可用于对应用程序裁剪后的源代码进行应用程序安装包编译,得到应用程序裁剪后的安装包;
63.裁剪后安装包推送模块307,可用于将应用程序裁剪后的安装包推送给用户。
64.在一个实施例中,用户对应用程序中各个功能的使用数据,包括:用户对应用程序中各个功能的使用频率和/或时长;
65.常用功能确定模块302,具体可用于:
66.将应用程序中用户使用频率和/或时长超过相应阈值的功能,确定为用户在应用程序中的常用功能。
67.图4为本发明实施例中应用程序安装包的处理装置的一具体实例图,如图4所示,在一个实施例中,资源文件替换模块305,具体可用于:
68.资源文件查找模块401,可用于从资源映射表中查找应用程序裁剪后的源代码中的占位符对应的资源文件;资源映射表中存储有占位符与资源文件的对应关系。
69.在一个实施例中,资源映射表中,占位符的密钥标识符与占位符对应的资源文件的密钥标识符相同。
70.在一个实施例中,占位符内容可以为空。
71.当然,可以理解的是,上述详细流程还可以有其他变化例,相关变化例均应落入本发明的保护范围。
72.基于上述发明构思,如图5所示,本发明还提出了一种计算机设备500,包括存储器510、处理器520及存储在存储器510上并可在处理器520上运行的计算机程序530,所述处理器520执行所述计算机程序530时实现上述应用程序安装包的处理方法。
73.本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述应用程序安装包的处理方法。
74.本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述应用程序安装包的处理方法。
75.本发明实施例中,获取用户对应用程序中各个功能的使用数据;根据用户对应用程序中各个功能的使用数据,确定用户在应用程序中的常用功能;获取应用程序源代码,其中,应用程序源代码引用的各个资源文件已由对应的占位符替换;将应用程序源代码中对应用户不常用功能的源代码去除,得到应用程序裁剪后的源代码将应用程序裁剪后的源代码中的占位符以对应的资源文件替换;对应用程序裁剪后的源代码进行应用程序安装包编译,得到应用程序裁剪后的安装包;将应用程序裁剪后的安装包推送给用户。本发明实施例实现了在不影响用户使用的情况下对于不同用户的应用程序安装包的个性化裁剪,符合用户的使用习惯,改善了用户体验,并且应用程序安装包经过裁剪之后体积变小,可以减少用户端物理空间的占用;本发明实施例通过对应用程序安装包的裁剪,减小了应用程序安装包的体积,提高了编译速度,降低了研发维护成本,节约了时间成本;本发明实施例还利用体积较小的占位符暂时代替体积较大的资源文件,提高了裁剪处理的效率,实现简单,通用性较强。
76.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
77.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
78.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
79.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
80.以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。