CN105718289A - 一种组件关系建立方法及其设备 - Google Patents
一种组件关系建立方法及其设备 Download PDFInfo
- Publication number
- CN105718289A CN105718289A CN201610042009.8A CN201610042009A CN105718289A CN 105718289 A CN105718289 A CN 105718289A CN 201610042009 A CN201610042009 A CN 201610042009A CN 105718289 A CN105718289 A CN 105718289A
- Authority
- CN
- China
- Prior art keywords
- component
- file
- annotation
- target application
- layout position
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000012545 processing Methods 0.000 claims description 14
- 238000004806 packaging method and process Methods 0.000 claims description 9
- 230000002159 abnormal effect Effects 0.000 claims description 2
- 230000008878 coupling Effects 0.000 abstract description 10
- 238000010168 coupling process Methods 0.000 abstract description 10
- 238000005859 coupling reaction Methods 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000012423 maintenance Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- 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/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- 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
- G06F9/4451—User profiles; Roaming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例公开一种组件关系建立方法及其设备,其中方法包括如下步骤:在目标应用项目的类文件中获取携带有组件注解的组件;解析所述组件注解,以获取所述组件注解所包含的所述组件的组件标识和布局位置;根据所述组件标识和所述布局位置生成所述目标应用项目的组件关系文件。采用本发明,可以自动生成关于组件的组件关系文件,并降低组件与界面框架之间的耦合度,降低组件的管理难度,提升组件的扩展性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种组件关系建立方法及其设备。
背景技术
随着计算机技术不断的开发和完善,针对手机、平板电脑等终端所开发的终端应用日趋增多,满足了人们日常生活的各种需求。
在对应用项目进行开发的过程中,往往需要建立应用的界面框架以及界面框架中所需的组件,由于组件与界面框架间存在组件关系,即组件需要确定加载于哪个界面框架下的哪个具***置,而界面框架需要确定需要布局哪些组件。现有的组件关系建立的方式是维护一个组件关系文件,该组件关系文件描述有界面框架、界面框架下的所有组件以及这些组件的布局位置,并通过反射加载的方式对组件进行加载。然而采用上述组件关系文件描述组件和界面框架的组件关系的方式,需要开发人员手动对组件关系文件进行维护,同时由于组件关系文件需要同时描述界面框架以及组件,导致组件和界面框架之间的耦合度较高,不便于组件的管理以及扩展。
发明内容
本发明实施例提供一种组件关系建立方法及其设备,可以自动生成关于组件的组件关系文件,并降低组件与界面框架之间的耦合度,降低组件的管理难度,提升组件的扩展性。
本发明实施例第一方面提供了一种组件关系建立方法,可包括:
在目标应用项目的类文件中获取携带有组件注解的组件;
解析所述组件注解,以获取所述组件注解所包含的所述组件的组件标识和布局位置;
根据所述组件标识和所述布局位置生成所述目标应用项目的组件关系文件。
本发明实施例第二方面提供了一种组件关系建立设备,可包括:
组件获取单元,用于在目标应用项目的类文件中获取携带有组件注解的组件;
注解解析单元,用于解析所述组件注解,以获取所述组件注解所包含的所述组件的组件标识和布局位置;
关系文件生成单元,用于根据所述组件标识和所述布局位置生成所述目标应用项目的组件关系文件。
在本发明实施例中,通过在目标应用项目的类文件中获取携带有组件注解的组件,并解析组件注解,以获取组件注解所包含该组件的组件标识和布局位置,最终根据组件标识和布局位置生成目标应用项目的组件关系文件。通过基于组件注解生成组件关系文件,实现了自动生成关于组件的组件关系文件,无需手动对组件关系文件进行维护,并且由于组件注解包含组件的组件标识以及布局位置,无需与界面框架产生直接的组件关系,而是由组件关系文件单独描述组件的布局位置,降低了组件与界面框架之间的耦合度,降低了组件的管理难度,进而提升组件的扩展性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种组件关系建立方法的流程示意图;
图2是本发明实施例提供的另一种组件关系建立方法的流程示意图;
图3是本发明实施例提供的一种组件关系建立设备的结构示意图;
图4是本发明实施例提供的另一种组件关系建立设备的结构示意图;
图5是本发明实施例提供的关系文件生成单元的结构示意图;
图6是本发明实施例提供的又一种组件关系建立设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的组件关系建立方法可以应用于生成目标应用项目中的组件关系文件的场景,例如:组件关系建立设备在目标应用项目的类文件中获取携带有组件注解的组件,所述组件关系建立设备解析所述组件注解,以获取所述组件注解所包含的所述组件的组件标识和布局位置,所述组件关系建立设备根据所述组件标识和所述布局位置生成所述目标应用项目的组件关系文件的场景等。通过基于组件注解生成组件关系文件,实现了自动生成关于组件的组件关系文件,无需手动对组件关系文件进行维护,并且由于组件注解包含组件的组件标识以及布局位置,无需与界面框架产生直接的组件关系,而是由组件关系文件单独描述组件的布局位置,降低了组件与界面框架之间的耦合度,降低了组件的管理难度,进而提升组件的扩展性。
本发明实施例涉及的组件关系建立设备可以包括:平板电脑、智能手机、笔记本电脑、掌上电脑、个人计算机以及移动互联网设备(MID)等具备对应用项目进行编译及运行等功能在内的终端设备,或者可以为上述终端设备中的代码编译运行应用;注解为一种标记语言,可以在源代码中以一种特殊格式的句法来展现,注解可以用来修饰类、方法、变量、参数、包等,可以集成在编译出来的类文件中,并在代码运行时生效,所述组件注解具体定义了组件的组件标识以及组件在界面框架中的布局位置;所述组件关系文件具体为基于组件的组件注解来描述在目标应用项目中的一个或多个组件的布局位置。
下面将结合附图1和附图2,对本发明实施例提供的一种组件关系建立方法进行详细介绍。
请参见图1,为本发明实施例提供了一种组件关系建立方法的流程示意图。如图1所示,本发明实施例的所述方法可以包括一下步骤S101-步骤S103。
S101,在目标应用项目的类文件中获取携带有组件注解的组件;
具体的,组件关系建立设备可以在目标应用项目的类文件中获取携带有组件注解的组件,可以理解的是,所述类文件可以为一个或多个类文件,所述组件可以为一个或多个组件,每个组件均可以由一组代码进行表示,所述组件注解可以置于该组代码中的指定位置,所述组件关系建立设备可以遍历所述类文件,并在遍历后获取所述类文件中携带有组件注解的组件。
S102,解析所述组件注解,以获取所述组件注解所包含的所述组件的组件标识和布局位置;
具体的,所述组件关系建立设备可以解析所述组件注解,并在解析后获取所述组件注解所包含的所述组件的组件标识和布局位置,所述组件标识用于表示其对应组件的组件类型以及组件名称,所述组件标识具体可以包括组件序列号(Identity,ID)以及组件名称等,所述布局位置用于表示其对应组件在界面框架下的具体输出显示位置,具体可以包括界面框架的名称以及位置标识等。
S103,根据所述组件标识和所述布局位置生成所述目标应用项目的组件关系文件;
具体的,所述组件关系建立设备在获取到所述组件标识和所述布局位置时,可以根据所述组件标识和所述布局位置生成所述目标应用项目的组件关系文件,进一步的,所述组件关系建立设备可以获取所述组件标识对应的组件类型,所述组件类型可以包括功能性插件和用户界面(UserInterface,UI)插件,所述功能性插件可以表示为在运行所述目标应用项目时所需的初始化插件,所述UI插件可以表示为所述目标应用项目所需展示的业务插件,所述组件关系建立设备可以将所述组件标识和所述布局位置封装为所述组件的依赖关系信息,并生成包含所述组件类型和所述依赖关系信息的组件关系文件。
在本发明实施例中,通过在目标应用项目的类文件中获取携带有组件注解的组件,并解析组件注解,以获取组件注解所包含该组件的组件标识和布局位置,最终根据组件标识和布局位置生成目标应用项目的组件关系文件。通过基于组件注解生成组件关系文件,实现了自动生成关于组件的组件关系文件,无需手动对组件关系文件进行维护,并且由于组件注解包含组件的组件标识以及布局位置,无需与界面框架产生直接的组件关系,而是由组件关系文件单独描述组件的布局位置,降低了组件与界面框架之间的耦合度,降低了组件的管理难度,进而提升组件的扩展性。
请参见图2,为本发明实施例提供了另一种组件关系建立方法的流程示意图。如图2所示,本发明实施例的所述方法可以包括以下步骤S201-步骤S208。
S201,对目标应用项目的项目脚本进行编译处理,以生成所述项目脚本对应的类文件;
具体的,所述类文件可以为对目标应用项目的项目脚本进行编译处理以生成的文件,所述组件关系建立设备可以预先对所述目标应用项目的项目脚本进行编译处理,并在编译处理后生成所述项目脚本对应的类文件以及所述目标应用项目所依赖的库,所述所依赖的库可以为第三方提供的开源库、开发人员所开发的针对所述目标应用项目的开发信息库等。
S202,在目标应用项目的类文件中获取携带有组件注解的组件;
具体的,所述组件关系建立设备可以在目标应用项目的类文件中获取携带有组件注解的组件,可以理解的是,所述类文件可以为一个或多个类文件,所述组件可以为一个或多个组件,每个组件均可以由一组代码进行表示,所述组件注解可以置于该组代码中的指定位置,所述组件关系建立设备可以遍历所述类文件,并在遍历后获取所述类文件中携带有组件注解的组件。
S203,解析所述组件注解,以获取所述组件注解所包含的所述组件的组件标识和布局位置;
具体的,所述组件关系建立设备可以解析所述组件注解,并在解析后获取所述组件注解所包含的所述组件的组件标识和布局位置,所述组件标识用于表示其对应组件的组件类型以及组件名称,所述组件标识具体可以包括组件ID以及组件名称等,所述布局位置用于表示其对应组件在界面框架下的具体输出显示位置,具体可以包括界面框架的名称以及位置标识等。
S204,获取所述组件标识对应的组件类型,并将所述组件标识和所述布局位置封装为所述组件的依赖关系信息;
S205,生成包含所述组件类型和所述依赖关系信息的组件关系文件;
具体的,所述组件关系建立设备可以获取所述组件标识对应的组件类型,所述组件类型可以包括功能性插件和UI插件,所述功能性插件可以表示为在运行所述目标应用项目时所需的初始化插件,所述UI插件可以表示为所述目标应用项目所需展示的业务插件,优选的,所述组件关系建立设备可以根据所述组件的组件ID确定所述组件的组件类型,例如:所述组件ID为“0”,则表示所述组件为功能性插件;所述组件ID为“0”以外的其它数字,则表示所述组件为UI插件等。所述组件关系建立设备可以将所述组件标识和所述布局位置封装为所述组件的依赖关系信息,并生成包含所述组件类型和所述依赖关系信息的组件关系文件,所述组件关系文件的文件类型优选为可扩展标记语言(ExtensibleMarkupLanguage,XML)文件。
需要说明的是,所述组件关系文件可以在目标应用项目的编译期间生成,也可以在目标应用项目的运行期间生成,为了平衡编译效率和运行效率,优选的在目标应用项目的编译期间生成所述组件关系文件。
S206,当运行所述目标应用项目的项目脚本时,获取所述组件关系文件所包含的所述组件类型和所述依赖关系信息;
S207,根据所述组件类型,并按照所述依赖关系信息对所述组件进行加载处理;
具体的,当所述组件关系建立设备运行所述目标应用项目的项目脚本时,所述组件关系建立设备可以获取所述组件关系文件所包含的所述组件类型和所述依赖关系信息,并根据所述组件类型以及所述依赖关系信息对所述组件进行加载处理,优选的,若所述组件类型表示所述组件为功能性插件,则所述组件关系建立设备可以获取所述组件标识所指示的所述组件,并基于所述布局位置对所述组件进行加载处理;若所述组件类型表示所述组件为UI插件,则所述组件关系建立设备可以在检测到组件类型为功能性插件的所有组件加载处理完成后,获取所述组件标识所指示的所述组件,并基于所述布局位置对所述组件进行加载处理。
S208,当检测到所述目标应用项目的项目脚本运行异常时,判断所述组件是否加载处理完成,若是,则根据所述组件类型,并按照所述依赖关系信息对所述组件进行重新加载处理;
具体的,当所述组件关系建立设备检测到所述目标应用项目的项目脚本运行异常时,所述组件关系建立设备可以判断所述组件是否加载处理完成,若所述组件加载处理完成,则所述组件关系建立设备可以根据所述组件类型,并按照所述依赖关系信息对所述组件进行重新加载处理,所述重新加载处理的过程可以与上述加载处理过程相同,在此不进行赘述。
在本发明实施例中,通过在目标应用项目的类文件中获取携带有组件注解的组件,并解析组件注解,以获取组件注解所包含该组件的组件标识和布局位置,最终根据组件标识和布局位置生成目标应用项目的组件关系文件。通过基于组件注解生成组件关系文件,实现了自动生成关于组件的组件关系文件,无需手动对组件关系文件进行维护,并且由于组件注解包含组件的组件标识以及布局位置,无需与界面框架产生直接的组件关系,而是由组件关系文件单独描述组件的布局位置,降低了组件与界面框架之间的耦合度,降低了组件的管理难度,进而提升组件的扩展性;通过在编译期间生成组件关系文件,并在运行期间读取文件和加载组件,有效的平衡了编译效率和运行效率。
下面将结合附图3-附图5,对本发明实施例提供的组件关系建立设备进行详细介绍。需要说明的是,附图3-附图5所示的组件关系建立设备,用于执行本发明图1和图2所示实施例的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明图1和图2所示的实施例。
请参见图3,为本发明实施例提供了一种组件关系建立设备的结构示意图。如图3所示,本发明实施例的所述组件关系建立设备1可以包括:组件获取单元11、注解解析单元12和关系文件生成单元13。
组件获取单元11,用于在目标应用项目的类文件中获取携带有组件注解的组件;
具体实现中,所述组件获取单元11可以在目标应用项目的类文件中获取携带有组件注解的组件,可以理解的是,所述类文件可以为一个或多个类文件,所述组件可以为一个或多个组件,每个组件均可以由一组代码进行表示,所述组件注解可以置于该组代码中的指定位置,所述组件获取单元11可以遍历所述类文件,并在遍历后获取所述类文件中携带有组件注解的组件。
注解解析单元12,用于解析所述组件注解,以获取所述组件注解所包含的所述组件的组件标识和布局位置;
具体实现中,所述注解解析单元12可以解析所述组件注解,并在解析后获取所述组件注解所包含的所述组件的组件标识和布局位置,所述组件标识用于表示其对应组件的组件类型以及组件名称,所述组件标识具体可以包括组件ID以及组件名称等,所述布局位置用于表示其对应组件在界面框架下的具体输出显示位置,具体可以包括界面框架的名称以及位置标识等。
关系文件生成单元13,用于根据所述组件标识和所述布局位置生成所述目标应用项目的组件关系文件;
具体实现中,所述注解解析单元12在获取到所述组件标识和所述布局位置时,所述关系文件生成单元13可以根据所述组件标识和所述布局位置生成所述目标应用项目的组件关系文件,进一步的,所述关系文件生成单元13可以获取所述组件标识对应的组件类型,所述组件类型可以包括功能性插件和UI插件,所述功能性插件可以表示为在运行所述目标应用项目时所需的初始化插件,所述UI插件可以表示为所述目标应用项目所需展示的业务插件,所述关系文件生成单元13可以将所述组件标识和所述布局位置封装为所述组件的依赖关系信息,并生成包含所述组件类型和所述依赖关系信息的组件关系文件。
在本发明实施例中,通过在目标应用项目的类文件中获取携带有组件注解的组件,并解析组件注解,以获取组件注解所包含该组件的组件标识和布局位置,最终根据组件标识和布局位置生成目标应用项目的组件关系文件。通过基于组件注解生成组件关系文件,实现了自动生成关于组件的组件关系文件,无需手动对组件关系文件进行维护,并且由于组件注解包含组件的组件标识以及布局位置,无需与界面框架产生直接的组件关系,而是由组件关系文件单独描述组件的布局位置,降低了组件与界面框架之间的耦合度,降低了组件的管理难度,进而提升组件的扩展性。
请参见图4,为本发明实施例提供了另一种组件关系建立设备的结构示意图。如图4所示,本发明实施例的所述组件关系建立设备1可以包括:组件获取单元11、注解解析单元12、关系文件生成单元13、类文件生成单元14、数据获取单元15、组件加载单元16和组件重加载单元17。
类文件生成单元14,用于对目标应用项目的项目脚本进行编译处理,以生成所述项目脚本对应的类文件;
具体实现中,所述类文件可以为对目标应用项目的项目脚本进行编译处理以生成的文件,所述类文件生成单元14可以预先对所述目标应用项目的项目脚本进行编译处理,并在编译处理后生成所述项目脚本对应的类文件以及所述目标应用项目所依赖的库,所述所依赖的库可以为第三方提供的开源库、开发人员所开发的针对所述目标应用项目的开发信息库等。
组件获取单元11,用于在目标应用项目的类文件中获取携带有组件注解的组件;
具体实现中,所述组件获取单元11可以在目标应用项目的类文件中获取携带有组件注解的组件,可以理解的是,所述类文件可以为一个或多个类文件,所述组件可以为一个或多个组件,每个组件均可以由一组代码进行表示,所述组件注解可以置于该组代码中的指定位置,所述组件获取单元11可以遍历所述类文件,并在遍历后获取所述类文件中携带有组件注解的组件。
注解解析单元12,用于解析所述组件注解,以获取所述组件注解所包含的所述组件的组件标识和布局位置;
具体实现中,所述注解解析单元12可以解析所述组件注解,并在解析后获取所述组件注解所包含的所述组件的组件标识和布局位置,所述组件标识用于表示其对应组件的组件类型以及组件名称,所述组件标识具体可以包括组件ID以及组件名称等,所述布局位置用于表示其对应组件在界面框架下的具体输出显示位置,具体可以包括界面框架的名称以及位置标识等。
关系文件生成单元13,用于根据所述组件标识和所述布局位置生成所述目标应用项目的组件关系文件;
具体实现中,所述注解解析单元12在获取到所述组件标识和所述布局位置时,所述关系文件生成单元13可以根据所述组件标识和所述布局位置生成所述目标应用项目的组件关系文件,进一步的,所述关系文件生成单元13可以获取所述组件标识对应的组件类型,所述组件类型可以包括功能性插件和UI插件,所述功能性插件可以表示为在运行所述目标应用项目时所需的初始化插件,所述UI插件可以表示为所述目标应用项目所需展示的业务插件,所述关系文件生成单元13可以将所述组件标识和所述布局位置封装为所述组件的依赖关系信息,并生成包含所述组件类型和所述依赖关系信息的组件关系文件。
具体的,请一并参见图5,为本发明实施例提供了关系文件生成单元的结构示意图。如图5所示,所述关系文件生成单元13可以包括:
信息封装子单元131,用于获取所述组件标识对应的组件类型,并将所述组件标识和所述布局位置封装为所述组件的依赖关系信息;
关系文件生成子单元132,用于生成包含所述组件类型和所述依赖关系信息的组件关系文件;
具体实现中,所述信息封装子单元131可以获取所述组件标识对应的组件类型,所述组件类型可以包括功能性插件和UI插件,所述功能性插件可以表示为在运行所述目标应用项目时所需的初始化插件,所述UI插件可以表示为所述目标应用项目所需展示的业务插件,优选的,所述信息封装子单元131可以根据所述组件的组件ID确定所述组件的组件类型,例如:所述组件ID为“0”,则表示所述组件为功能性插件;所述组件ID为“0”以外的其它数字,则表示所述组件为UI插件等。所述信息封装子单元131可以将所述组件标识和所述布局位置封装为所述组件的依赖关系信息,所述关系文件生成子单元132生成包含所述组件类型和所述依赖关系信息的组件关系文件,所述组件关系文件的文件类型优选为XML文件。
需要说明的是,所述组件关系文件可以在目标应用项目的编译期间生成,也可以在目标应用项目的运行期间生成,为了平衡编译效率和运行效率,优选的在目标应用项目的编译期间生成所述组件关系文件。
数据获取单元15,用于当运行所述目标应用项目的项目脚本时,获取所述组件关系文件所包含的所述组件类型和所述依赖关系信息;
组件加载单元16,用于根据所述组件类型,并按照所述依赖关系信息对所述组件进行加载处理;
具体实现中,当所述组件关系建立设备1运行所述目标应用项目的项目脚本时,所述数据获取单元15可以获取所述组件关系文件所包含的所述组件类型和所述依赖关系信息,所述组件加载单元16根据所述组件类型以及所述依赖关系信息对所述组件进行加载处理,优选的,若所述组件类型表示所述组件为功能性插件,则所述组件加载单元16可以获取所述组件标识所指示的所述组件,并基于所述布局位置对所述组件进行加载处理;若所述组件类型表示所述组件为UI插件,则所述组件加载单元16可以在检测到组件类型为功能性插件的所有组件加载处理完成后,获取所述组件标识所指示的所述组件,并基于所述布局位置对所述组件进行加载处理。
组件重加载单元17,用于当检测到所述目标应用项目的项目脚本运行异常时,判断所述组件是否加载处理完成,若是,则根据所述组件类型,并按照所述依赖关系信息对所述组件进行重新加载处理;
具体实现中,当所述组件关系建立设备1检测到所述目标应用项目的项目脚本运行异常时,所述组件重加载单元17可以判断所述组件是否加载处理完成,若所述组件加载处理完成,则所述组件重加载单元17可以根据所述组件类型,并按照所述依赖关系信息对所述组件进行重新加载处理,所述重新加载处理的过程可以与上述加载处理过程相同,在此不进行赘述。
在本发明实施例中,通过在目标应用项目的类文件中获取携带有组件注解的组件,并解析组件注解,以获取组件注解所包含该组件的组件标识和布局位置,最终根据组件标识和布局位置生成目标应用项目的组件关系文件。通过基于组件注解生成组件关系文件,实现了自动生成关于组件的组件关系文件,无需手动对组件关系文件进行维护,并且由于组件注解包含组件的组件标识以及布局位置,无需与界面框架产生直接的组件关系,而是由组件关系文件单独描述组件的布局位置,降低了组件与界面框架之间的耦合度,降低了组件的管理难度,进而提升组件的扩展性;通过在编译期间生成组件关系文件,并在运行期间读取文件和加载组件,有效的平衡了编译效率和运行效率。
请参见图6,为本发明实施例提供了又一种组件关系建立设备的结构示意图。如图6所示,所述组件关系建立设备1000可以包括:至少一个处理器1001,例如CPU,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图6所示,作为一种计算机存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及关系建立应用程序。
在图6所示的组件关系建立设备1000中,用户接口1003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器1001可以用于调用存储器1005中存储的关系建立应用程序,并具体执行以下操作:
在目标应用项目的类文件中获取携带有组件注解的组件;
解析所述组件注解,以获取所述组件注解所包含的所述组件的组件标识和布局位置;
根据所述组件标识和所述布局位置生成所述目标应用项目的组件关系文件。
在一个实施例中,所述处理器1001在执行在目标应用项目的类文件中获取携带有组件注解的组件之前,还执行以下操作:
对目标应用项目的项目脚本进行编译处理,以生成所述项目脚本对应的类文件;
所述处理器1001在执行在目标应用项目的类文件中获取携带有组件注解的组件时,具体执行以下操作:
遍历所述类文件,并在遍历后获取所述类文件中携带有组件注解的组件。
在一个实施例中,所述处理器1001在执行根据所述组件标识和所述布局位置生成所述目标应用项目的组件关系文件时,具体执行以下操作:
获取所述组件标识对应的组件类型,并将所述组件标识和所述布局位置封装为所述组件的依赖关系信息,所述组件类型包括功能性插件和UI插件中的至少一种;
生成包含所述组件类型和所述依赖关系信息的组件关系文件。
在一个实施例中,所述处理器1001还执行以下操作:
当运行所述目标应用项目的项目脚本时,获取所述组件关系文件所包含的所述组件类型和所述依赖关系信息;
根据所述组件类型,并按照所述依赖关系信息对所述组件进行加载处理。
在一个实施例中,所述处理器1001在执行根据所述组件类型,并按照所述依赖关系信息对所述组件进行加载处理时,具体执行以下操作:
若所述组件类型表示所述组件为功能性插件,则获取所述组件标识所指示的所述组件,并基于所述布局位置对所述组件进行加载处理;或者,
若所述组件类型表示所述组件为UI插件,则在检测到组件类型为功能性插件的所有组件加载处理完成后,获取所述组件标识所指示的所述组件,并基于所述布局位置对所述组件进行加载处理。
在一个实施例中,所述处理器1001还执行以下操作:
当检测到所述目标应用项目的项目脚本运行异常时,判断所述组件是否加载处理完成,若是,则根据所述组件类型,并按照所述依赖关系信息对所述组件进行重新加载处理。
在本发明实施例中,通过在目标应用项目的类文件中获取携带有组件注解的组件,并解析组件注解,以获取组件注解所包含该组件的组件标识和布局位置,最终根据组件标识和布局位置生成目标应用项目的组件关系文件。通过基于组件注解生成组件关系文件,实现了自动生成关于组件的组件关系文件,无需手动对组件关系文件进行维护,并且由于组件注解包含组件的组件标识以及布局位置,无需与界面框架产生直接的组件关系,而是由组件关系文件单独描述组件的布局位置,降低了组件与界面框架之间的耦合度,降低了组件的管理难度,进而提升组件的扩展性;通过在编译期间生成组件关系文件,并在运行期间读取文件和加载组件,有效的平衡了编译效率和运行效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (12)
1.一种组件关系建立方法,其特征在于,包括:
在目标应用项目的类文件中获取携带有组件注解的组件;
解析所述组件注解,以获取所述组件注解所包含的所述组件的组件标识和布局位置;
根据所述组件标识和所述布局位置生成所述目标应用项目的组件关系文件。
2.根据权利要求1所述的方法,其特征在于,所述在目标应用项目的类文件中获取携带有组件注解的组件之前,还包括:
对目标应用项目的项目脚本进行编译处理,以生成所述项目脚本对应的类文件;
所述在目标应用项目的类文件中获取携带有组件注解的组件,包括:
遍历所述类文件,并在遍历后获取所述类文件中携带有组件注解的组件。
3.根据权利要求1所述的方法,其特征在于,所述根据所述组件标识和所述布局位置生成所述目标应用项目的组件关系文件,包括:
获取所述组件标识对应的组件类型,并将所述组件标识和所述布局位置封装为所述组件的依赖关系信息,所述组件类型包括功能性插件和用户界面UI插件中的至少一种;
生成包含所述组件类型和所述依赖关系信息的组件关系文件。
4.根据权利要求3所述的方法,其特征在于,还包括:
当运行所述目标应用项目的项目脚本时,获取所述组件关系文件所包含的所述组件类型和所述依赖关系信息;
根据所述组件类型,并按照所述依赖关系信息对所述组件进行加载处理。
5.根据权利要求4所述的方法,其特征在于,所述根据所述组件类型,并按照所述依赖关系信息对所述组件进行加载处理,包括:
若所述组件类型表示所述组件为功能性插件,则获取所述组件标识所指示的所述组件,并基于所述布局位置对所述组件进行加载处理;或者,
若所述组件类型表示所述组件为UI插件,则在检测到组件类型为功能性插件的所有组件加载处理完成后,获取所述组件标识所指示的所述组件,并基于所述布局位置对所述组件进行加载处理。
6.根据权利要求3所述的方法,其特征在于,还包括:
当检测到所述目标应用项目的项目脚本运行异常时,判断所述组件是否加载处理完成,若是,则根据所述组件类型,并按照所述依赖关系信息对所述组件进行重新加载处理。
7.一种组件关系建立设备,其特征在于,包括:
组件获取单元,用于在目标应用项目的类文件中获取携带有组件注解的组件;
注解解析单元,用于解析所述组件注解,以获取所述组件注解所包含的所述组件的组件标识和布局位置;
关系文件生成单元,用于根据所述组件标识和所述布局位置生成所述目标应用项目的组件关系文件。
8.根据权利要求7所述的设备,其特征在于,还包括:
类文件生成单元,用于对目标应用项目的项目脚本进行编译处理,以生成所述项目脚本对应的类文件;
所述组件获取单元具体用于遍历所述类文件,并在遍历后获取所述类文件中携带有组件注解的组件。
9.根据权利要求7所述的设备,其特征在于,所述关系文件生成单元包括:
信息封装子单元,用于获取所述组件标识对应的组件类型,并将所述组件标识和所述布局位置封装为所述组件的依赖关系信息,所述组件类型包括功能性插件和UI插件中的至少一种;
关系文件生成子单元,用于生成包含所述组件类型和所述依赖关系信息的组件关系文件。
10.根据权利要求9所述的设备,其特征在于,还包括:
数据获取单元,用于当运行所述目标应用项目的项目脚本时,获取所述组件关系文件所包含的所述组件类型和所述依赖关系信息;
组件加载单元,用于根据所述组件类型,并按照所述依赖关系信息对所述组件进行加载处理。
11.根据权利要求10所述的设备,其特征在于,所述组件加载单元具体用于若所述组件类型表示所述组件为功能性插件,则获取所述组件标识所指示的所述组件,并基于所述布局位置对所述组件进行加载处理;或者,
若所述组件类型表示所述组件为UI插件,则在检测到组件类型为功能性插件的所有组件加载处理完成后,获取所述组件标识所指示的所述组件,并基于所述布局位置对所述组件进行加载处理。
12.根据权利要求9所述的设备,其特征在于,还包括:
组件重加载单元,用于当检测到所述目标应用项目的项目脚本运行异常时,判断所述组件是否加载处理完成,若是,则根据所述组件类型,并按照所述依赖关系信息对所述组件进行重新加载处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610042009.8A CN105718289B (zh) | 2016-01-21 | 2016-01-21 | 一种组件关系建立方法及其设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610042009.8A CN105718289B (zh) | 2016-01-21 | 2016-01-21 | 一种组件关系建立方法及其设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105718289A true CN105718289A (zh) | 2016-06-29 |
CN105718289B CN105718289B (zh) | 2020-12-29 |
Family
ID=56154992
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610042009.8A Active CN105718289B (zh) | 2016-01-21 | 2016-01-21 | 一种组件关系建立方法及其设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105718289B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106371850A (zh) * | 2016-09-19 | 2017-02-01 | 上海葡萄纬度科技有限公司 | 一种创建可自定义的桌面小组件的方法 |
CN106502541A (zh) * | 2016-11-03 | 2017-03-15 | 贵阳朗玛信息技术股份有限公司 | 一种Android界面的操作方法及装置 |
CN107229477A (zh) * | 2017-06-09 | 2017-10-03 | 华东师范大学 | 一种基于协同开发***的构件交互关系建模方法 |
CN107256308A (zh) * | 2017-06-09 | 2017-10-17 | 华东师范大学 | 一种基于协同开发***的构件交互关系建模*** |
CN107391218A (zh) * | 2017-07-07 | 2017-11-24 | 北京小米移动软件有限公司 | 编译方法及装置、电子设备和计算机可读存储介质 |
CN108762745A (zh) * | 2018-05-25 | 2018-11-06 | 中国光大银行股份有限公司 | 业务的脚本生成方法及装置 |
CN109558139A (zh) * | 2018-11-21 | 2019-04-02 | 北京城市网邻信息技术有限公司 | 组件依赖关系的标示方法、装置、计算机设备及存储介质 |
CN109582303A (zh) * | 2018-10-31 | 2019-04-05 | 平安科技(深圳)有限公司 | 通用组件调用方法、装置、计算机设备及存储介质 |
CN109656558A (zh) * | 2018-12-19 | 2019-04-19 | 四川虹美智能科技有限公司 | 一种生成ui插件的方法及装置 |
CN111324333A (zh) * | 2018-12-17 | 2020-06-23 | 中移(杭州)信息技术有限公司 | 一种基于组件化的软件开发方法及装置 |
CN112214219A (zh) * | 2019-06-24 | 2021-01-12 | 腾讯科技(深圳)有限公司 | 一种组件处理方法、装置、服务器及存储介质 |
CN112579061A (zh) * | 2020-12-17 | 2021-03-30 | 青岛以萨数据技术有限公司 | 一种安卓组件间数据传递方法、设备、***及存储介质 |
CN112769706A (zh) * | 2020-12-24 | 2021-05-07 | 平安银行股份有限公司 | 组件化路由方法及*** |
CN112860232A (zh) * | 2019-11-28 | 2021-05-28 | 杭州萤石软件有限公司 | 组件实施方法及装置 |
CN112965940A (zh) * | 2021-03-04 | 2021-06-15 | 中国邮政储蓄银行股份有限公司 | 项目文件的展示方法及展示装置、电子设备、处理器 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007022110A2 (en) * | 2005-08-12 | 2007-02-22 | Symyx Technologies, Inc. | Event-based library process design |
EP1816562A1 (en) * | 2006-02-03 | 2007-08-08 | Research In Motion Limited | System and method for extending a component-based application platform with custom services |
CN101126988A (zh) * | 2007-10-11 | 2008-02-20 | 金蝶软件(中国)有限公司 | 一种类文件装载方法和*** |
US20080163160A1 (en) * | 2003-09-18 | 2008-07-03 | Microsoft Corporation | Extensibility application programming interface and framework for meta-model objects |
CN101477461A (zh) * | 2009-02-10 | 2009-07-08 | 腾讯科技(深圳)有限公司 | 应用程序界面动态生成装置及方法 |
CN101771762A (zh) * | 2009-01-06 | 2010-07-07 | 北京邮电大学 | 业务***中业务动态加载***及方法 |
CN102549548A (zh) * | 2009-10-09 | 2012-07-04 | 微软公司 | 基于位置的服务中间件 |
CN102637130A (zh) * | 2012-03-15 | 2012-08-15 | 北京神州数码思特奇信息技术股份有限公司 | 一种web项目的建立方法及装置 |
CN103164197A (zh) * | 2011-12-14 | 2013-06-19 | 中兴通讯股份有限公司 | Ui布局自适应方法、移动设备以及布局生成设备 |
US20140282471A1 (en) * | 2013-03-14 | 2014-09-18 | Bitvore Corp. | Dynamically Loaded Plugin Architecture |
US20140337277A1 (en) * | 2013-05-09 | 2014-11-13 | Rockwell Automation Technologies, Inc. | Industrial device and system attestation in a cloud platform |
CN104899015A (zh) * | 2014-03-07 | 2015-09-09 | 上海高达星软件***有限公司 | 一种业务组件管理***及其方法 |
-
2016
- 2016-01-21 CN CN201610042009.8A patent/CN105718289B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080163160A1 (en) * | 2003-09-18 | 2008-07-03 | Microsoft Corporation | Extensibility application programming interface and framework for meta-model objects |
WO2007022110A2 (en) * | 2005-08-12 | 2007-02-22 | Symyx Technologies, Inc. | Event-based library process design |
EP1816562A1 (en) * | 2006-02-03 | 2007-08-08 | Research In Motion Limited | System and method for extending a component-based application platform with custom services |
CN101126988A (zh) * | 2007-10-11 | 2008-02-20 | 金蝶软件(中国)有限公司 | 一种类文件装载方法和*** |
CN101771762A (zh) * | 2009-01-06 | 2010-07-07 | 北京邮电大学 | 业务***中业务动态加载***及方法 |
CN101477461A (zh) * | 2009-02-10 | 2009-07-08 | 腾讯科技(深圳)有限公司 | 应用程序界面动态生成装置及方法 |
CN102549548A (zh) * | 2009-10-09 | 2012-07-04 | 微软公司 | 基于位置的服务中间件 |
CN103164197A (zh) * | 2011-12-14 | 2013-06-19 | 中兴通讯股份有限公司 | Ui布局自适应方法、移动设备以及布局生成设备 |
CN102637130A (zh) * | 2012-03-15 | 2012-08-15 | 北京神州数码思特奇信息技术股份有限公司 | 一种web项目的建立方法及装置 |
US20140282471A1 (en) * | 2013-03-14 | 2014-09-18 | Bitvore Corp. | Dynamically Loaded Plugin Architecture |
WO2014159943A3 (en) * | 2013-03-14 | 2015-03-26 | Bitvore Corp. | Dynamically loaded plugin architecture |
US20140337277A1 (en) * | 2013-05-09 | 2014-11-13 | Rockwell Automation Technologies, Inc. | Industrial device and system attestation in a cloud platform |
CN104899015A (zh) * | 2014-03-07 | 2015-09-09 | 上海高达星软件***有限公司 | 一种业务组件管理***及其方法 |
Non-Patent Citations (2)
Title |
---|
WOSHIWXW765: "使用spring注解 自动装配以及自动扫描机制 实现零xml配置的前提", 《HTTPS://BLOG.CSDN.NET/WOSHIWXW765/ARTICLE/DETAILS/7603497》 * |
程序园: "Java 学习之路 之 编译时处理Annotation(六十二)", 《HTTP://WWW.VOIDCN.COM/ARTICLE/P-VVQJXKBE-BHC.HTML》 * |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106371850A (zh) * | 2016-09-19 | 2017-02-01 | 上海葡萄纬度科技有限公司 | 一种创建可自定义的桌面小组件的方法 |
CN106502541B (zh) * | 2016-11-03 | 2019-08-27 | 贵阳朗玛信息技术股份有限公司 | 一种Android界面的操作方法及装置 |
CN106502541A (zh) * | 2016-11-03 | 2017-03-15 | 贵阳朗玛信息技术股份有限公司 | 一种Android界面的操作方法及装置 |
CN107229477A (zh) * | 2017-06-09 | 2017-10-03 | 华东师范大学 | 一种基于协同开发***的构件交互关系建模方法 |
CN107256308A (zh) * | 2017-06-09 | 2017-10-17 | 华东师范大学 | 一种基于协同开发***的构件交互关系建模*** |
CN107229477B (zh) * | 2017-06-09 | 2019-10-08 | 华东师范大学 | 一种基于协同开发***的构件交互关系建模方法 |
CN107256308B (zh) * | 2017-06-09 | 2019-10-08 | 华东师范大学 | 一种基于协同开发***的构件交互关系建模*** |
CN107391218A (zh) * | 2017-07-07 | 2017-11-24 | 北京小米移动软件有限公司 | 编译方法及装置、电子设备和计算机可读存储介质 |
CN108762745A (zh) * | 2018-05-25 | 2018-11-06 | 中国光大银行股份有限公司 | 业务的脚本生成方法及装置 |
CN109582303B (zh) * | 2018-10-31 | 2024-05-03 | 平安科技(深圳)有限公司 | 通用组件调用方法、装置、计算机设备及存储介质 |
CN109582303A (zh) * | 2018-10-31 | 2019-04-05 | 平安科技(深圳)有限公司 | 通用组件调用方法、装置、计算机设备及存储介质 |
CN109558139A (zh) * | 2018-11-21 | 2019-04-02 | 北京城市网邻信息技术有限公司 | 组件依赖关系的标示方法、装置、计算机设备及存储介质 |
CN111324333B (zh) * | 2018-12-17 | 2022-08-30 | 中移(杭州)信息技术有限公司 | 一种基于组件化的软件开发方法及装置 |
CN111324333A (zh) * | 2018-12-17 | 2020-06-23 | 中移(杭州)信息技术有限公司 | 一种基于组件化的软件开发方法及装置 |
CN109656558A (zh) * | 2018-12-19 | 2019-04-19 | 四川虹美智能科技有限公司 | 一种生成ui插件的方法及装置 |
CN112214219A (zh) * | 2019-06-24 | 2021-01-12 | 腾讯科技(深圳)有限公司 | 一种组件处理方法、装置、服务器及存储介质 |
CN112214219B (zh) * | 2019-06-24 | 2023-11-10 | 腾讯科技(深圳)有限公司 | 一种组件处理方法、装置、服务器及存储介质 |
CN112860232A (zh) * | 2019-11-28 | 2021-05-28 | 杭州萤石软件有限公司 | 组件实施方法及装置 |
CN112579061A (zh) * | 2020-12-17 | 2021-03-30 | 青岛以萨数据技术有限公司 | 一种安卓组件间数据传递方法、设备、***及存储介质 |
CN112769706A (zh) * | 2020-12-24 | 2021-05-07 | 平安银行股份有限公司 | 组件化路由方法及*** |
CN112769706B (zh) * | 2020-12-24 | 2023-03-24 | 平安银行股份有限公司 | 组件化路由方法及*** |
CN112965940A (zh) * | 2021-03-04 | 2021-06-15 | 中国邮政储蓄银行股份有限公司 | 项目文件的展示方法及展示装置、电子设备、处理器 |
CN112965940B (zh) * | 2021-03-04 | 2024-05-28 | 中国邮政储蓄银行股份有限公司 | 项目文件的展示方法及展示装置、电子设备、处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN105718289B (zh) | 2020-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105718289B (zh) | 一种组件关系建立方法及其设备 | |
US8549490B2 (en) | Static code analysis for packaged application customization | |
CN111240684B (zh) | 一种js代码的裁剪方法、装置、介质和电子设备 | |
CN108845839B (zh) | 应用页面加载方法、装置及计算机可读存储介质 | |
CN105718313A (zh) | 应用操作方法和装置 | |
CN111367510A (zh) | 一种安卓功能模块开发的方法及装置 | |
CN108762767B (zh) | 应用发布方法、装置及计算机可读存储介质 | |
CN110895471A (zh) | 安装包生成方法、装置、介质及电子设备 | |
CN111694613A (zh) | 应用程序模块间的解耦方法、电子装置及存储介质 | |
CN113961196A (zh) | 一种自动生成代码方法、装置、设备及可读存储介质 | |
KR101117165B1 (ko) | 이기종 운영체제 계층 모듈에서 동작하는 웹기반어플리케이션의 연동이 가능한 모바일 단말기용 웹 플랫폼 유닛 | |
CN113138768B (zh) | 应用程序包生成方法、装置、电子设备以及可读存储介质 | |
CN117093286B (zh) | 插件生成方法、装置、设备及计算机可读存储介质 | |
CN112835568A (zh) | 一种项目构建方法和装置 | |
CN112965721B (zh) | 基于Android的项目编译方法、装置、计算机设备及存储介质 | |
CN115543440A (zh) | 安卓项目迁移到类安卓***的方法、电子设备和存储介质 | |
CN111158777B (zh) | 组件调用方法、装置及计算机可读存储介质 | |
CN111488144A (zh) | 一种数据处理方法以及设备 | |
CN110826074A (zh) | 一种应用漏洞检测方法、装置和计算机可读存储介质 | |
CN116382718A (zh) | 代码离线部署方法、装置、计算机设备及存储介质 | |
Martinez et al. | Migrating c/c++ software to mobile platforms in the adm context | |
CN106778270B (zh) | 一种恶意应用程序的检测方法及*** | |
CN115328543A (zh) | 一种实现小程序跨平台的***、设备、存储介质 | |
CN111427770B (zh) | 一种资源测试方法及相关设备 | |
CN113760360A (zh) | 一种文件生成方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |