CN111338659B - 安装包生成方法、消息管理方法、装置、设备及存储介质 - Google Patents

安装包生成方法、消息管理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN111338659B
CN111338659B CN202010128126.2A CN202010128126A CN111338659B CN 111338659 B CN111338659 B CN 111338659B CN 202010128126 A CN202010128126 A CN 202010128126A CN 111338659 B CN111338659 B CN 111338659B
Authority
CN
China
Prior art keywords
module
message
event
annotation
distribution code
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.)
Active
Application number
CN202010128126.2A
Other languages
English (en)
Other versions
CN111338659A (zh
Inventor
王星
陈双民
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bigo Technology Pte Ltd
Original Assignee
Guangzhou Baiguoyuan Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Baiguoyuan Information Technology Co Ltd filed Critical Guangzhou Baiguoyuan Information Technology Co Ltd
Priority to CN202010128126.2A priority Critical patent/CN111338659B/zh
Publication of CN111338659A publication Critical patent/CN111338659A/zh
Application granted granted Critical
Publication of CN111338659B publication Critical patent/CN111338659B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例公开了安装包生成方法、消息管理方法、装置、设备及存储介质。其中,安装包生成方法包括:在编译阶段,对第一模块中第一方法对应的第一注解进行解析,其中,第一注解在编码阶段被添加至第一方法,第一注解用于表明第一方法为第二模块产生第一事件时发出的第一消息的响应方法;根据解析结果和第一事件对应的第一事件标识,生成第一消息分发代码,第一消息分发代码用于调用第一方法;基于包含第一消息分发代码的事件总线模块生成对应的应用程序安装包。本发明实施例提供的技术方案,事件总线模块在编译阶段生成,可以提高应用程序运行效率以及运行阶段模块之间的消息通知效率。

Description

安装包生成方法、消息管理方法、装置、设备及存储介质
技术领域
本发明实施例涉及计算机技术领域,尤其涉及安装包生成方法、消息管理方法、装置、设备及存储介质。
背景技术
随着计算机技术的快速发展,各种计算机设备中安装的应用程序也越来越繁多,应用程序的功能日趋丰富和复杂化,使得同一个应用程序中通常包含多个功能模块。
在同一个应用程序中,不同的功能模块之间需要建立消息桥梁,以便实现消息通知以及状态同步等。当需要建立消息桥梁的两个模块通过直接依赖的方式进行消息传递时,模块之间会形成强耦合,使得模块划分失去意义。一般的,需要在两个模块之间建立中间模块以实现模块间的解耦。然而,现有的解耦方式并不理想,也即现有的应用程序内部的消息管理方案并不完善,需要改进。
发明内容
本发明实施例提供了安装包生成方法、消息管理方法、装置、设备及存储介质,可以优化现有的应用程序内部的消息管理方案。
第一方面,本发明实施例提供了一种应用程序安装包生成方法,该方法包括:
在编译阶段,对第一模块中第一方法对应的第一注解进行解析,其中,所述第一注解在编码阶段被添加至所述第一方法,所述第一注解用于表明所述第一方法为第二模块产生第一事件时发出的第一消息的响应方法;
根据解析结果和所述第一事件对应的第一事件标识,生成第一消息分发代码,所述第一消息分发代码用于调用所述第一方法;
基于包含所述第一消息分发代码的事件总线模块生成对应的应用程序安装包。
第二方面,本发明实施例提供了一种消息管理方法,应用于应用程序的运行阶段,所述应用程序对应的安装包通过本发明实施例提供的应用程序安装包生成方法生成,所述消息管理方法包括:
通过事件总线模块接收第二模块发送的第一消息,其中,所述第二模块在产生第一事件时发出所述第一消息;
根据所述第一消息对应的第一事件标识确定所述事件总线模块中对应的第一消息分发代码;
利用所述第一消息分发代码调用所述第一方法,以使所述第二模块通过执行所述第一方法对所述第一消息进行响应。
第三方面,本发明实施例提供了一种应用程序安装包生成装置,该装置包括:
解析单元,用于在编译阶段,对第一模块中第一方法对应的第一注解进行解析,其中,所述第一注解在编码阶段被添加至所述第一方法,所述第一注解用于表明所述第一方法为第二模块产生第一事件时发出的第一消息的响应方法;
消息分发代码生成单元,用于根据解析结果和所述第一事件对应的第一事件标识,生成第一消息分发代码,所述第一消息分发代码用于调用所述第一方法;
安装包生成单元,用于基于包含所述第一消息分发代码的事件总线模块生成对应的应用程序安装包。
第四方面,本发明实施例提供了一种消息管理装置,应用于应用程序的运行阶段,所述应用程序对应的安装包通过本发明实施例提供的应用程序安装包生成方法生成,该装置包括:
消息接收单元,用于通过事件总线模块接收第二模块发送的第一消息,其中,所述第二模块在产生第一事件时发出所述第一消息;
消息分发代码确定单元,用于根据所述第一消息对应的第一事件标识确定所述事件总线模块中对应的第一消息分发代码;
方法调用单元,用于利用所述第一消息分发代码调用所述第一方法,以使所述第二模块通过执行所述第一方法对所述第一消息进行响应。
第五方面,本发明实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明实施例提供的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例提供的方法。
本发明实施例中提供的应用程序安装包生成方案,在编译阶段,对第一模块中第一方法对应的第一注解进行解析,其中,第一注解在编码阶段被添加至第一方法,第一注解用于表明第一方法为第二模块产生第一事件时发出的第一消息的响应方法,根据解析结果和第一事件对应的第一事件标识,生成第一消息分发代码,第一消息分发代码用于调用第一方法,基于包含第一消息分发代码的事件总线模块生成对应的应用程序安装包。通过采用上述技术方案,在应用程序的编码阶段为第一模块中的方法添加注解,表明第一模块关注第二模块产生的事件,通过被添加注解的方法对该事件对应的消息进行响应,在编译阶段,自动解析注解并自动生成作为消息传递组件的事件总线模块,使得应用程序运行阶段,可以利用事件总线模块接收第二模块产生的对应该事件的消息,并调用第一模块中的方法进行响应,从而实现将第二模块的消息通知到第一模块,事件总线模块在编译阶段生成,可以提高应用程序运行效率以及运行阶段模块之间的消息通知效率。
附图说明
图1为现有技术中的一种应用程序中模块间消息传递示意图;
图2为本发明实施例提供的一种应用程序安装包生成方法的流程示意图;
图3为本发明实施例提供的又一种应用程序安装包生成方法的流程示意图;
图4为本发明实施例提供的又一种消息管理方法的流程示意图;
图5为本发明实施例提供的一种应用程序中模块间消息传递示意图;
图6为本发明实施例提供的一种应用程序安装包生成装置的结构框图;
图7为本发明实施例提供的一种消息管理装置的结构框图;
图8为本发明实施例提供的一种计算机设备的结构框图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
为了便于理解本发明实施例,下面对相关技术进行介绍。目前,相关技术中存在一种基于第三方开源框架事件总线(EventBus)的方案。EventBus是一款在安卓(Android)开发中使用的发布及订阅事件总线框架,基于观察者模式,将事件的接收者和发送者分开,简化了组件之间的通信,使用简单。在Android开发的各种场景都扮演着非常重要的角色,例如消息通知以及模块间状态同步。图1为现有技术中的一种应用程序中模块间消息传递示意图,基于EventBus的方案是在应用程序的编码阶段以注解(Annotation)的方式给观察者(模块B)类的函数方法打标记,在运行期间向EventBus注册观察者,通过反射解析标记,从而找到这个标记的方法,在做消息分发的时候以反射的方式进行这个方法的调用,当模块A需要向模块B发送消息通知时,由EventBus取出缓存的方法,以invoke方式通知模块B。发明人发现,该方案中被标记的模块需要在运行阶段进行观察者注册,且运行阶段涉及反射处理,这样对应用程序性能有一定的损耗,影响模块之间的消息通知效率。本发明实施例中,在应用程序的编译期间解析注解并生成事件总线模块,可以提高应用程序运行阶段模块之间的消息通知效率。
图2为本发明实施例提供的一种应用程序安装包生成方法的流程示意图,该方法可以由应用程序安装包生成装置执行,其中该装置可由软件和/或硬件实现,一般可集成在计算机设备中。如图2所示,该方法包括:
步骤201、在编译阶段,对第一模块中第一方法对应的第一注解进行解析,其中,所述第一注解在编码阶段被添加至所述第一方法,所述第一注解用于表明所述第一方法为第二模块产生第一事件时发出的第一消息的响应方法。
示例性的,计算机设备可包括手机、平板电脑、笔记本电脑以及个人电脑等,设备中安装的操作系统不做限定。本发明实施例中,对应用程序的具体类型不做限定,例如可以是直播类应用程序等。应用程序内部可以包含至少两个需要进行消息通信的模块,具体的模块划分可以根据应用程序具体的开发需求确定。以直播类应用程序为例,可能包含直播间连麦模块、主题房模块和对决(PK)模块等。应用程序内部的两个模块之间经常会有消息通信的需求,例如模块A产生一个事件时,若模块B关注这个事件,可能需要模块A发送该事件对应的通知消息到模块B,模块B再对该通知消息进行响应等。
示例性的,第一模块可以是应用程序里的除事件总线模块外的任意一个模块,该模块关注某个事件时,可以对第一模块中对该事件的响应方法添加注解,注解的具体内容不做限定,注解用于表明所对应的方法为其他模块(例如第二模块)产生该事件时发出的消息的响应方法,也即表明第一模块关注第二模块产生的该事件。
本发明实施例中,在应用程序的编译阶段对模块中方法的注解进行解析,而不是等到应用程序的运行阶段再进行解析,可提高应用程序的运行效率。
步骤202、根据解析结果和所述第一事件对应的第一事件标识,生成第一消息分发代码,所述第一消息分发代码用于调用所述第一方法。
示例性的,本发明实施例中可以以事件标识对事件进行身份区分,第一事件标识可以包含于第一注解中,也可独立于第一注解单独附加在第一方法上。可根据对第一注解的解析结果和第一事件标识自动生成第一消息分发代码,也即相当于在编译阶段完成了作为观察者的第一模块的注册过程,利用消息分发代码使得事件标识和响应方法形成了一一对应的关系,当收到第二模块发送的第一事件对应的消息时,便可基于第一消息分发代码确定并调用对应的第一方法。
步骤203、基于包含所述第一消息分发代码的事件总线模块生成对应的应用程序安装包。
示例性的,事件总线模块中可包含多段消息分发代码,第一消息分发代码包含其中。多段消息分发代码可对应于同一个模块或多个模块。当仅存在一个模块关注其他模块的事件时,多段消息分发代码可对应于同一个模块;当仅存在多个模块关注其他模块的事件时,多段消息分发代码对应于多个模块。
本领域技术人员可以理解的是,在生成应用程序的安装包时,还需要其他代码或信息,如各个模块的相关代码等,本发明实施例在此不做一一列举。
本发明实施例中提供的应用程序安装包生成方法,在编译阶段,对第一模块中第一方法对应的第一注解进行解析,其中,第一注解在编码阶段被添加至第一方法,第一注解用于表明第一方法为第二模块产生第一事件时发出的第一消息的响应方法,根据解析结果和第一事件对应的第一事件标识,生成第一消息分发代码,第一消息分发代码用于调用第一方法,基于包含第一消息分发代码的事件总线模块生成对应的应用程序安装包。通过采用上述技术方案,在应用程序的编码阶段为第一模块中的方法添加注解,表明第一模块关注第二模块产生的事件,通过被添加注解的方法对该事件对应的消息进行响应,在编译阶段,自动解析注解并自动生成作为消息传递组件的事件总线模块,使得应用程序运行阶段,可以利用事件总线模块接收第二模块产生的对应该事件的消息,并调用第一模块中的方法进行响应,从而实现将第二模块的消息通知到第一模块,由于事件总线模块在编译阶段生成,因此,可以提高应用程序运行效率以及运行阶段模块之间的消息通知效率。
在一些实施例中,对第一模块中第一方法对应的第一注解进行解析,可包括:利用预设注解处理器对第一模块中第一方法对应的第一注解进行解析;根据解析结果和所述第一事件对应的第一事件标识,生成第一消息分发代码,包括:利用所述预设注解处理器根据解析结果和所述第一事件对应的第一事件标识,生成第一消息分发代码。这样设置的好处在于,可以快速自动对第一注解进行解析并生成相应的消息分发代码。预设注解处理器可以是任意一种注解处理器,本发明实施例不做限定。进一步的,预设注解处理器可以通过预先编写的消息分发代码生成逻辑实现。消息分发代码例如可以是java代码。开发人员可以预先编写用于生成消息分发代码的逻辑,该逻辑也可以以java代码的形式存在,其作用是用来生成消息分发的java代码。可选的,预设注解处理器包括Java中的注解处理器(Annotation Processing Tool,APT),APT是Java当中一种注解处理工具,可以用来在编译时扫描和处理注解,通过APT可以获取到注解和被注解对象的相关信息,在得到这些信息后可以根据需求来自动的生成一些代码或者文件。本发明实施例可以利用APT来解析注解并基于预先编写的消息分发代码生成逻辑生成对应的消息分发代码。
在一些实施例中,所述利用所述预设注解处理器根据解析结果和所述第一事件对应的第一事件标识,生成第一消息分发代码,包括:利用所述预设注解处理器基于预设代码生成框架,根据解析结果和所述第一事件对应的第一事件标识,生成第一消息分发代码。这样设置的好处在于,可以基于代码生成框架提供的相关接口便捷地实现代码的自动生成。可选的,预设代码生成框架包括Javapoet。Javapoet可理解为用来生成java类的工具包,是square推出的开源java代码生成框架,提供Java应用程序接口(Application ProgrammingInterface,API)生成java源文件,可以很方便的使用它根据注解、数据库模式及协议格式等来对应生成代码。通过这种自动化生成代码的方式,可以用更加简洁的方式替代繁琐冗杂的重复工作。
图3为本发明实施例提供的又一种应用程序安装包生成方法的流程示意图,如图3所示,该方法包括:
步骤301、在编译阶段,利用预设注解处理器对第一模块中第一方法对应的第一注解进行解析,其中,所述第一注解在编码阶段被添加至所述第一方法,所述第一注解用于表明所述第一方法为第二模块产生第一事件时发出的第一消息的响应方法。
其中,预设注解处理器为Java中的APT。
示例性的,假设对于应用程序中的模块A(第二模块)和模块B(第一模块),模块A和模块B是通信双方,都可以有自己的收发消息机制,可以实现一个共同的接口。该接口可以实现两个方面的功能,一个是对收到消息的响应处理,一个是消息的发送,即通知给观察者。事件收发接口可以由模块A和模块B双方各自实现。
示例性的,事件收发接口中可以包含事件响应列表,又称事件响应处理实现列表,其中可以包含多个方法,第一方法包含于该多个方法中。以第一模块的事件响应列表为例,该列表中包含的方法都在编码阶段被添加有注解。
以模块A需要给模块B发送消息为例,模块B需要对其事件响应列表中的方法添加注解,该注解可以表现为EventToObserve标记。示例性的,以媒体源改变事件和图像混合事件为例,注解可以是:
Public interface MicconnectEvent extends IGetTag{
@EventToObserve
(eventId=ControllerEventID.EVENTID_MEDIA_SRC_CHANGE)
void onMediaSrcInfo(int dirtyUid,boolean needSave,MediaSrcInfomediaSrcInfo);
@EventToObserve(eventId=ControllerEventID.EVENTID_VIDEO_MIXED)
void onVideoMixed(int videoMixInfo);
可以看出,每一个关注的事件的响应方法都做了EventToObserve标记,并标记了一个事件标识eventid,eventid和关注事件方法形成了一一对应的关系,如果收到事件对应的消息,就知道需要调用哪个方法。
可选的,所述事件响应列表存在于所述第一模块中的至少两个位置处。也即,事件响应列表可以有多个实现,代表在模块B的多个地方都关注这些事件,可以集中到getEventHandlers()接口中返回,供事件总线模块调用。
步骤302、利用预设注解处理器基于预设代码生成框架,根据解析结果和所述第一事件对应的第一事件标识,生成第一消息分发代码。
其中,所述预设代码生成框架包括Javapoet。
因为模块B和模块A没有直接依赖性关系,所以模块A不能直接调用注解方法去通知模块B,而是需要一个共同依赖的模块去通信,这个模块则是我们用Javapoet生成的事件总线模块。利用预设注解处理器对注解进行解析后,也即解析上面所有的EventToObserve注解,根据注解解析出来方法,产生去调用这些方法的代码,而达到事件通知的效果。预设注解处理器的实现包括是生成消息分发代码的逻辑,该逻辑以java代码的形式存在,作用是用来生成消息分发的java代码,生成过程中借助了Javapoet去实现,Javapoet提供了一些简易的接口去生成java类,它就是一个用来生成java类的工具包,根据需要的消息通知逻辑,生成消息通知代码,也即消息分发代码。根据不同的eventid走不同的消息执行,eventid可理解为是EventToObserve注解的id,这样eventid和方法通过注解产生了一一对应的关系。
步骤303、基于包含所述第一消息分发代码的事件总线模块生成对应的应用程序安装包。
本发明实施例提供的应用程序安装包生成方法,在应用程序的编码阶段为第一模块中的方法添加注解,表明第一模块关注第二模块产生的事件,通过被添加注解的方法对该事件对应的消息进行响应,在编译阶段,利用APT自动解析注解并借助Javapoet自动生成作为消息传递组件的事件总线模块,使得应用程序运行阶段,可以利用事件总线模块接收第二模块产生的对应该事件的消息,并调用第一模块中的方法进行响应,从而实现将第二模块的消息通知到第一模块,由于事件总线模块在编译阶段生成,因此,可以提高应用程序运行效率以及运行阶段模块之间的消息通知效率,并且,消息分发机制代码无需开发人员手动编写,而是由APT结合Javapoet自动生成,也提高了应用程序的开发效率。若需要添加新的关注事件,可添加新的注解方法,编译极端变回自动生成相应的消息分发实现代码。
图4为本发明实施例提供的又一种消息管理方法的流程示意图,该方法应用于应用程序的运行阶段,可以由消息管理装置执行,其中该装置可由软件和/或硬件实现,一般可集成在计算机设备中。其中,应用程序的安装包通过本发明实施例提供的应用程序安装包生成方法生成。如图4所示,该方法包括:
步骤401、通过事件总线模块接收第二模块发送的第一消息,其中,所述第二模块在产生第一事件时发出所述第一消息。
示例性的,计算机设备可包括手机、平板电脑、笔记本电脑以及个人电脑等,设备中安装的操作系统不做限定。
示例性的,因为第二模块和第一模块没有直接依赖性关系,所以第二模块不能直接调用注解方法去通知第一模块,因此,第二模块在产生第一事件时,将对应的第一消息发送给事件总线模块,由事件总线模块来接收第一消息。
以模块A向模块B发送消息为例,假设发送的是图像混合事件对应的消息onVideoMixed(videoMixInfo),将事件总线模块定义为Base,那么模块A发送消息可表示如下:A.IControllerProxy.onEvent(eventid,this,videoMixInfo)。
步骤402、根据所述第一消息对应的第一事件标识确定所述事件总线模块中对应的第一消息分发代码。
示例性的,事件标识与响应方法之间通过消息分发代码建立了对应关系,因此可以根据第一事件标识确定事件总线模块中对应的用于调用第一方法的第一消息分发代码。
如上述举例,事件总线模块将起到消息中转的作用,可表示为:Base.onEvent(eventid,IControllerProxy,videoMixInfo)。
步骤403、利用所述第一消息分发代码调用所述第一方法,以使所述第二模块通过执行所述第一方法对所述第一消息进行响应。
如上述举例,事件总线模块利用根据注解生成的消息分发代码调用模块B中对应的方法,可表示为:B.MicconnectControllerProxy&&Proxy.onEvent。
随后,模块B会执行被调用的方法,可表示为:B.eventHandler.onVideoMixed()。
本发明实施例提供的消息管理方法,在应用程序的运行阶段,通过事件总线模块接收第二模块发送的第一消息,根据所述第一消息对应的第一事件标识确定事件总线模块中对应的第一消息分发代码,利用第一消息分发代码调用第一方法,以使第二模块通过执行第一方法对第一消息进行响应。通过采用上述技术方案,在应用程序运行阶段,两个模块之间通过事件总线模块进行解耦,并实现消息传递,由于不需要采用反射机制,而是直接利用编译阶段自动生成的消息分发代码实现方法调用及消息响应,可提高应用程序的运行效率以及消息通知的效率。
在一些实施例中,所述第一消息中携带参数信息;所述利用所述第一消息分发代码调用所述第一方法,以使所述第二模块通过执行所述第一方法对所述第一消息进行响应,包括:利用所述第一消息分发代码以及所述参数信息调用所述第一方法,以使所述第二模块通过依据所述参数信息执行所述第一方法对所述第一消息进行响应。这样设置的好处在于,能够根据第一消息中携带的参数信息调用对应的方法,将参数信息输入至所调用的方法中,更加准确地对消息进行响应。其中,参数信息可以包含一个或多个参数的参数值,例如参数列表。
图5为本发明实施例提供的一种应用程序中模块间消息传递示意图,可参考图1和图5对本发明实施例提供的方案进行进一步理解。如图5,在编码阶段,为模块B的方法添加注释,在编译阶段,结合APT和Javapoet解析注解并按一定的格式为其自动生成消息传递组件(事件总线模块)。在运行阶段,自动生成的事件总线模块作为模块A和模块B的桥梁可以直接无耗时通知到对方,省去了现有技术中EventBus方案中反射调用过程。
图6为本发明实施例提供的一种应用程序安装包生成装置的结构框图,该装置可由软件和/或硬件实现,一般可集成在计算机设备中,可通过执行应用程序安装包生成方法来生成应用程序安装包。如图6所示,该装置包括:
解析单元601,用于在编译阶段,对第一模块中第一方法对应的第一注解进行解析,其中,所述第一注解在编码阶段被添加至所述第一方法,所述第一注解用于表明所述第一方法为第二模块产生第一事件时发出的第一消息的响应方法;
消息分发代码生成单元602,用于根据解析结果和所述第一事件对应的第一事件标识,生成第一消息分发代码,所述第一消息分发代码用于调用所述第一方法;
安装包生成单元603,用于基于包含所述第一消息分发代码的事件总线模块生成对应的应用程序安装包。
本发明实施例提供的应用程序安装包生成装置,在应用程序的编码阶段为第一模块中的方法添加注解,表明第一模块关注第二模块产生的事件,通过被添加注解的方法对该事件对应的消息进行响应,在编译阶段,自动解析注解并自动生成作为消息传递组件的事件总线模块,使得应用程序运行阶段,可以利用事件总线模块接收第二模块产生的对应该事件的消息,并调用第一模块中的方法进行响应,从而实现将第二模块的消息通知到第一模块,由于事件总线模块在编译阶段生成,因此,可以提高应用程序运行效率以及运行阶段模块之间的消息通知效率。
图7为本发明实施例提供的一种消息管理装置的结构框图,该装置应用于应用程序的运行阶段,所述应用程序对应的安装包通过本发明实施例提供的应用程序安装包生成方法生成,该装置可由软件和/或硬件实现,一般可集成在计算机设备中,可通过执行消息管理方法来进行消息管理。如图7所示,该装置包括:
消息接收单元701,用于通过事件总线模块接收第二模块发送的第一消息,其中,所述第二模块在产生第一事件时发出所述第一消息;
消息分发代码确定单元702,用于根据所述第一消息对应的第一事件标识确定所述事件总线模块中对应的第一消息分发代码;
方法调用单元703,用于利用所述第一消息分发代码调用所述第一方法,以使所述第二模块通过执行所述第一方法对所述第一消息进行响应。
本发明实施例提供的消息管理装置,在应用程序运行阶段,两个模块之间通过事件总线模块进行解耦,并实现消息传递,由于不需要采用反射机制,而是直接利用编译阶段自动生成的消息分发代码实现方法调用及消息响应,可提高应用程序的运行效率以及消息通知的效率。
在一些实施例中,所述第一消息中携带参数信息;所述利用所述第一消息分发代码调用所述第一方法,以使所述第二模块通过执行所述第一方法对所述第一消息进行响应,包括:利用所述第一消息分发代码以及所述参数信息调用所述第一方法,以使所述第二模块通过依据所述参数信息执行所述第一方法对所述第一消息进行响应。
本发明实施例提供了一种计算机设备,该计算机设备中可集成本发明实施例提供的应用程序安装包生成装置和/或消息管理装置。图8为本发明实施例提供的一种计算机设备的结构框图。计算机设备800包括存储器801、处理器802及存储在存储器801上并可在处理器802上运行的计算机程序,所述处理器802执行所述计算机程序时实现本发明实施例提供的应用程序安装包生成方法和/或消息管理方法。
本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本发明实施例提供的应用程序安装包生成方法和/或消息管理方法。
上述实施例中提供的应用程序安装包生成装置、消息管理装置、设备以及存储介质可执行本发明相应实施例所提供方法,具备执行方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的方法。
注意,上述仅为本发明的较佳实施例。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由权利要求范围决定。

Claims (15)

1.一种应用程序安装包生成方法,其特征在于,包括:
在编译阶段,对第一模块中第一方法对应的第一注解进行解析,其中,所述第一注解在编码阶段被添加至所述第一方法,所述第一注解用于表明所述第一方法为第二模块产生第一事件时发出的第一消息的响应方法;
根据解析结果和所述第一事件对应的第一事件标识,生成第一消息分发代码,所述第一消息分发代码用于调用所述第一方法;
基于包含所述第一消息分发代码的事件总线模块生成对应的应用程序安装包。
2.根据权利要求1所述的方法,其特征在于,所述对第一模块中第一方法对应的第一注解进行解析,包括:
利用预设注解处理器对第一模块中第一方法对应的第一注解进行解析;
所述根据解析结果和所述第一事件对应的第一事件标识,生成第一消息分发代码,包括:
利用所述预设注解处理器根据解析结果和所述第一事件对应的第一事件标识,生成第一消息分发代码。
3.根据权利要求2所述的方法,其特征在于,所述预设注解处理器通过预先编写的消息分发代码生成逻辑实现。
4.根据权利要求2所述的方法,其特征在于,所述预设注解处理器包括Java中的注解处理器APT。
5.根据权利要求2所述的方法,其特征在于,所述利用所述预设注解处理器根据解析结果和所述第一事件对应的第一事件标识,生成第一消息分发代码,包括:
利用所述预设注解处理器基于预设代码生成框架,根据解析结果和所述第一事件对应的第一事件标识,生成第一消息分发代码。
6.根据权利要求5所述的方法,其特征在于,所述预设代码生成框架包括Javapoet。
7.根据权利要求1所述的方法,其特征在于,所述第一模块中包含事件响应列表,所述事件响应列表中包含多个方法,所述第一方法包含于所述多个方法中。
8.根据权利要求7所述的方法,其特征在于,所述事件响应列表存在于所述第一模块中的至少两个位置处。
9.根据权利要求1-8任一所述的方法,其特征在于,所述应用程序为直播类应用程序,所述第一模块包括直播间连麦模块、主题房模块和对决模块中的任意一个,所述第二模块包括直播间连麦模块、主题房模块和对决模块中的任意一个,所述第一模块和所述第二模块不同。
10.一种消息管理方法,其特征在于,应用于应用程序的运行阶段,所述应用程序对应的安装包通过如权利要求1-9任一所述的方法生成,所述消息管理方法包括:
通过事件总线模块接收第二模块发送的第一消息,其中,所述第二模块在产生第一事件时发出所述第一消息;
根据所述第一消息对应的第一事件标识确定所述事件总线模块中对应的第一消息分发代码;
利用所述第一消息分发代码调用所述第一方法,以使所述第二模块通过执行所述第一方法对所述第一消息进行响应。
11.根据权利要求10所述的方法,其特征在于,所述第一消息中携带参数信息;
所述利用所述第一消息分发代码调用所述第一方法,以使所述第二模块通过执行所述第一方法对所述第一消息进行响应,包括:
利用所述第一消息分发代码以及所述参数信息调用所述第一方法,以使所述第二模块通过依据所述参数信息执行所述第一方法对所述第一消息进行响应。
12.一种应用程序安装包生成装置,其特征在于,包括:
解析单元,用于在编译阶段,对第一模块中第一方法对应的第一注解进行解析,其中,所述第一注解在编码阶段被添加至所述第一方法,所述第一注解用于表明所述第一方法为第二模块产生第一事件时发出的第一消息的响应方法;
消息分发代码生成单元,用于根据解析结果和所述第一事件对应的第一事件标识,生成第一消息分发代码,所述第一消息分发代码用于调用所述第一方法;
安装包生成单元,用于基于包含所述第一消息分发代码的事件总线模块生成对应的应用程序安装包。
13.一种消息管理装置,其特征在于,应用于应用程序的运行阶段,所述应用程序对应的安装包通过如权利要求1-9任一所述的方法生成,所述装置包括:
消息接收单元,用于通过事件总线模块接收第二模块发送的第一消息,其中,所述第二模块在产生第一事件时发出所述第一消息;
消息分发代码确定单元,用于根据所述第一消息对应的第一事件标识确定所述事件总线模块中对应的第一消息分发代码;
方法调用单元,用于利用所述第一消息分发代码调用所述第一方法,以使所述第二模块通过执行所述第一方法对所述第一消息进行响应。
14.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-11任一项所述的方法。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-11中任一所述的方法。
CN202010128126.2A 2020-02-28 2020-02-28 安装包生成方法、消息管理方法、装置、设备及存储介质 Active CN111338659B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010128126.2A CN111338659B (zh) 2020-02-28 2020-02-28 安装包生成方法、消息管理方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010128126.2A CN111338659B (zh) 2020-02-28 2020-02-28 安装包生成方法、消息管理方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN111338659A CN111338659A (zh) 2020-06-26
CN111338659B true CN111338659B (zh) 2023-06-02

Family

ID=71183981

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010128126.2A Active CN111338659B (zh) 2020-02-28 2020-02-28 安装包生成方法、消息管理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN111338659B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107450922A (zh) * 2017-07-27 2017-12-08 武汉斗鱼网络科技有限公司 安卓中弹幕事件自动注册的方法、存储介质、设备及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107066341B (zh) * 2017-04-12 2020-08-04 武汉斗鱼网络科技有限公司 一种软件模块间的事件路由框架及方法
CN110716715B (zh) * 2019-10-18 2024-01-19 恒生电子股份有限公司 一种应用程序开发方法、装置、设备及介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107450922A (zh) * 2017-07-27 2017-12-08 武汉斗鱼网络科技有限公司 安卓中弹幕事件自动注册的方法、存储介质、设备及系统

Also Published As

Publication number Publication date
CN111338659A (zh) 2020-06-26

Similar Documents

Publication Publication Date Title
CN108345531B (zh) 一种测试方法、装置及系统
US7017148B2 (en) Apparatus and method for UPnP device code generation using XML
US7937624B2 (en) Method for handling a detected error in a script-based application
US7752598B2 (en) Generating executable objects implementing methods for an information model
CN110532020A (zh) 一种微服务编排的数据处理方法、装置及系统
US20030009539A1 (en) Distributed object middleware connection method
US20090282136A1 (en) Automatic Generation of Web Service client for Web Services Interoperability Testing
KR20080084966A (ko) 서비스 계약 문서의 웹 서비스 구현 변경 방법 및 이를구현하는 데 사용되는 컴퓨터 프로그램 제품
JP5174661B2 (ja) Crm機能の拡張にメッセージを使用する方法
US9442822B2 (en) Providing a visual representation of a sub-set of a visual program
US20080259930A1 (en) Message Flow Model of Interactions Between Distributed Services
CN114579194B (zh) 一种基于Spring远程调用的异常处理方法和系统
CN113296742A (zh) App数据处理方法、装置及移动终端
Bravetti et al. Contract-driven implementation of choreographies
She et al. Hermes: A tool for testing mobile device applications
CN111338659B (zh) 安装包生成方法、消息管理方法、装置、设备及存储介质
RU2373565C2 (ru) Автоматическая генерация кода моделирования схемы обмена сообщениями
CN109189591B (zh) 用于调用应用组件的方法和装置
CN116361137A (zh) 业务调用链追踪方法、装置、电子设备和可读存储介质
Goyal Savant Guide
Aldred et al. Understanding the challenges in getting together: The semantics of decoupling in middleware
KR102679305B1 (ko) 외부 시스템들 간 연계 흐름을 제공하는 흐름 관리 시스템 및 연계 흐름 관리 방법
Husseini Orabi et al. A textual notation for modeling and generating code for composite structure
JP2003076563A (ja) 分散オブジェクトミドルウェア連携方法及びプログラムを記録した記録媒体並びにプログラム
US20160248823A1 (en) Messaging protocol

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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20231010

Address after: 31a, 15th floor, building 30, maple commercial city, bangrang Road, Brazil

Patentee after: Baiguoyuan Technology (Singapore) Co.,Ltd.

Address before: 5-13 / F, West Tower, building C, 274 Xingtai Road, Shiqiao street, Panyu District, Guangzhou, Guangdong 510000

Patentee before: GUANGZHOU BAIGUOYUAN INFORMATION TECHNOLOGY Co.,Ltd.