基于业务模块的第三方sdk初始化方法、装置、设备及介质
技术领域
1.本技术涉及软件开发技术领域,尤其涉及一种基于业务模块的第三方sdk初始化方法、装置、设备及介质。
背景技术:
2.为了推广产品及服务,会对第三方的开发者提供软件开发工具包(software development kit,sdk),sdk可以被应用程序调用。而应用程序在开发时,往往需要涉及多种不同的业务模块,每个业务模块需要不同的功能,即需要调用不同的第三方sdk。
3.应用程序在调用业务模块的第三方sdk时,需要对业务模块的第三方sdk进行初始化,而初始化的过程需要在应用程序中去做。
4.但是,在组件化业务解耦时,由于多种不同的业务模块需要符合业务解耦原则,因此所有第三方sdk并非全部业务模块都用到的东西,放到业务模块所在的应用程序不合适,违背解耦原则,放到各自业务模块下创建应用程序又无法合并,给开发人员带来较大的困难,导致业务模块的第三方sdk初始化效率低。
技术实现要素:
5.本技术实施例提供一种基于业务模块的第三方sdk初始化方法、装置、设备及介质,用于解决业务模块的第三方sdk初始化效率低的问题。
6.本技术实施例采用下述技术方案:
7.一方面,本技术实施例提供了一种基于业务模块的第三方sdk初始化方法,该方法包括:确定应用程序的多个业务模块均引用的基础模块,为所述基础模块创建对外接口;创建所述对外接口的初始化方法,并为所述基础模块创建基础应用程序类,所述应用程序类用于继承所述应用程序;在待调用第三方sdk的各业务模块中,创建所述对外接口的实现类;其中,所述各业务模块之间的实现类的类包名不同;所述实现类用于实现所述对外接口,并实现所述初始化方法;在实现所述初始化方法时,将所述基础应用程序类作为所述应用程序的实例;通过所述基础应用程序类中的预设方法,管理所述实现类的类包名;通过所述实现类的类包名,反射获取到对应的实现类,调用所述对应的实现类内的初始化方法;通过所述对应的实现类内的初始化方法,调用相应业务模块的第三方sdk,并对所述相应业务模块的第三方sdk进行初始化。
8.一个示例中,所述将通过所述应用程序类中的预设方法,管理所述实现类的类包名,具体包括:创建包名管理类,在所述包名管理类中构建数组,将所述实现类的类包名加入所述数组;通过所述应用程序类中的预设方法,管理所述包名管理类中的所述实现类的类包名。
9.一个示例中,所述方法还包括:所述各业务模块中的所述第三方sdk不对外暴露,且所述第三方sdk被相应业务模块进行调用。
10.一个示例中,所述通过所述实现类的类包名,反射获取到对应的实现类,具体包
括:根据所述实现类的类包名,依次在所述各业务模块中,对预先创建的所述对外接口的实现类的类包名进行匹配;若匹配成功,则将匹配成功的实现类作为所述对应的实现类。
11.一个示例中,所述对预先创建的所述对外接口的实现类的类包名进行匹配之后,所述方法还包括:若匹配失败,则获取所述应用程序在最近一段时长内的日志信息;在所述日志信息中,检索有关所述各业务模块的操作信息;通过所述操作信息判断是否具有删除实现类的业务模块;若有,则将所述实现类的类包名与删除实现类的类包名进行对比;若对比成功,则将所述实现类的类包名进行删除。
12.一个示例中,所述若对比成功,则将所述实现类的类包名进行删除,具体包括:若对比成功,则向管理人员通知所述实现类的类包名对应的实现类被删除,以及被删除的时间,并向所述管理人员发送删除所述实现类的类包名的请求;在所述管理人员同意后,将所述实现类的类包名进行删除。
13.一个示例中,所述通过所述操作信息判断是否具有删除实现类的业务模块之后,所述方法还包括:若不存在删除实现类的业务模块,则向管理人员发送通知信息,以提示所述实现类的类包名匹配失败。
14.另一方面,本技术实施例提供了一种基于业务模块的第三方sdk初始化装置,所述装置包括:第一创建模块,确定应用程序的多个业务模块均引用的基础模块,为所述基础模块创建对外接口;第二创建模块,创建所述对外接口的初始化方法,并为所述基础模块创建基础应用程序类,所述基础应用程序类用于继承所述应用程序;第三创建模块,在待调用第三方sdk的各业务模块中,创建所述对外接口的实现类;其中,所述各业务模块之间的实现类的类包名不同;所述实现类用于实现所述对外接口,并实现所述初始化方法;在实现所述初始化方法时,将所述基础应用程序类作为所述应用程序的实例;管理模块,通过所述基础应用程序类中的预设方法,管理所述实现类的类包名;反射获取模块,通过所述实现类的类包名,反射获取到对应的实现类,调用所述对应的实现类内的初始化方法;初始化模块,通过所述对应的实现类内的初始化方法,调用相应业务模块的第三方sdk,并对所述相应业务模块的第三方sdk进行初始化。
15.另一方面,本技术实施例提供了一种基于业务模块的第三方sdk初始化设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:确定应用程序的多个业务模块均引用的基础模块,为所述基础模块创建对外接口;创建所述对外接口的初始化方法,并为所述基础模块创建基础应用程序类,所述基础应用程序类用于继承所述应用程序;在待调用第三方sdk的各业务模块中,创建所述对外接口的实现类;其中,所述各业务模块之间的实现类的类包名不同;所述实现类用于实现所述对外接口,并实现所述初始化方法;在实现所述初始化方法时,将所述基础应用程序类作为所述应用程序的实例;通过所述基础应用程序类中的预设方法,管理所述实现类的类包名;通过所述实现类的类包名,反射获取到对应的实现类,调用所述对应的实现类内的初始化方法;通过所述对应的实现类内的初始化方法,调用相应业务模块的第三方sdk,并对所述相应业务模块的第三方sdk进行初始化。
16.另一方面,本技术实施例提供了一种基于业务模块的第三方sdk初始化非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:确定应用程序
的多个业务模块均引用的基础模块,为所述基础模块创建对外接口;创建所述对外接口的初始化方法,并为所述基础模块创建基础应用程序类,所述基础应用程序类用于继承所述应用程序;在待调用第三方sdk的各业务模块中,创建所述对外接口的实现类;其中,所述各业务模块之间的实现类的类包名不同;所述实现类用于实现所述对外接口,并实现所述初始化方法;在实现所述初始化方法时,将所述基础应用程序类作为所述应用程序的实例;通过所述基础应用程序类中的预设方法,管理所述实现类的类包名;通过所述实现类的类包名,反射获取到对应的实现类,调用所述对应的实现类内的初始化方法;通过所述对应的实现类内的初始化方法,调用相应业务模块的第三方sdk,并对所述相应业务模块的第三方sdk进行初始化。
17.本技术实施例采用的上述至少一个技术方案能够达到以下有益效果:
18.结合接口加反射的方式,通过为基础模块创建对外接口,以及对外接口的初始化方法,以及创建基础应用程序类,实现在基础模块下,应用程序能够触发各个业务模块的第三方sdk初始化的任务,并且通过创建对外接口的实现类,能够实现在业务模块下对初始化方法进行实现,使得基础模块无需对业务模块的第三方sdk进行引用,就可调用第三方sdk的初始化方法,业务模块引用基础模块,可以获取到初始化所需应用程序的实例,保证第三方sdk的调用时机完成初始化,从而既保证组件化业务解耦又可保证第三方sdk的正常初始化,提高业务模块的第三方sdk初始化效率。
附图说明
19.为了更清楚地说明本技术的技术方案,下面将结合附图来对本技术的部分实施例进行详细说明,附图中:
20.图1为本技术实施例提供的一种基于业务模块的第三方sdk初始化方法的流程示意图;
21.图2为本技术实施例提供的一种基于业务模块的第三方sdk初始化装置的结构示意图;
22.图3为本技术实施例提供的一种基于业务模块的第三方sdk初始化设备的结构示意图。
具体实施方式
23.为使本技术的目的、技术方案和优点更加清楚,下面将结合具体实施例及相应的附图对本技术的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
24.下面参照附图来对本技术的一些实施例进行详细说明。
25.图1为本技术实施例提供的一种基于业务模块的第三方sdk初始化方法的流程示意图。该流程中的某些输入参数或者中间结果允许人工干预调节,以帮助提高准确性。
26.本技术实施例涉及的分析方法的实现可以为终端设备,也可以为服务器,本技术对此不作特殊限制。为了方便理解和描述,以下实施例均以服务器为例进行详细描述。
27.需要说明的是,该服务器可以是单独的一台设备,可以是有多台设备组成的系统,
即,分布式服务器,本技术对此不做具体限定。
28.图1中的流程可以包括以下步骤:
29.s101:确定应用程序的多个业务模块均引用的基础模块,为所述基础模块创建对外接口。
30.在本技术的一些实施例中,应用程序在开发时,往往需要涉及多种不同的业务模块,比如,分享模块需要第三方分享,地图定位模块需要高德地图定位等。其中,应用程序中包括有基础模块,该基础模块具有开发工具,该开发工具能够用于开发多个业务模块,即,相当于多个业务模块的公有开发工具。
31.需要说明的是,业务模块需要引用基础模块,也就是说,业务模块依赖基础模块。
32.s102:创建所述对外接口的初始化方法,并为所述基础模块创建基础应用程序类,所述应用程序类用于继承所述应用程序。
33.其中,开发人员在定义初始化方法时,初始化方法是空的。
34.s103:在待调用第三方sdk的各业务模块中,创建所述对外接口的实现类;其中,所述各业务模块之间的实现类的类包名不同;所述实现类用于实现所述对外接口,并实现所述初始化方法;在实现所述初始化方法时,将所述基础应用程序类作为所述应用程序的实例。
35.在本技术的一些实施例中,实现类就是实现对外接口中约定的内容。即,开发人员定义对外接口之后,定义的初始化方法是空的,那么业务模块想要实现对外接口,则需要一个实现类,给定初始化方法的具体实现,说明该业务模块是如何进行调用初始化方法,对第三方sdk进行初始化。
36.也就是说,每个业务模块均具有一个实现类,并且多个实现类之间的类名不同,即,多个实现类之间的类包名不同。
37.通过在待调用第三方sdk的各业务模块中,创建对外接口的实现类,相当于在业务模块中创建伪应用程序对上述对外接口进行实现。
38.需要说明的是,在现有技术中,在对第三方sdk进行初始化时,需要传入应用程序的实例,因此,在本技术中,将基础应用程序类作为应用程序的实例。比如,应用程序为微信,需要调用高德地图的sdk,那么对应的语句为:gaode.init("application实例")-》gaode.init(baseapplication)。
39.s104:通过所述基础应用程序类中的预设方法,管理所述实现类的类包名。
40.在本技术的一些实施例中,可以通过基础应用程序类中的oncreate方法中管理实现类的类包名。
41.需要说明的是,在获取业务模块中的实现类的类包名时,可以在预设周期内,根据预设路径获取到实现类,从而得到实现类的类包名。
42.进一步地,在管理实现类的类包名时,为了更加方便地管理类包名,服务器首先创建包名管理类,并在包名管理类中构建数组。然后,将实现类的类包名加入数组。最后,通过应用程序类中的预设方法,管理包名管理类中的实现类的类包名。
43.其中,对于如何管理实现类的类包名,在此不作限定。比如,对实现类的类包名进行增加、删除、排序等操作。
44.s105:通过所述实现类的类包名,反射获取到对应的实现类,调用所述对应的实现
类内的初始化方法。比如,通过a实现类的类包名,反射获取到a实现类,进而调用a实现类内的初始化方法。能够实现在基础应用程序类中,对各个业务模块下的初始化方法进行调用。
45.在本技术的一些实施例中,在获取对应的实现类时,服务器首先根据实现类的类包名,依次在各业务模块中,对预先创建的对外接口的实现类的类包名进行匹配,若匹配成功,则将匹配成功的实现类作为对应的实现类。
46.若在管理类包名的过程中,服务器不是实时更新获取业务模块中的实现类的类包名,那么将不能实时更新包名管理类中的实现类的类包名。
47.因此,若匹配失败,则获取应用程序在最近一段时长内的日志信息,在日志信息中,检索有关各业务模块的操作信息,从而通过操作信息判断是否具有删除实现类的业务模块。
48.若否,则向管理人员发送通知信息,以提示实现类的类包名匹配失败。
49.若有,则将实现类的类包名与删除实现类的类包名进行对比,若对比成功,则将实现类的类包名进行删除。
50.进一步地,为了确认该实现类与业务模块中删除的实现类是一致的,服务器在对比成功后,可以向管理人员通知实现类的类包名对应的实现类被删除,以及被删除的时间,并向管理人员发送删除该实现类的类包名的请求。最后,在管理人员同意后,将该实现类的类包名在数组中进行删除。
51.s106:通过所述对应的实现类内的初始化方法,调用相应业务模块的第三方sdk,并对所述相应业务模块的第三方sdk进行初始化。
52.需要说明的是,各业务模块中的第三方sdk不对外暴露,且第三方sdk被相应业务模块进行调用,即,第三方sdk被自身的业务模块进行调用。
53.需要说明的是,虽然本技术实施例是参照图1来对步骤s101至步骤s106依次进行介绍说明的,但这并不代表步骤s101至步骤s106必须按照严格的先后顺序执行。本技术实施例之所以按照图1中所示的顺序对步骤s101至步骤s106依次进行介绍说明,是为了方便本领域技术人员理解本技术实施例的技术方案。换句话说,在本技术实施例中,步骤s101至步骤s106之间的先后顺序可以根据实际需要进行适当调整。
54.通过图1的方法,结合接口加反射的方式,通过为基础模块创建对外接口,以及对外接口的初始化方法,以及创建基础应用程序类,实现在基础模块下,应用程序能够触发各个业务模块的第三方sdk初始化的任务,并且通过创建对外接口的实现类,能够实现在业务模块下对初始化方法进行实现,使得基础模块无需对业务模块的第三方sdk进行引用,就可调用第三方sdk的初始化方法,业务模块引用基础模块,可以获取到初始化所需应用程序的实例,保证第三方sdk的调用时机完成初始化,从而既保证组件化业务解耦又可保证第三方sdk的正常初始化。
55.基于同样的思路,本技术的一些实施例还提供了上述方法对应的装置、设备和非易失性计算机存储介质。
56.图2为本技术实施例提供的一种基于业务模块的第三方sdk初始化装置的结构示意图。
57.第一创建模块201,确定应用程序的多个业务模块均引用的基础模块,为所述基础模块创建对外接口;
58.第二创建模块202,创建所述对外接口的初始化方法,并为所述基础模块创建基础应用程序类,所述基础应用程序类用于继承所述应用程序;
59.第三创建模块203,在待调用第三方sdk的各业务模块中,创建所述对外接口的实现类;其中,所述各业务模块之间的实现类的类包名不同;所述实现类用于实现所述对外接口,并实现所述初始化方法;在实现所述初始化方法时,将所述基础应用程序类作为所述应用程序的实例;
60.管理模块204,通过所述基础应用程序类中的预设方法,管理所述实现类的类包名;
61.反射获取模块205,通过所述实现类的类包名,反射获取到对应的实现类,调用所述对应的实现类内的初始化方法;
62.初始化模块206,通过所述对应的实现类内的初始化方法,调用相应业务模块的第三方sdk,并对所述相应业务模块的第三方sdk进行初始化。
63.图3为本技术实施例提供的一种基于业务模块的第三方sdk初始化设备的结构示意图,所述设备包括:
64.至少一个处理器;以及,
65.与所述至少一个处理器通信连接的存储器;其中,
66.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
67.确定应用程序的多个业务模块均引用的基础模块,为所述基础模块创建对外接口;
68.创建所述对外接口的初始化方法,并为所述基础模块创建基础应用程序类,所述应用程序类用于继承所述应用程序;
69.在待调用第三方sdk的各业务模块中,创建所述对外接口的实现类;其中,所述各业务模块之间的实现类的类包名不同;所述实现类用于实现所述对外接口,并实现所述初始化方法;在实现所述初始化方法时,将所述基础应用程序类作为所述应用程序的实例;
70.通过所述基础应用程序类中的预设方法,管理所述实现类的类包名;
71.通过所述实现类的类包名,反射获取到对应的实现类,调用所述对应的实现类内的初始化方法;
72.通过所述对应的实现类内的初始化方法,调用相应业务模块的第三方sdk,并对所述相应业务模块的第三方sdk进行初始化。
73.本技术的一些实施例提供的一种基于业务模块的第三方sdk初始化非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
74.确定应用程序的多个业务模块均引用的基础模块,为所述基础模块创建对外接口;
75.创建所述对外接口的初始化方法,并为所述基础模块创建基础应用程序类,所述应用程序类用于继承所述应用程序;
76.在待调用第三方sdk的各业务模块中,创建所述对外接口的实现类;其中,所述各业务模块之间的实现类的类包名不同;所述实现类用于实现所述对外接口,并实现所述初始化方法;在实现所述初始化方法时,将所述基础应用程序类作为所述应用程序的实例;
77.通过所述基础应用程序类中的预设方法,管理所述实现类的类包名;
78.通过所述实现类的类包名,反射获取到对应的实现类,调用所述对应的实现类内的初始化方法;
79.通过所述对应的实现类内的初始化方法,调用相应业务模块的第三方sdk,并对所述相应业务模块的第三方sdk进行初始化。
80.本技术中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
81.本技术实施例提供的设备和介质与方法是一一对应的,因此,设备和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述设备和介质的有益技术效果。
82.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
83.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
84.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
85.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
86.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
87.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
88.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动
态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
89.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
90.以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术技术原理之内所作的任何修改、等同替换、改进等,均应落入本技术的保护范围之内。
转载请注明原文地址:https://tc.8miu.com/read-629.html