CN112764729B - 应用软件开发方法、装置、计算机设备及可读存储介质 - Google Patents
应用软件开发方法、装置、计算机设备及可读存储介质 Download PDFInfo
- Publication number
- CN112764729B CN112764729B CN202110026536.0A CN202110026536A CN112764729B CN 112764729 B CN112764729 B CN 112764729B CN 202110026536 A CN202110026536 A CN 202110026536A CN 112764729 B CN112764729 B CN 112764729B
- Authority
- CN
- China
- Prior art keywords
- service
- project
- software development
- application software
- class
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 140
- 238000011161 development Methods 0.000 claims abstract description 49
- 230000007246 mechanism Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 8
- 238000012216 screening Methods 0.000 claims description 7
- 239000011800 void material Substances 0.000 claims description 6
- 230000008569 process Effects 0.000 abstract description 20
- 230000010354 integration Effects 0.000 abstract description 19
- 238000012545 processing Methods 0.000 abstract description 13
- 230000001960 triggered effect Effects 0.000 abstract description 10
- 238000012544 monitoring process Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 235000019800 disodium phosphate Nutrition 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000011423 initialization method Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000012925 reference material Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000013585 weight reducing agent Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种应用软件开发方法、装置、计算机设备以及可读存储介质,该方法包括创建基类,基类通过钩子与应用软件开发项目中的项目开发代表相关联;加载并初始化应用软件开发项目中待集成的服务业务;根据钩子触发响应应用软件开发项目中各服务业务的关键回调。本发明根据钩子将多个项目集成一系列模块的重复的集成步骤集中统一处理,不需要重写各个服务业务相关的系统回调方法,极大程度减少重复开发工作,以及降低了软件开发过程中各种数据处理代码冗余,提高软件开发代码执行流畅力。同时不需要对各个服务业务的生命周期管理及监听回调数据,根据钩子,当APP执行到生命周期中的相应方法时将会通过钩子同时触发基类的相关方法。
Description
技术领域
本发明涉及软件开发领域,具体涉及功能模块集成领域,特别是涉及一种应用软件开发方法、装置、计算机设备及可读存储介质。
背景技术
随着计算机技术的高速发展,应用程序(Application,APP)的开发成为当下的热门行业,移动端应用程序的快速开发和迭代,以及对应用程序开发功能模块集成,降低代码冗余是开发过程中的重要课题。
在应用程序开发中,经常需要集成独立的功能模块或者第三方SDK(SoftwareDevelopment Kit,软件开发工具包)对项目开发中重复冗余的功能模块集成。
软件开发工具包SDK是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合。它可以简单的为某个程序设计语言提供应用程序接口API(Application Programming Interface,应用程序接口)的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。一般的工具包括用于调试和其他用途的实用工具。SDK还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。通常在对某一类软件产品的相关文档进行开发时,需要在软件产品中接入SDK。
目前,软件开发过程中集成方式主要包括手动集成和通过包管理工具(如Cocoapods工具包)自动集成两种方式。其中,手动集成的方式需要手动配置待集成模块所需要的项目配置,并且手动将模块的所有源代码以及依赖库导入工程文件中,过程比较繁琐;而通过包管理工具集成可以自动完成前述步骤,但无论是手动集成还是通过包管理工具自动集成,需要在完成之后在AppDelegate文件(应用程序委派,是APP启动代理,对Application的整个生命周期进行管理)中重写各个模块相关的系统回调方法,而每个模块对这些方法中获取到数据的处理方式又各不相同,随着集成的模块越来越多,各种数据处理代码愈加冗余,AppDelegate机制变得越来越臃肿,亟待瘦身。即当一个APP开发项目有多个业务项目都需要集成一系列模块(如分享、推送、支付等)的时候,将这个重复的集成步骤进行统一处理是一个非常有必要的事情,这样既能够减少很大一部分重复开发工作,也能够将冗余的代码剥离出去,并可使得各个开发项目的开发人员不必关心模块需要从哪些系统回调中监听数据,也不需要关心模块的生命周期管理,业务开发过程中可直接使用相应模块功能,而无需关心模块的集成过程和依赖情况。
发明内容
为了解决上述问题,本发明的目的是提供一种应用软件开发方法、装置、计算机设备及计算机可读存储介质,该方法在创建基类并对关键方法留下钩子,以使各服务业务执行时通过所述钩子触发响应关键回调,实现将服务业务重复的集成步骤集成统一处理,将冗余的代码剥离,减少重复开发工作。
基于此,本发明提供了一种应用软件开发方法,所述应用软件开发方法包括以下步骤:
创建基类,所述基类通过钩子与应用软件开发项目中的项目开发代表相关联;
加载并初始化软件所述应用软件开发项目中待集成的服务业务;
根据所述钩子触发响应所述应用软件开发项目中各服务业务的关键回调。
其中,所述基类中包括生命周期关键方法和非生命周期关键方法,所述基类通过钩子与应用软件开发项目中的项目开发代表相关联,包括:
直接在所述项目开发代表中留下钩子与所述基类中的生命周期关键方法关联;;
所述基类中的非生命周期关键方法通过运行时机制生成并动态添加到所述项目开发代表中再留下钩子关联。
其中,所述加载并初始化所述应用软件开发项目中待集成的服务业务,包括:
获取需有加载并初始化的所述服务业务中的服务类;
加载实例化所述服务类;
对所述服务类进行业务配置,初始化所述服务类。
其中,所述服务类包括继承于所述基类并需要通过所述钩子进行关键回调的服务类。
其中,所述服务类具有开关标识,所述获取需有加载并初始化的所述服务业务中的服务类,包括:
遍历轮询所述应用软件开发项目中所有的类,筛选继承于所述基类的服务类,然后根据所述服务类的开关标识筛选需要加载和初始化的类。
其中,在加载并初始化软件所述应用软件开发项目中待集成的服务业务之前,还包括:
导入所述应用软件开发项目中的所有类。
其中,所述应用软件开发项目中各服务业务提供一个对外接口。
本发明还提供了一种应用软件开发装置,包括:
基类创建模块,用于创建基类,所述基类通过钩子与应用软件开发项目中的项目开发代表相关联;
加载初始化模块,用于加载并初始化软件所述应用软件开发项目中待集成的服务业务;
触发回调模块,用于根据所述钩子触发响应所述应用软件开发项目中各服务业务的关键回调。
本发明还提供了一种计算机设备,包括存储器、处理器和网络接口,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现应用软件开发方法的步骤。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现应用软件开发方法的步骤。
在本发明中,所述应用软件开发方法包括:创建基类,所述基类通过钩子与应用软件开发项目中的项目开发代表相关联;加载并初始化软件所述应用软件开发项目中待集成的服务业务;根据所述钩子触发响应所述应用软件开发项目中各服务业务的关键回调。本发明根据所述钩子,一方面,不需要重写各个服务业务相关的系统回调方法,极大程度降低了软件开发过程中各种数据处理代码冗余,提高软件开发代码执行流畅力。一方面不需要对各个所述服务业务的生命周期管理及监听回调数据,根据所述基类中对App生命周期的各个关键方法留下的钩子,当APP执行到生命周期中的相应方法时将会通过钩子同时触发所述基类的相关方法。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例可以应用于其中的示例性系统架构图;
图2是本发明实施例提供的应用软件开发方法的示意图;
图3是本发明实施例提供的一应用软件开发方法具体实施过程示意图;
图4是本发明实施例提供的应用软件开发方装置的结构示意图;
图5是根据本申请的计算机设备的一个实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等,实现所述软件应用开发过程中的各个步骤间的交互或操作以及所述应用软件开发方法的业务及应用。终端设备101、102、103上可以安装有各种通讯客户端应用,例如集成软件应用、网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于用户设备、网络设备或用户设备与网络设备通过网络相集成所构成的设备。所述用户设备其包括但不限于任何一种可与用户通过触摸板进行人机交互的移动电子产品,例如智能手机、平板电脑等,所述移动电子产品可以采用任意操作系统,如android操作系统、IOS操作系统等。其中,所述网络设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(ASIC)、可编程门阵列(FPGA)、数字处理器(DSP)、嵌入式设备等。所述网络设备其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云;在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。所述网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自组织网络(Ad Hoc网络)等。当然,本领域技术人员应能理解上述终端设备仅为举例,其他现有的或今后可能出现的终端设备如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
服务器105可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心。其也可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的所述软件开发过程的页面或操作界面提供支持的后台服务器。
需要说明的是,本申请实施例所提供的应用软件开发方法一般由终端设备执行,相应地,应用软件开发装置一般设置于终端设备中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
在应用软件开发过程中,经常需要对项目研发的一些业务功能模块集成独立的功能模块,其一般引入一些SDK软件开发工具包来辅助开发。现有技术中通常采用集成工具进行SDK的集成,这种方式在完成配置待集成业务所需要的项目配置及将所有源代码以及依赖库导入工程文件后需要开发者手动修改重写各个集成业务模块的系统回调方法,比如application:openURL:options:和application:didReceiveRemoteNotification:fetchCompletionHandler:等等方法,而每个模块对这些方法中获取到数据的处理方式又各不相同,随着集成的模块越来越多,AppDelegate也变得越来越臃肿,每一个回调方法中充斥着各种业务模块的处理代码,AppDelegate亟待瘦身。本公开实施例可以适用于采用集成工具软件进行SDK的一键集成的情况,通过hook钩子对软件开发项目的关键方法进行回调,将多个项目集成一系列模块的重复的集成步骤集中统一处理,减少大量重复开发工作以及代码冗余率。
图2是本发明实施例提供的应用软件开发方法的示意图,所述方法包括:
201、创建基类,基类通过钩子与应用软件开发项目中的项目开发代表相关联。
在本发明实施例中,所述基类中包含项目研发中各服务业务统一处理的集成方法,通过hook钩子,对各所述服务业务的关键方法与AppDelegate项目开发代表中的关键方法相关联,实现所述服务业务的关键回调。
需要说明的是,在本发明的一些实施例中,所述研发项目基于IOS系统的,通过OC(Objective-C,一种面向对象编程语言)开发实现。具体地,对于生命周期的关键方法,所述基类通过Method Swizzling(方法调用,指的是改变一个已存在的选择器对应的实现的过程)技术在AppDelegate(APP启动代理,)中的关键方法中留下钩子(hook)。对于非生命周期的关键方法,通过Objective-C的runtime(运行时)机制生成并动态添加到AppDelegate中之后再留下钩子,以实现完整跟踪APP(APPlication,应用程序)生命周期以及响应关键回调的目的。
进一步地,通过在所述基类中对App生命周期的各个关键方法留下钩子,当APP执行到生命周期中的相应方法时将会通过钩子同时触发各个所述服务业务的关键回调,所述服务业务的相关方法触发时执行具体的操作。
在本发明中,所述应用软件开发方法通过创建基类,对所述基类中的关键方法留下钩子,一方面,不需要重写各个服务业务相关的系统回调方法,极大程度降低了软件开发过程中各种数据处理代码冗余,提高软件开发代码执行流畅力。一方面不需要对各个所述服务业务的生命周期管理及监听回调数据,根据所述基类中对App生命周期的各个关键方法留下的钩子,当APP执行到生命周期中的相应方法时将会通过钩子同时触发所述基类的相关方法
202、加载并初始化软件开发项目中待集成的服务业务。
在本发明实施例中,所述服务业务根据业务需求创建服务类,根据服务类实现其功能需求。在软件开发集成过程中,加载和初始化需要集成的服务类。具体地,所述服务业务的服务类在集成前导入所述软件开发项目中,集成时可通过Objective-C的runtime机制获取到项目中所有已导入的服务类,通过筛选获取需要加载并初始化的所述服务业务中的服务类,分别执行加载和初始化方法,将需要加载和初始化的所述服务类加载实例化,对所述服务类进行业务配置,初始化所述服务类。
具体地,所述服务类包括继承于所述基类并需要通过所述钩子进行关键回调的服务类,并且所述服务类具有开关标识,在筛选获取需要加载并初始化的所述服务业务中的服务类时,通过遍历轮询所述应用软件开发项目中所有的类,筛选继承于所述基类的服务类,然后根据所述服务类的开关标识筛选需要加载和初始化的类。
203、根据钩子触发响应软件开发项目中各服务业务的关键回调。
在本发明实施例中,经过步骤201和步骤202,在服务类中通过钩子和动态添加方法的方式实现了待集成服务业务所要求实现的关键方法,根据钩子触发响应软件开发项目中各服务业务的关键回调。并且服务业务能通过感知APP生命周期的方式自动在合适的时机初始化或调用待集成模块所要求的配置方法,所以无需业务方再手动于业务代码中编写相关配置代码即可直接调用服务提供的接口
需要说明的是,以“待集成服务业务中的每一项功能只提供一个对外接口”为原则,所述应用软件开发项目中各服务业务提供一个对外接口,业务方不需要再考虑集成所需要在诸如AppDelegate中重写的回调方法,也不需要关心模块初始化方法的调用时机和调用方式,这些过程已经在上述步骤中完成,业务方只需使用服务类提供的接口,传入模块所必须的参数即可完成一次调用,服务引擎会自动完成初始化、参数配置、回调响应等过程。
在本发明的一些实施例中,如图3所示,示出本发明所述应用软件开发一个具体实施例,所述软件开发包括分享、支付等等服务业务,需要将分享、支付的重复集成的步骤通过创建基类,并在基类中对应的关键方法留下钩子以进行关键回调执行实现其业务功能。
具体地,创建服务基类,所述服务基类包含分享服务、支付服务等服务业务的统一处理集成的关键方法,如通过Method Swizzling技术对服务基类中的+(void)load、+(void)unload、+(void)launch、+(void)terminate等关键方法中留下钩子,通过钩子捕获分享服务、支付服务等其他服务业务的服务消息,回调服务基类中的关键方法,得到控制权执行钩子函数,,实现所述服务业务的关键回调。而在分享服务、支付服务等其他服务各根据需求加工改变该消息或强行结束该消息,当APP执行到生命周期中的相应方法时将会通过钩子同时触发服务基类中的相关方法,分享服务或其他服务在相关方法触发时即可根据需要执行具体的操作。
进一步地,所述分享服务业务、支付服务业务等其他服务业务中通过Objective-C的runtime机制生成待集成服务业务所要求响应的协议方法,并动态添加到AppDelegate中,根据钩子触发响应软件开发项目中各服务业务的关键回调。
需要说明的是,所述分享服务业务、支付服务业务等其他服务业务对应生成多种服务类,集成时可通过Objective-C的runtime机制获取到项目中所述分享服务业务、支付服务业务等其他服务业务已导入的服务类,通过筛选获取需要加载并初始化的所述服务业务中的服务类,分别执行加载和初始化方法,将需要加载和初始化的所述服务类加载实例化,对所述服务类进行业务配置,初始化所述服务类。
具体地,runtime机制可通过OBJC_EXPORT int objc_getClassList(Class*buffer,int bufferLen)方法获取软件项目中所有的服务类,该方法有两个参数,第一个参数buffer是分配好内存空间的数组,用来存储这个方法获取到的所有类的指针,当这个参数是NULL时,这个方法只会返回所有已注册类的个数;第二个参数bufferLen是第一个参数buffer的大小,告诉这个方法buffer所能装载的指针数量,当bufferLen小于所有注册类的数量时,这个方法会随机填充bufferLen数量的已注册类到buffer中。
在其他实施例中,还可通过Class*objc_copyClassList(unsigned int*outCount)获取软件开发项目中已注册的其他服务类,该方法会直接创建并返回所有已注册类指针的数组,参数outCount是已注册类的数量,其使用方法如下:
unsigned int outCount;
Class*classes=objc_copyClassList(&outCount);
但该方法获取的服务类包括了非NSObject的子类,还需要通过方法OBJC_EXPORTBOOL class_respondsToSelector(Class_Nullable cls,SEL_Nonnull sel)将获取到的列表中的服务类过滤,从而获取到软件开发项目中指定类的服务类。
更具体地,分享服务业务、支付服务业务等其他服务业务需要加载集成的服务类继承于所述服务基类,通过基类中+(void)load方法获取服务业务指定需要集成加载的服务类,将服务类实例化,就能够达到APP启动时自动加载项目中所有服务类的目的,如以下实现方法:
其中allSubClassesOf:方法用于获取指定服务类的实现。
继承于服务基类的服务类需要重写基类中的两个开关方法,分别是自动加载开关和自动初始化开关,这两个开关方法的返回值均为一个布尔值,用于服务基类在初始化的时候判断是否需要加载和初始化。同时,通过重写服务基类中提供的生命周期模板方法,来对APP相应的生命周期作出响应,这些模板方法会在APP运行到相应生命周期时自动被触发,除此以外,对于非生命周期的关键方法,例如openURL相关方法,利用Objective-C的runtime机制生成相应的方法并且动态添加到AppDelegate中,同时在动态添加的方法中也挂上钩子,以触发响应所述应用软件开发项目中各服务业务的关键回调。
图4是本发明实施例提供的应用软件开发装置400的示意图,所述装置包括:
基类创建模块401,用于创建基类,所述基类通过钩子与应用软件开发项目中的项目开发代表相关联;
加载初始化模块402,用于加载并初始化软件所述应用软件开发项目中待集成的服务业务;
触发回调模块403,用于根据所述钩子触发响应所述应用软件开发项目中各服务业务的关键回调。
所述应用软件开发装置400还包括显示模块,所述显示模块与所述基类创建模块401、加载初始化模块402和触发回调模块403相连,所述显示模块用于显示所应用软件开发装置400的软件开发过程及操作页面。
所述应用软件开发装置400还可以包括输入模块,所述输入模块与所述显示模块相连,所述输入模块可包括按键,可用于输入用户id的账号、密码、名称等信息,所述软件开发过程操作页面可以在所述软件开发装置中的显示模块中显示,并且所述显示模块还可以显示所述用户的其他信息,并将此信息存储起来,方便用户随时进行查看。
需要说明的是,本实施例的装置,与方法实施例的属于同一构思,其具体实现过程详细见方法实施例,且方法实施例中的技术特征在本实施例中均对应适用,这里不再赘述。
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图5,图5为本实施例计算机设备基本结构框图。
所述计算机设备5包括通过系统总线相互通信连接存储器51、处理器52、网络接口53。需要指出的是,图中仅示出了具有组件51-53的计算机设备5,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable GateArray,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
所述存储器51至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器51可以是所述计算机设备5的内部存储单元,例如该计算机设备5的硬盘或内存。在另一些实施例中,所述存储器51也可以是所述计算机设备5的外部存储设备,例如该计算机设备5上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。当然,所述存储器51还可以既包括所述计算机设备5的内部存储单元也包括其外部存储设备。本实施例中,所述存储器51通常用于存储安装于所述计算机设备5的操作系统和各类应用软件,例如应用软件开发方法的程序代码等。此外,所述存储器51还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器52在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器52通常用于控制所述计算机设备5的总体操作。本实施例中,所述处理器52用于运行所述存储器51中存储的程序代码或者处理数据,例如运行所述应用软件开发方法的程序代码。
所述网络接口53可包括无线网络接口或有线网络接口,该网络接口53通常用于在所述计算机设备5与其他电子设备之间建立通信连接。
本发明的实施例还提出一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现应用软件开发方法的步骤。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和替换,这些改进和替换也应视为本发明的保护范围。
Claims (9)
1.一种应用软件开发方法,其特征在于,包括以下步骤:
创建基类,所述基类通过钩子与应用软件开发项目中的项目开发代表相关
联;
加载并初始化所述应用软件开发项目中待集成的服务业务;其中,服务业务需要加载集成的服务类继承于所述基类,通过基类中+(void)load方法获取服务业务指定需要集成加载的服务类,将服务类实例化;
根据所述钩子触发响应所述应用软件开发项目中各服务业务的关键回调;
所述基类中包括生命周期关键方法和非生命周期关键方法,所述基类通过钩子与应用软件开发项目中的项目开发代表相关联,包括:
直接在所述项目开发代表中留下钩子与所述基类中的生命周期关键方法关联;
所述基类中的非生命周期关键方法通过运行时机制生成并动态添加到所述项目开发代表中再留下钩子关联。
2.根据权利要求1 所述的应用软件开发方法,其特征在于,所述加载并初始化软件所述应用软件开发项目中待集成的服务业务,包括:
获取需有加载并初始化的所述服务业务中的服务类;
加载实例化所述服务类;
对所述服务类进行业务配置,初始化所述服务类。
3.根据权利要求2 所述的应用软件开发方法,其特征在于,所述服务类包括继承于所述基类并需要通过所述钩子进行关键回调的服务类。
4.根据权利要求3 所述的应用软件开发方法,其特征在于,所述服务类具有开关标识,所述获取需有加载并初始化的所述服务业务中的服务类,包括:
遍历轮询所述应用软件开发项目中所有的类,筛选继承于所述基类的服务类,然后根据所述服务类的开关标识筛选需要加载和初始化的类。
5.根据权利要求1 所述的应用软件开发方法,其特征在于,在加载并初始化软件所述应用软件开发项目中待集成的服务业务之前,还包括:
导入所述应用软件开发项目中的所有类。
6.根据权利要求1 所述的应用软件开发方法,其特征在于,所述应用软件开发项目中各服务业务提供一个对外接口。
7.一种应用软件开发装置,其特征在于,包括:
基类创建模块,用于创建基类,所述基类通过钩子与应用软件开发项目中的项目开发代表相关联;
加载初始化模块,用于加载并初始化软件所述应用软件开发项目中待集成的服务业务;其中,服务业务需要加载集成的服务类继承于所述基类,通过基类中+(void)load方法获取服务业务指定需要集成加载的服务类,将服务类实例化;
触发回调模块,用于根据所述钩子触发响应所述应用软件开发项目中各服务业务的关键回调;
所述基类中包括生命周期关键方法和非生命周期关键方法,所述基类通过钩子与应用软件开发项目中的项目开发代表相关联,包括:
直接在所述项目开发代表中留下钩子与所述基类中的生命周期关键方法关联;
所述基类中的非生命周期关键方法通过运行时机制生成并动态添加到所述项目开发代表中再留下钩子关联。
8.一种计算机设备,包括存储器、处理器和网络接口,所述存储器存储有计算机程序,其征在于,所述处理器执行所述计算机程序时实现权利要求1 至6 中任一项所述应用软件开发方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1 至6 中任一项所述应用软件开发方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110026536.0A CN112764729B (zh) | 2021-01-08 | 2021-01-08 | 应用软件开发方法、装置、计算机设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110026536.0A CN112764729B (zh) | 2021-01-08 | 2021-01-08 | 应用软件开发方法、装置、计算机设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112764729A CN112764729A (zh) | 2021-05-07 |
CN112764729B true CN112764729B (zh) | 2024-02-06 |
Family
ID=75701159
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110026536.0A Active CN112764729B (zh) | 2021-01-08 | 2021-01-08 | 应用软件开发方法、装置、计算机设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112764729B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114095464B (zh) * | 2021-11-16 | 2023-08-08 | 成都知道创宇信息技术有限公司 | 即时消息实现方法和系统 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1615507A (zh) * | 2003-05-09 | 2005-05-11 | 微软公司 | 用于作为图形布局/表示对象的宿主的系统 |
KR20120081873A (ko) * | 2011-01-12 | 2012-07-20 | 에스케이플래닛 주식회사 | 모바일 어플리케이션 검증 방법 및 이를 적용한 단말 |
CN108293081A (zh) * | 2015-11-06 | 2018-07-17 | 三星电子株式会社 | 通过用户界面事件的程序重放深度链接到移动应用状态 |
CN108595178A (zh) * | 2018-05-04 | 2018-09-28 | 武汉极意网络科技有限公司 | 一种基于hook的数据采集方法、装置及设备 |
CN109491646A (zh) * | 2018-10-18 | 2019-03-19 | 北京字节跳动网络技术有限公司 | 一种消息录入方法、装置、电子设备及可读介质 |
CN109522021A (zh) * | 2018-10-30 | 2019-03-26 | 咪咕文化科技有限公司 | 参数回调处理方法、装置、电子设备及存储介质 |
US10419486B1 (en) * | 2016-10-11 | 2019-09-17 | The Mitre Corporation | Enhancing enterprise security on mobile platforms |
CN110704028A (zh) * | 2019-09-02 | 2020-01-17 | 深圳壹账通智能科技有限公司 | 埋点统计方法、电子装置及计算机设备 |
CN111309407A (zh) * | 2020-02-21 | 2020-06-19 | 咪咕文化科技有限公司 | 集成第三方库的处理方法及装置 |
CN111638906A (zh) * | 2020-05-15 | 2020-09-08 | 郑州阿帕斯数云信息科技有限公司 | 一种软件开发工具包sdk接入方法、装置和系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7984456B2 (en) * | 2007-11-23 | 2011-07-19 | Ketera Technologies Inc. | Interceptor framework using java dynamic proxies |
US8650532B2 (en) * | 2010-05-11 | 2014-02-11 | Microsoft Corporation | Change notification and information update based on uncompiled software development project |
US9483283B1 (en) * | 2014-11-20 | 2016-11-01 | Apptimize, Inc. | Enhanced code callback |
-
2021
- 2021-01-08 CN CN202110026536.0A patent/CN112764729B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1615507A (zh) * | 2003-05-09 | 2005-05-11 | 微软公司 | 用于作为图形布局/表示对象的宿主的系统 |
KR20120081873A (ko) * | 2011-01-12 | 2012-07-20 | 에스케이플래닛 주식회사 | 모바일 어플리케이션 검증 방법 및 이를 적용한 단말 |
CN108293081A (zh) * | 2015-11-06 | 2018-07-17 | 三星电子株式会社 | 通过用户界面事件的程序重放深度链接到移动应用状态 |
US10419486B1 (en) * | 2016-10-11 | 2019-09-17 | The Mitre Corporation | Enhancing enterprise security on mobile platforms |
CN108595178A (zh) * | 2018-05-04 | 2018-09-28 | 武汉极意网络科技有限公司 | 一种基于hook的数据采集方法、装置及设备 |
CN109491646A (zh) * | 2018-10-18 | 2019-03-19 | 北京字节跳动网络技术有限公司 | 一种消息录入方法、装置、电子设备及可读介质 |
CN109522021A (zh) * | 2018-10-30 | 2019-03-26 | 咪咕文化科技有限公司 | 参数回调处理方法、装置、电子设备及存储介质 |
CN110704028A (zh) * | 2019-09-02 | 2020-01-17 | 深圳壹账通智能科技有限公司 | 埋点统计方法、电子装置及计算机设备 |
CN111309407A (zh) * | 2020-02-21 | 2020-06-19 | 咪咕文化科技有限公司 | 集成第三方库的处理方法及装置 |
CN111638906A (zh) * | 2020-05-15 | 2020-09-08 | 郑州阿帕斯数云信息科技有限公司 | 一种软件开发工具包sdk接入方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112764729A (zh) | 2021-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11762634B2 (en) | Systems and methods for seamlessly integrating multiple products by using a common visual modeler | |
US8918448B2 (en) | Application component decomposition and deployment | |
US11902251B2 (en) | Socket transferring for HPC networks using kernel tracing | |
US8510712B1 (en) | Testing in-container software objects | |
US10019298B2 (en) | Middleware interface and middleware interface generator | |
CN107608901B (zh) | 基于Jmeter的测试方法及装置、存储介质、电子设备 | |
US20110161063A1 (en) | Method, computer program product and apparatus for providing an interactive network simulator | |
US8938712B2 (en) | Cross-platform virtual machine and method | |
CN114327861A (zh) | 执行eda任务的方法、装置、系统和存储介质 | |
CN112965794A (zh) | 算法调用方法、电子设备及存储介质 | |
CN114089975A (zh) | 计算软件的扩展方法、装置、非易失性存储介质及处理器 | |
CN112764729B (zh) | 应用软件开发方法、装置、计算机设备及可读存储介质 | |
CN114048415A (zh) | 表单生成方法及装置、电子设备和计算机可读存储介质 | |
CN116610354A (zh) | 参数校验方法、装置、计算机设备及存储介质 | |
US20120084683A1 (en) | Seamless Integration of Additional Functionality into Enterprise Software without Customization or Apparent Alteration of Same | |
CN116069227A (zh) | 一种界面交互方法、装置、设备及存储介质 | |
CN115599401A (zh) | 自定义模型的发布方法、装置、设备及介质 | |
CN115774661A (zh) | 具有用户数据隔离的多用户调试 | |
CN114860401A (zh) | 异构云桌面调度系统、方法、服务系统、装置及介质 | |
CN114579085A (zh) | 网关的api开发方法及装置 | |
CN113448960A (zh) | 一种导入表格文件的方法和装置 | |
CN109561146A (zh) | 文件下载方法、装置、终端设备 | |
US8135943B1 (en) | Method, apparatus, and computer-readable medium for generating a dispatching function | |
US10025564B2 (en) | Intuitive frames of task appropriate frames of reference for multiple dimensions of context for related sets of objects within an IDE | |
CN117369910A (zh) | 一种基于微应用架构的资源处理方法和装置、电子设备 |
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 |