静态库集成方法、装置、电子设备及存储介质与流程

文档序号:24656086发布日期:2021-04-13 21:04阅读:129来源:国知局
静态库集成方法、装置、电子设备及存储介质与流程

1.本发明涉及软件开发技术领域,尤其涉及一种应用程序静态库生成方法、装置、电子设备及存储介质。


背景技术:

2.在一个例子中,某公司app(application,应用程序)工厂项目中涉及app和业务线业务是极为复杂和繁多的,应用程序的业务和底层组件工程数量就多达60+个,每个工程都有对应的静态库。对于指定的某个底层组件poda来说,对其它组件是存在一定的依赖关系的,而对于上层入口app来说,可能只需要poda的部分功能,如业务相关工具库,如果上层app只依赖poda/a功能,但是工具库poda中还有b、c功能,而b、c功能对别的组件有依赖关系,如果上层app直接将poda的静态库podalib集成进来,则会导致此app编译链接出错,因为找不到b、c功能对应的依赖文件。
3.现有两种技术方案:
4.1.上层app直接将podalib集成进去,并将b、c功能依赖的组件也集成进来,然后将依赖组件所依赖的组件集成进来,一直往下分析依赖关系,直到所有的依赖链条上的组件都携带进来。
5.2.将b、c功能拆分出去分别创建新的组件podb、podc,然后生成对应的静态库podblib、podclib,然后上层app只接入podalib。
6.申请人在实现本发明的过程中,发现相关技术中至少存在以下问题:
7.对于方案1,通过将所依赖的组件携带进来,层层分析依赖关系后,app的体积就像是滚雪球一样不断膨胀,携带过多冗余的无用代码。
8.对于方案2,让pod的拆分粒度更细,没有携带冗余的代码,但是多了一些pod,需要更多的维护成本,并且如果拆出去的pod只有一两个文件,这样太细的粒度也不太合适,可能功能上并不完备,导致组件拆分过于泛滥。
9.针对上述问题,目前尚未提出有效的解决技术手段。


技术实现要素:

10.本发明实施例提供一种静态库集成方法、装置、电子设备及存储介质,以解决相关技术中app架构复杂,存在依赖关系组件的静态库占用空间较大,存在冗余文件的问题。
11.为了解决上述技术问题,本发明是这样实现的:
12.第一方面,本发明实施例提供了一种静态库集成方法,所述方法包括:根据目标组件中至少两个组件功能之间的依赖关系确定对应的至少两个组件分片,其中,所述至少两个组件分片相互独立;根据所述至少两个组件分片对所述目标组件对应的组件静态库的组件静态库文件进行组装,以得到至少两个组件分片分别对应的分片静态库文件;对所述至少两个分片静态库文件进行编译,以得到所述至少两个组件分片分别对应的分片静态库。
13.进一步地,根据目标组件中至少两个组件功能之间的依赖关系确定对应的至少两
个组件分片,包括:根据所述目标组件对应的规范文件中的依赖参数确定所述依赖关系。
14.进一步地,根据所述至少两个组件分片对所述目标组件对应的组件静态库的组件静态库文件进行组装,以得到至少两个组件分片分别对应的分片静态库文件,包括:根据所述至少两个组件分片分别对应的依赖参数,对所述组件静态库文件中所述至少两个组件分片分别对应的头文件、资源文件以及静态库文件进行组装。
15.进一步地,对所述至少两个分片静态库文件进行编译,以得到所述至少两个组件分片分别对应的分片静态库,包括:在所述组件分片对应的分片目录中添加所述依赖参数对应的依赖文件;根据所述依赖文件以及所述组件分片对应的分片静态库文件进行编译,以得到所述分片对应的分片静态库。
16.进一步地,在对所述至少两个分片静态库文件进行编译,以得到所述至少两个组件分片分别对应的分片静态库之后,还包括:获取指定组件对应的组件集成参数;根据所述组件集成参数确定至少一个目标组件分片;对所述至少一个组件分片对应的分片静态库进行集成,以得到所述指定组件对应的组件静态库。
17.进一步地,对所述至少一个组件分片对应的分片静态库进行集成,包括:根据所述组件集成参数在所述分片目录的头文件源中添加所述至少一个目标组件分片对应的头文件;根据所述组件集成参数在所述分片目录的源文件中添加所述至少一个目标组件分片对应的资源目录;对所述至少一个目标组件分片对应的静态库文件进行合并,以得到所述指定组件对应的组件静态库。
18.进一步地,对所述至少一个目标组件分片对应的静态库文件进行合并,以得到所述指定组件对应的组件静态库,包括:分离所述至少一个目标组件分片对应的目标分片静态库文件以得到多个分片静态库架构;对所述多个分片静态库架构进行处理,以得到所述多个分片静态库架构对应的多个目标文件;合并所述多个目标文件中相同架构的目标文件,以得到多个组件库;对所述多个组件库进行合并,以得到所述指定组件对应的组件静态库。
19.第二方面,本发明实施例另外提供了一种静态库集成装置,所述装置包括:第一确定单元,用于根据目标组件中至少两个组件功能之间的依赖关系确定对应的至少两个组件分片,其中,所述至少两个组件分片相互独立;组装单元,用于根据所述至少两个组件分片对所述目标组件对应的组件静态库的组件静态库文件进行组装,以得到至少两个组件分片分别对应的分片静态库文件;编译单元,用于对所述至少两个分片静态库文件进行编译,以得到所述至少两个组件分片分别对应的分片静态库。
20.进一步地,所述第一确定单元包括:获取模块,用于根据所述目标组件对应的规范文件中的依赖参数确定所述依赖关系。
21.进一步地,所述组装单元包括:组装模块,用于根据所述至少两个组件分片分别对应的依赖参数,对所述组件静态库文件中所述至少两个组件分片分别对应的头文件、资源文件以及静态库文件进行组装。
22.进一步地,所述编译单元包括:第一处理模块,用于在所述组件分片对应的分片目录中添加所述依赖参数对应的依赖文件;编译模块,用于根据所述依赖文件以及所述组件分片对应的分片静态库文件进行编译,以得到所述分片对应的分片静态库。
23.进一步地,还包括:获取单元,用于在对所述至少两个分片静态库文件进行编译,
以得到所述至少两个组件分片分别对应的分片静态库之后,获取指定组件对应的组件集成参数;第二确定单元,用于根据所述组件集成参数确定至少一个目标组件分片;集成单元,用于对所述至少一个组件分片对应的分片静态库进行集成,以得到所述指定组件对应的组件静态库。
24.进一步地,所述集成单元包括:第二处理模块,用于根据所述组件集成参数在所述分片目录的头文件源中添加所述至少一个目标组件分片对应的头文件;第三处理模块,用于根据所述组件集成参数在所述分片目录的源文件中添加所述至少一个目标组件分片对应的资源目录;合并模块,用于对所述至少一个目标组件分片对应的静态库文件进行合并,以得到所述指定组件对应的组件静态库。
25.进一步地,所述合并模块包括:分离子模块,用于分离所述至少一个目标组件分片对应的目标分片静态库文件以得到多个分片静态库架构;处理子模块,用于对所述多个分片静态库架构进行处理,以得到所述多个分片静态库架构对应的多个目标文件;第一合并子模块,用于合并所述多个目标文件中相同架构的目标文件,以得到多个组件库;第二合并子模块,用于对所述多个组件库进行合并,以得到所述指定组件对应的组件静态库。
26.第三方面,本发明实施例另外提供了一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如前第一方面所述的静态库集成方法的步骤。
27.第四方面,本发明实施例另外提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前第一方面所述的静态库集成方法的步骤。
28.在本发明实施例中,根据目标组件中至少两个组件功能之间的依赖关系确定对应的至少两个组件分片,根据至少两个组件分片对目标组件对应的组件静态库的组件静态库文件进行组装,以得到至少两个组件分片分别对应的分片静态库文件;对至少两个分片静态库文件进行编译,以得到至少两个组件分片分别对应的分片静态库。通过将目标组建的组件静态库进行组装得到多个组件分片对应的分片静态库,实现了对目标组件进行最小粒度的拆分,在app集成时可以进行按需组装目标组件。解决了相关技术中app架构复杂,存在依赖关系的组件静态库占用空间较大,存在冗余文件的问题。
29.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
30.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
31.图1是本发明实施例中的一种静态库集成方法的示意图;
32.图2是本发明实施例中的一种组件分片的集成示意图;
33.图3是本发明实施例中的一种分片静态库编译的示意图;
34.图4是本发明实施例中的一种合并组件静态库的流程图;
35.图5是本发明实施例中的一种合并组件静态库的示意图;
36.图6是本发明实施例中的一种静态库集成装置的结构示意图;
37.图7是本发明实施例中的一种电子设备的硬件结构示意图。
具体实施方式
38.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
39.实施例一
40.在本发明实施例中,提供了一种静态库集成方法,如图1所示,该方法具体可以包括以下步骤:
41.s102,根据目标组件中至少两个组件功能之间的依赖关系确定对应的至少两个组件分片,其中,至少两个组件分片相互独立;
42.在相关技术中,现有大型项目为了提高开发效率,通常会进行模块划分,从而使多个开发人员分工合作,完成一个大型项目的开发。由于划分得到的各个模块都是该大型项目的一个组成部分,需要模块之间的相互配合,才能保证大型项目的正常工作。因此,项目划分出的多个模块之间往往具有一定依赖关系。
43.在软件工程对象模型中,依赖关系通常描述两个模型元素(例如功能组件)之间的语义连接关系,其中一个模型元素是独立的,另一个模型元素不是独立的,它就依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素。例如:一个组件使用另一个组件的对象作为操作的参数,一个组件用另一个组件的静态库文件作为它的数据成员,一个组件向另一个组件发消息等,这样的两个组件之间都存在依赖关系。
44.具体地,应用程序一般用于执行一种或多种业务,每个应用程序中包括至少一个功能组件,其中,应用程序中的每个功能组件用于执行对应的组件功能。在本实施例中,每个功能组件对应至少两个组件功能,而对于包括多个组件功能的组件中不同的组件功能之间存在依赖关系。因此需要将组件划分为多个组件分片,然后根据多个组件分片分别对应的分片静态库文件进行编译,以得到多个组件分片分别对应的分片静态库,以便在app集成时根据app传入的功能参数对组件分片进行集成得到精简的目标组件。
45.在本实施例中,根据目标组件中的组件功能以及对应的代码实现过程,确定目标组件中至少两个组件功能对应的依赖关系。然后根据依赖关系确定目标组件中组件分片的划分关系,以便每个组件分片之间不存在依赖关系,能够独立实现对应的组件功能。
46.s104,根据至少两个组件分片对目标组件对应的组件静态库的组件静态库文件进行组装,以得到至少两个组件分片分别对应的分片静态库文件;
47.本实施例中,目标组件用于实现应用程序中的具体业务或功能,根据用于集成应用程序的目标组件中的多个组件功能对目标组件进行拆分,得到至少两个组件分片,其中,目标组件中的每个组件分片相互独立,组件分片之间不存在依赖关系。在本实施例中,每个组件分片对应一个目标组件的一个组件功能或组件业务,用于实现目标组件的一个组件功
能,或用户执行目标组件的一个业务。
48.例如,以某应用程序中目标组件对应的三个组件功能a、b、c为例进行说明,对该目标组件进行拆分后,得到组件分片a、组件分片b以及组件分片c,每个组件分片实现对应的组件功能,且组件分片a、组件分片b以及组件分片c之间相互独立,不存在依赖关系。
49.在具体的应用场景中,可以获取多个app对目标组件中的多个组件功能的调用记录,具体地,获取对目标组件的功能调用文件或功能调用参数来确定目标组件中多个组件功能之间的依赖关系,然后根据依赖关系对目标组件的组件分片。
50.在一个例子中,以某应用程序中的目标组件t为例进行说明,app

1调用目标组件t的功能包括组件功能a以及组件功能b,app

2调用目标组件t的功能包括组件功能b,app

3调用目标组件t的功能包括组件功能d,则可以根据app

1、app

2以及app

3对目标组件t中多个组件功能的调用记录,将目标组件t拆分为组件分片a、组件分片b以及组件分片d。
51.在本实施例中,分片静态库文件是组件分片对应的静态库文件。根据目标组件多个功能之间的依赖关系将目标组件划分为多个组件分片,每个组件分片分别用于实现对应的组件功能。根据多个组件分片对目标组件的组件静态库进行拆分,包括对目标组件的组件静态库文件进行组装,例如对目标组件对应的头文件、资源文件以及静态库文件进行组装,以得到每个组件分片对应的分片静态库文件。
52.s106,对至少两个分片静态库文件进行编译,以得到至少两个组件分片分别对应的分片静态库。
53.然后,通过对分片静态库文件进行编译,以得到目标组件中每个组件功能对应的分片静态库。在app需要集成目标组件时,根据app传入参数确定app所需的目标组件的组件功能列表,根据组件功能列表确定目标组件对应的组件分片,然后基于每个组件分片对应的分片静态库文件进行合并,以得到与app适配的目标组件的静态资源库。
54.需要说明的是,通过本实施例,对目标组件进行拆分后得到的组件分片类似于目标组件的子组件,在获取到组件分片的分片静态库后,根据app的组件功能需求组合合并对应的组件分片的分片静态库,以得到app适配的、最精简的目标组件。
55.通过上述实施例,根据目标组件中至少两个组件功能之间的依赖关系确定对应的至少两个组件分片,根据至少两个组件分片对目标组件对应的组件静态库的组件静态库文件进行组装,以得到至少两个组件分片分别对应的分片静态库文件;对至少两个分片静态库文件进行编译,以得到至少两个组件分片分别对应的分片静态库。通过将目标组建的组件静态库进行组装得到多个组件分片对应的分片静态库,实现了对目标组件进行最小粒度的拆分,在app集成时可以进行按需组装。
56.可选地,在本实施例中,根据目标组件中至少两个组件功能之间的依赖关系确定对应的至少两个组件分片,包括但不限于:根据所述目标组件对应的规范文件中的依赖参数确定所述依赖关系。
57.具体地,在本实施例中,规范文件包括但不限于podfile。其中,目标组件底层依赖的组件静态库需要从app中获取依赖参数,也就是说,通过获取app集成目标组件时调用的功能组件的组件功能,然后组件功能的依赖参数可以是在pod install时传入的传入参数或者在podfile入口文件中进行传递的传入参数。然后,根据传入参数确定对目标组件的拆分方式,对目标组件进行拆分以得到至少两个组件分片。
58.需要说明的是,在本实施例中,根据多个app对目标组件中的多个组件功能的调用记录,即从目标组件对应的规范文件中的依赖参数中确定依赖关系,通过依赖关系确定对目标组件的拆分方式,进而确定目标组件拆分后的最小粒度。
59.可选地,在本实施例中,根据至少两个组件分片对目标组件对应的组件静态库的组件静态库文件进行组装,以得到至少两个组件分片分别对应的分片静态库文件,包括但不限于:根据至少两个组件分片分别对应的依赖参数,对组件静态库文件中至少两个组件分片分别对应的头文件、资源文件以及静态库文件进行组装。
60.具体地,在本实施例中,依赖参数包括但不限于podfile文件传入的参数,根据传入的参数对组件分片分别对应的头文件、资源文件以及静态库文件进行组装,以得到组件分片对应的分片静态库文件。
61.在一个例子中,如图2所示,在app的的podfile没有传入任何参数(参数为nil)时,分片静态库podalib通过.podspec文件只集成多app通用组件分片的部分。而在app的的podfile文件传入的参数为a时,则除了集成多app通用组件分片外,还需要集成a组件分片对应的静态库文件。
62.可选地,在本实施例中,在对所述至少两个分片静态库文件进行编译,以得到所述至少两个组件分片分别对应的分片静态库之后,还包括但不限于:获取指定组件对应的组件集成参数;根据所述组件集成参数确定至少一个目标组件分片;对所述至少一个组件分片进行集成,以得到所述指定组件。
63.具体地,在本实施例中,在经过上述实施例对目标组件进行拆分得到至少两个组件分片分别对应的分片静态库之后,在后续的app集成过程中,根据app中指定组件对应的组件集成参数,来集成与app适配的指定组件。该组件集成参数中包括但不限于对应的组件功能、组件分片、组件分片对应的头文件、资源文件以及分片静态库。通过组件集成参数对至少一个目标组件分片进行集成,以得到与app适配的结构精简的指定组件。
64.可选地,在本实施例中,对至少两个分片静态库文件进行编译,以得到至少两个组件分片分别对应的分片静态库,包括但不限于:在组件分片对应的分片目录中添加依赖参数对应的依赖文件;根据依赖文件以及组件分片对应的分片静态库文件进行编译,以得到组件分片对应的分片静态库。
65.具体地,在本实施例中,每个组件分片中包括分片目录,该分片目录中列出了头文件的名称、规格等信息、资源文件对应的资源目录、静态库文件名称、架构等。在分片目录中添加与依赖参数对应的依赖文件,改依赖文件包括但不限于.podspec文件,该.podspec文件中包括分片静态库中的头文件、资源文件以及静态库文件的相关信息。根据依赖文件.podspec文件以及组件分片对应的分片静态库文件进行编译,以得到组件分片对应的分片静态库.a/.framework。
66.在一个例子中,如图3所示,为实现在目标组件中生成分片静态库,需要在每个组件分片对应的分片目录中添加一个.podspec文件配置文件,并在集成时podfile中对每个分片进行pod组装,经过编译后即可生成每个分片的静态库.a/.framework。在podfile中分别用pod poda/multiapp组装多app通用分片,用pod poda/parta组装a分片,用pod poda/partb组装b分片。
67.通过上述实施例,在组件分片对应的分片目录中添加依赖参数对应的依赖文件;
根据依赖文件以及组件分片对应的分片静态库文件进行编译,实现了目标组件生成分片静态库,精简了目标组件的组件静态库的结构,以便于后续app的个性化组件集成。
68.可选地,在本实施例中,在对至少两个分片静态库文件进行编译,以得到至少两个组件分片分别对应的分片静态库之后,还包括但不限于:获取指定组件对应的组件集成参数;对至少一个组件分片对应的分片静态库进行集成,以得到指定组件对应的组件静态库。
69.具体地,在经过上述实施例中将目标组件的静态库拆分为较小粒度的分片静态库,在接收到app对目标组件的调用请求时,获取app对指定组件的组件集成参数,此处指定组件为与app请求组件功能对应的目标组件。
70.其中,组件集成参数中包括但不限于组件功能、组件分片、组件分片对应的头文件、资源文件以及静态库。根据组件集成参数对组件分片进行集成包括但不限于对组件分片对应的头文件、资源文件以及静态库文件进行合并,以得到指定组件对应的组件静态库。
71.通过上述实施例,获取指定组件对应的组件集成参数;根据组件集成参数确定至少一个目标组件分片;对至少一个组件分片进行集成,以得到指定组件,实现了与app功能需求适配的个性化组件集成。
72.可选地,在本实施例中,对所述至少一个组件分片对应的分片静态库进行集成,包括但不限于:根据所述组件集成参数在所述分片目录的头文件源中添加所述至少一个目标组件分片对应的头文件;根据所述组件集成参数在所述分片目录的源文件中添加所述至少一个目标组件分片对应的资源目录;对所述至少一个目标组件分片对应的静态库文件进行合并,以得到所述指定组件对应的组件静态库。
73.在一个例子中,对于指定组件的组件静态库podalib生成过程,在app进行pod集成时需要分别把分片中的头文件、资源文件以及静态库文件进行集成。其中,对于头文件和资源文件,根据podfile传入的组件集成参数在.podspec中的属性添加相应分片目录即可,如对于头文件通过组件集成参数在source_files属性中列出需要选择的头文件,同理在resources中根据组件集成参数列出要选择的资源目录。
74.在上述步骤中实现了头文件以及资源文件的合并,接下来对静态库文件的合并进行详细描述:
75.可选地,在本实施例中,对至少一个目标组件分片对应的静态库文件进行合并,以得到指定组件对应的组件静态库,包括但不限于:分离至少一个目标组件分片对应的目标分片静态库文件以得到多个分片静态库架构;对多个分片静态库架构进行处理,以得到多个分片静态库架构对应的多个目标文件;合并多个目标文件中相同架构的目标文件,以得到多个组件库;对多个组件库进行合并,以得到指定组件对应的组件静态库。
76.在具体地应用场景中,分片静态库的架构包括但不限于arm64、armv7、x86_64等架构,为了方便组件分片的分片静态库的合并,因此在本实施例中通过对多个组件分片对应的分片静态库文件进行分离,以得到多个分片静态库架构。此处需要说明的是,每个分片静态库文件中包括arm64架构、armv7架构以及x86_64架构。
77.对每个分片静态库架构进行处理,得到用于组成分片静态库架构的目标文件,每个分片静态库架构包括一个或多个目标文件,例如.a文件中包括一个或多个.o目标文件。通过对分片静态库架构处理得到的多个目标文件,进行相同架构的合并,得到例如arm64架构对应的arm64组件库;armv7架构对应的armv7组件库。接下来,对多个组件库进行合并,以
得到组件分片对应的组件静态库。
78.在一个例子中,如图4所示,本实施例中一种组件静态库的合并方法的流程示意图,对图5中所述的通用分片以及组件分片a进行组件静态库的合并过程,具体可以包括以下步骤:
79.s41,分离组件分片静态库架构;
80.具体地,对于指定静态库lib,将其中各组件分片进行处理,分离出各个单独架构,如arm64、armv7、x86_64,如要拆分出多app通用分片的arm64架构,通过以下命令操作:
[0081]“lipo libpodmultiapplib.a

thin arm64

output libpodmultiapplib_arm64.a”[0082]
s42,分离目标文件;
[0083]
具体地,将步骤s41中分离出的单独架构进行处理,分离出各架构中的.o目标文件,如分离出libpodmultiapplib_arm64.a的所有.a,通过以下命令操作:
[0084]“ar

x libpodmultiapplib_arm64.a”[0085]
s43,合并同架构目标文件;
[0086]
具体地,将指定组件静态库各组件分片在步骤s42中生成的目标文件,进行同架构合并,如将多app通用分片和a分片的arm64下的.o进行合并,生成整个静态库下的arm64组件库,(libpodlib_arm64.a),通过以下命令操作:
[0087]“libtool

static

o libpodlib_arm64.a multiapp/*.o parta/*.o”[0088]
s44,合并所有架构静态库。
[0089]
具体地,对于指定静态在步骤s43中生成的组件库lib,进行合并,如将arm64,armv7,x86_64进行合并,生成最终的静态库libpodlib.a,执行以下命令操作。
[0090]“lipo

create libpodlib_arm64.a libpodlib_armv7.a libpodlib_x86_64.a

output libpodlib.a”[0091]
通过上述步骤,可以根据app集成时传入的组件集成参数,实现了与app功能需求适配的个性化组件对应的组件静态库的集成。
[0092]
通过上述实施例,根据目标组件中至少两个组件功能之间的依赖关系确定对应的至少两个组件分片,根据至少两个组件分片对目标组件对应的组件静态库的组件静态库文件进行组装,以得到至少两个组件分片分别对应的分片静态库文件;对至少两个分片静态库文件进行编译,以得到至少两个组件分片分别对应的分片静态库。通过将目标组建的组件静态库进行组装得到多个组件分片对应的分片静态库,实现了对目标组件进行最小粒度的拆分,在app集成时可以进行按需组装。
[0093]
实施例二
[0094]
详细介绍本发明实施例提供的一种静态库集成装置。
[0095]
参照图6,示出了本发明实施例中一种静态库集成装置的结构示意图。
[0096]
本发明实施例的应用程序加载装置包括:第一确定单元60,组装单元62、编译单元64。
[0097]
下面分别详细介绍各模块的功能以及各模块之间的交互关系。
[0098]
第一确定单元60,用于根据目标组件中至少两个组件功能之间的依赖关系确定对应的至少两个组件分片,其中,所述至少两个组件分片相互独立;
[0099]
组装单元62,用于根据所述至少两个组件分片对所述目标组件对应的组件静态库的组件静态库文件进行组装,以得到至少两个组件分片分别对应的分片静态库文件;
[0100]
编译单元64,用于对所述至少两个分片静态库文件进行编译,以得到所述至少两个组件分片分别对应的分片静态库。
[0101]
可选地,在本实施例中,所述第一确定单元60包括:
[0102]
获取模块,用于根据所述目标组件对应的规范文件中的依赖参数确定所述依赖关系。
[0103]
可选地,在本实施例中,所述组装单元62包括:
[0104]
组装模块,用于根据所述至少两个组件分片分别对应的依赖参数,对所述组件静态库文件中所述至少两个组件分片分别对应的头文件、资源文件以及静态库文件进行组装。
[0105]
可选地,在本实施例中,所述编译单元64包括:
[0106]
第一处理模块,用于在所述组件分片对应的分片目录中添加所述依赖参数对应的依赖文件;
[0107]
编译模块,用于根据所述依赖文件以及所述组件分片对应的分片静态库文件进行编译,以得到所述分片对应的分片静态库。
[0108]
可选地,在本实施例中,所述装置还包括:
[0109]
获取单元,用于在对所述至少两个分片静态库文件进行编译,以得到所述至少两个组件分片分别对应的分片静态库之后,获取指定组件对应的组件集成参数;
[0110]
第二确定单元,用于根据所述组件集成参数确定至少一个目标组件分片;
[0111]
集成单元,用于对所述至少一个组件分片对应的分片静态库进行集成,以得到所述指定组件对应的组件静态库。
[0112]
可选地,在本实施例中,所述集成单元包括:
[0113]
第二处理模块,用于根据所述组件集成参数在所述分片目录的头文件源中添加所述至少一个目标组件分片对应的头文件;
[0114]
第三处理模块,用于根据所述组件集成参数在所述分片目录的源文件中添加所述至少一个目标组件分片对应的资源目录;
[0115]
合并模块,用于对所述至少一个目标组件分片对应的静态库文件进行合并,以得到所述指定组件对应的组件静态库。
[0116]
可选地,在本实施例中,所述合并模块包括:
[0117]
分离子模块,用于分离所述至少一个目标组件分片对应的目标分片静态库文件以得到多个分片静态库架构;
[0118]
处理子模块,用于对所述多个分片静态库架构进行处理,以得到所述多个分片静态库架构对应的多个目标文件;
[0119]
第一合并子模块,用于合并所述多个目标文件中相同架构的目标文件,以得到多个组件库;
[0120]
第二合并子模块,用于对所述多个组件库进行合并,以得到所述指定组件对应的组件静态库。
[0121]
而且,通过上述实施例,根据目标组件中至少两个组件功能之间的依赖关系确定
对应的至少两个组件分片,根据至少两个组件分片对目标组件对应的组件静态库的组件静态库文件进行组装,以得到至少两个组件分片分别对应的分片静态库文件;对至少两个分片静态库文件进行编译,以得到至少两个组件分片分别对应的分片静态库。通过将目标组建的组件静态库进行组装得到多个组件分片对应的分片静态库,实现了对目标组件进行最小粒度的拆分,在app集成时可以进行按需组装目标组件。解决了相关技术中app架构复杂,存在依赖关系的组件静态库占用空间较大,存在冗余文件的问题。
[0122]
实施例三
[0123]
图7为实现本发明各个实施例的一种电子设备的硬件结构示意图。
[0124]
该电子设备700包括但不限于:射频单元701、网络模块702、音频输出单元703、输入单元704、传感器705、显示单元706、用户输入单元707、接口单元708、存储器709、处理器710、以及电源711等部件。本领域技术人员可以理解,图7中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。在本发明实施例中,电子设备包括但不限于手机、平板电脑、笔记本电脑、掌上电脑、车载终端、可穿戴设备、以及计步器等。
[0125]
应理解的是,本发明实施例中,射频单元701可用于收发信息或通话过程中,信号的接收和发送,具体的,将来自基站的下行数据接收后,给处理器710处理;另外,将上行的数据发送给基站。通常,射频单元701包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元701还可以通过无线通信系统与网络和其他设备通信。
[0126]
电子设备通过网络模块702为用户提供了无线的宽带互联网访问,如帮助用户收发电子邮件、浏览网页和访问流式媒体等。
[0127]
音频输出单元703可以将射频单元701或网络模块702接收的或者在存储器709中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元703还可以提供与电子设备700执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元703包括扬声器、蜂鸣器以及受话器等。
[0128]
输入单元704用于接收音频或视频信号。输入单元704可以包括图形处理器(graphics processing unit,gpu)7041和麦克风7042,图形处理器7041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元706上。经图形处理器7041处理后的图像帧可以存储在存储器709(或其它存储介质)中或者经由射频单元701或网络模块702进行发送。麦克风7042可以接收声音,并且能够将这样的声音处理为音频数据。处理后的音频数据可以在电话通话模式的情况下转换为可经由射频单元701发送到移动通信基站的格式输出。
[0129]
电子设备700还包括至少一种传感器705,比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板7061的亮度,接近传感器可在电子设备700移动到耳边时,关闭显示面板7061和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别电子设备姿态(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;传感器705还可以包括指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿
度计、温度计、红外线传感器等,在此不再赘述。
[0130]
显示单元706用于显示由用户输入的信息或提供给用户的信息。显示单元706可包括显示面板7061,可以采用液晶显示器(liquid crystal display,lcd)、有机发光二极管(organic light

emitting diode,oled)等形式来配置显示面板7061。
[0131]
用户输入单元707可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元707包括触控面板7071以及其他输入设备7072。触控面板7071,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板7071上或在触控面板7071附近的操作)。触控面板7071可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器710,接收处理器710发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板7071。除了触控面板7071,用户输入单元707还可以包括其他输入设备7072。具体地,其他输入设备7072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
[0132]
进一步的,触控面板7071可覆盖在显示面板7061上,当触控面板7071检测到在其上或附近的触摸操作后,传送给处理器710以确定触摸事件的类型,随后处理器710根据触摸事件的类型在显示面板7061上提供相应的视觉输出。虽然在图6中,触控面板7071与显示面板7061是作为两个独立的部件来实现电子设备的输入和输出功能,但是在某些实施例中,可以将触控面板7071与显示面板7061集成而实现电子设备的输入和输出功能,具体此处不做限定。
[0133]
接口单元708为外部装置与电子设备700连接的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(i/o)端口、视频i/o端口、耳机端口等等。接口单元708可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到电子设备700内的一个或多个元件或者可以用于在电子设备700和外部装置之间传输数据。
[0134]
存储器709可用于存储软件程序以及各种数据。存储器709可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器709可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0135]
处理器710是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器709内的软件程序和/或模块,以及调用存储在存储器709内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。处理器710可包括一个或多个处理单元;优选的,处理器710可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器710中。
[0136]
电子设备700还可以包括给各个部件供电的电源711(比如电池),优选的,电源711
可以通过电源管理系统与处理器710逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
[0137]
另外,电子设备700包括一些未示出的功能模块,在此不再赘述。
[0138]
优选的,本发明实施例还提供了一种电子设备,包括:处理器710,存储器709,存储在存储器709上并可在处理器710上运行的计算机程序,该计算机程序被处理器710执行时实现上述静态库集成方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0139]
实施例五
[0140]
本发明实施例还提供了一种存储介质,该存储介质包括但不限于计算机可读存储介质,该存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述静态库集成方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的存储介质,如只读存储器(read

only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等。
[0141]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0142]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
[0143]
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
[0144]
本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0145]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0146]
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互
之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0147]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0148]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0149]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
[0150]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1