本发明涉及计算机技术领域,尤其涉及一种类名更改方法和装置。
背景技术:
目前,应用中几乎都会同时集成talkingdata和任意门这两个sdk(softwaredevelopmentkit,软件开发工具包)。但是由于任意门本身也集成了talkingdata,且talkingdata中类名固定,因此,当终端同时集成这两个相同工具包(talkingdata)时,就会出现相同的类名,导致终端系统在编译文件时,无法调用对应的工具包,而导致预编译文件无法正常编译。
技术实现要素:
本发明的主要目的在于提供一种类名更改方法和装置,旨在解决现有的终端同时集成两个相同工具包时,由于类名相同无法调用对应的工具包,而导致终端无法正常运行的技术问题。
为实现上述目的,本发明提供的一种类名更改方法,所述类名更改方法包括:
步骤s10,终端在预编译文件调用相同工具包进行编译的过程中,若检测到当前存在名字相同的类,则提取出名字相同的各个所述类;
步骤s20,分别对各个所述类的类名定义标识信息;
步骤s30,基于定义的各个标识信息,更改各个所述类的类名,以使各个所述类的类名不同。
优选地,所述步骤s20包括:
在所述预编译文件中,利用宏定义函数及连接符,分别为各个所述类的类名添加不同的前缀,以实现分别对各个所述类的类名定义标识信息。
优选地,所述步骤s10之后,所述类名更改方法还包括:
在所述预编译文件的编译界面中,输出提示信息,以提示用户分别对各个所述类输入不同的标识信息,用以后续分别对各个所述类的类名定义标识信息。
优选地,所述步骤s10之前,所述类名更改方法还包括:
获取待处理的各个工具包;
在所述预编译文件中分别调用各个所述工具包,以进行所述预编译文件的编译过程。
优选地,所述步骤s30之后,所述类名更改方法还包括:
重新编译所述预编译文件;
若检测到所述预编译文件当前仍存在名字相同的类,则继续执行步骤s20和步骤s30,直到所述预编译文件当前不存在名字相同的类;
若检测到所述预编译文件当前不存在名字相同的类,则完成编译过程。
此外,为实现上述目的,本发明还提供一种类名更改装置,所述类名更改装置包括:
提取模块,用于在预编译文件调用相同工具包进行编译的过程中,若检测到当前存在名字相同的类,则提取出名字相同的各个所述类;
定义模块,用于分别对各个所述类的类名定义标识信息;
更改模块,用于基于定义的各个标识信息,更改各个所述类的类名,以使各个所述类的类名不同。
优选地,所述定义模块,还用于在所述预编译文件中,利用宏定义函数及连接符,分别为各个所述类的类名添加不同的前缀,以实现分别对各个所述类的类名定义标识信息。
优选地,所述类名更改装置还包括:
输出模块,用于在所述预编译文件的编译界面中,输出提示信息,以提示用户分别对各个所述类输入不同的标识信息,用以后续分别对各个所述类的类名定义标识信息。
优选地,所述类名更改装置还包括:
获取模块,用于获取待处理的各个工具包;
调用模块,用于在所述预编译文件中分别调用各个所述工具包,以进行所述预编译文件的编译过程。
优选地,所述类名更改装置还包括:
编译模块,用于重新编译所述预编译文件;
所述定义模块,还用于若检测到所述预编译文件当前仍存在名字相同的类,则重新对各个所述类分别定义标识信息,以供所述更改模块基于重新定义的各个标识信息,更改各个所述类的类名,以使各个所述类的类名不同,直到所述预编译文件当前不存在名字相同的类;
所述编译模块,还用于若检测到所述预编译文件当前不存在名字相同的类,则完成编译过程。
本发明提出的类名更改方法和装置,终端在预编译文件调用相同工具包进行编译的过程中,若检测到当前存在名字相同的类,先提取出名字相同的各个所述类,然后分别对各个所述类的类名定义标识信息,最终基于定义的各个标识信息,更改各个所述类的类名,以使各个所述类的类名不同,本发明对各个类的类名定义标识信息,使得各个类的类名不同,即使终端同时集成两个相同工具包,也不会出现命名冲突的情况,使得编译文件的编译过程正常运行。
附图说明
图1为本发明类名更改方法第一实施例的流程示意图;
图2为本发明类名更改方法第二实施例的流程示意图;
图3为本发明类名更改方法第三实施例的流程示意图;
图4为本发明类名更改方法第四实施例的流程示意图;
图5为本发明类名更改装置第一实施例的功能模块示意图;
图6为本发明类名更改装置第二实施例的功能模块示意图;
图7为本发明类名更改装置第三实施例的功能模块示意图;
图8为本发明类名更改装置第四实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种类名更改方法。
参照图1,图1为本发明类名更改方法第一实施例的流程示意图。
在本实施例中,所述类名更改方法包括:
步骤s10,终端在预编译文件调用相同工具包进行编译的过程中,若检测到当前存在名字相同的类,则提取出名字相同的各个所述类。
一般情况下,应用中都会集成talkingdata和任意门这两个sdk,且任意门本身也集成了talkingdata,这样的情况下,就会出现应用中同时集成了两个talkingdata,且talkingdata中类名固定,所述类名都是按照终端标识进行命名的,因此,当终端同时集成这两个talkingdata时,就会出现相同的类名,导致终端系统在编译文件时,由于出现两个相同的类名,而不知道该调用哪个talkingdata,而导致编译过程无法正常运行。
因此,本实施例中,终端在预编译文件调用相同工具包进行编译的过程中,所述终端实时检测预编译文件中的各个类,若检测到当前存在名字相同的类,则提取出名字相同的各个所述类。
应当理解的是,在预编译文件进行编译之前,需要选择编译器进行编译,所述编译器的选择由预编译文件决定,在根据预编译文件选择到对应的编译器之后,让所述编译器按照顺序依次编译所述预编译文件。
步骤s20,分别对各个所述类的类名定义标识信息。
在提取出名字相同的各个所述类之后,分别对各个所述类的类名定义标识信息,具体地:所述步骤s20的实施方式包括:
1)方式一、在所述预编译文件中,利用宏定义函数及连接符,分别为各个所述类的类名添加不同的前缀,以实现分别对各个所述类的类名定义标识信息。
也就是说,在预编译文件进行编译过程中,先利用所述预编译文件的宏定义函数及连接符##,为每一个类的类名添加不同前缀,以实现分别对各个所述类的类名定义标识信息,以使各个所述类定义的标识信息不同。
2)方式二,在所述预编译文件中,利用宏定义函数及连接符,分别为各个所述类的类名添加固定的前缀,以实现分别对各个所述类的类名定义标识信息。
值得注意的是,添加固定前缀之后,后续需要类的类名进行调整,具体在下文详述。
步骤s30,基于定义的各个标识信息,更改各个所述类的类名,以使各个所述类的类名不同。
在本实施例中,对各个所述类的类名定义标识信息之后,即可基于定义的各个标识信息,更改各个所述类的类名,以使各个所述类的类名不同,由于对各个所述类的类名定义标识信息的方式包括两种,相应地,基于定义的各个标识信息,更改各个所述类的类名的方式同样对应有两种:
1)方式一、为更好理解,举例详述之:原本两个工具包中相同名字的类分别为a1、a1、b1、b1,若为每一个类的类名添加不同前缀,则相当于对各个所述类的类名定义标识信息m、n、x、y,最终将各个类的类名更改为:ma1、na1、xb1、yb1,以使各个所述类的类名不同。
2)方式二、对各个类的类名添加固定前缀之后,将某个工具包中各个类的类名对应的前缀都修改为该终端对应的终端标识,由于目前终端系统常出现的是两个相同的工具包,因此,出现类名相同的类也是两个,那么将其中一个工具包中各个类的类名对应的前缀,都修改为所述终端的终端标识,就会避免相同工具包出现相同的类名。为更好理解,举例如下:
对各个所述类的类名添加固定前缀,如对a1、a1、b1、b1都添加p,则得到pa1、pa1、pb1、pb1,可以理解,此时是因为系统中集成了两个talkingdata,那么,可将其中一个talkingdata中类的类名的前缀都修改为所述终端的终端标识q,即可得到各个类的类名为pa1、qa1、pb1、qb1,最终实现了订制出独特的sdk包,从而避免了终端中同时集成talkingdata而导致的命名冲突问题。
本实施例提出的类名更改方法,终端在预编译文件调用相同工具包进行编译的过程中,若检测到当前存在名字相同的类,先提取出名字相同的各个所述类,然后分别对各个所述类的类名定义标识信息,最终基于定义的各个标识信息,更改各个所述类的类名,以使各个所述类的类名不同,本发明对各个类的类名定义标识信息,使得各个类的类名不同,即使终端同时集成两个相同工具包,也不会出现命名冲突的情况,使得编译文件的编译过程正常运行。
进一步地,基于第一实施例提出本发明类名更改方法的第二实施例,在本实施例中,参照图2,所述步骤s10之后,所述类名更改方法还包括:
步骤s40,在所述预编译文件的编译界面中,输出提示信息,以提示用户分别对各个所述类输入不同的标识信息,用以后续分别对各个所述类的类名定义标识信息。
在本实施例中,在预编译文件进行编译的过程中,若检测到当前存在名字相同的类,先提取出名字相同的各个所述类,然后在所述预编译文件的编译界面中,输出提示信息,以提示用户分别对各个所述类输入不同的标识信息,后续,根据用户分别输入的各个标识信息,分别对各个所述类的类名定义标识信息,并基于定义的各个标识信息,更改各个所述类的类名,以使各个所述类的类名不同。
在本实施例中,在提取出名字相同的各个所述类之后,在预编译文件的编译界面,输出提示信息,便于用户及时修改各个类的类名,提高了类名修改的灵活性。
进一步地,基于第一实施例提出本发明类名更改方法的第三实施例,在本实施例中,参照图3,所述步骤s10之前,所述类名更改方法还包括:
步骤s50,获取待处理的各个工具包。
步骤s60,在所述预编译文件中分别调用各个所述工具包,以进行所述预编译文件的编译过程。
在本实施例中,在预编译文件进行编译之前,先确定待处理的各个工具包,如talkingdata和任意门这两个工具包,然后获取确定的各个工具包,并在所述预编译文件中分别调用各个所述工具包,以进行所述预编译文件的编译过程。
应当理解的是,上文所述的talkingdata和任意门这两个工具包仅仅是示例性的,待处理的工具包还可包括其它各种工具包,在获取到其它各种工具包之后,同样依次调用其它各种工具包,以进行所述预编译文件的编译过程。
进一步地,基于第三实施例提出本发明类名更改方法的第四实施例,在本实施例中,参照图4,所述步骤s30之后,所述类名更改方法还包括:
步骤s70,重新编译所述预编译文件。
若检测到所述预编译文件当前仍存在名字相同的类,则继续执行步骤s20和步骤s30,直到所述预编译文件当前不存在名字相同的类。
步骤s80,若检测到所述预编译文件当前不存在名字相同的类,则完成编译过程。
在本实施例中,基于定义的各个标识信息,更改各个所述类的类名,以使各个所述类的类名不同之后,为了验证类名是否更改成功,会重新编译所述预编译文件,若此时检测到所述预编译文件当前仍存在名字相同的类,则继续执行步骤s20和步骤s30,直到所述预编译文件当前不存在名字相同的类;当然,若此时检测到所述预编译文件当前不存在名字相同的类,则认为完成编译过程,实现了对各个工具包的类名进行修改,最终得到了不同类名的各个工具包。
进一步地,若检测到所述预编译文件当前不存在名字相同的类,还可将各个所述工具包编译成一个应用程序包,以实现对应用程序包的制作。
在本实施例中,在对各个类的类名更改之后,重新编译所述预编译文件,以对更改类名后的各个类进行验证,提高了类名更改的准确性。
本发明进一步提供一种类名更改装置。
参照图5,图5为本发明类名更改装置100第一实施例的功能模块示意图。
需要强调的是,对本领域的技术人员来说,图5所示功能模块图仅仅是一个较佳实施例的示例图,本领域的技术人员围绕图5所示的类名更改装置100的功能模块,可轻易进行新的功能模块的补充;各功能模块的名称是自定义名称,仅用于辅助理解该类名更改装置100的各个程序功能块,不用于限定本发明的技术方案,本发明技术方案的核心是,各自定义名称的功能模块所要达成的功能。
在本实施例中,所述类名更改装置100包括:
提取模块10,用于在预编译文件调用相同工具包进行编译的过程中,若检测到当前存在名字相同的类,则提取出名字相同的各个所述类。
一般情况下,应用中都会集成talkingdata和任意门这两个sdk,且任意门本身也集成了talkingdata,这样的情况下,就会出现应用中同时集成了两个talkingdata,且talkingdata中类名固定,所述类名都是按照终端标识进行命名的,因此,当终端同时集成这两个talkingdata时,就会出现相同的类名,导致终端系统在编译文件时,由于出现两个相同的类名,而不知道该调用哪个talkingdata,而导致编译过程无法正常运行。
因此,本实施例中,在预编译文件调用相同工具包进行编译的过程中,提取模块10实时检测预编译文件中的各个类,若检测到当前存在名字相同的类,则提取出名字相同的各个所述类。
应当理解的是,在预编译文件进行编译之前,需要选择编译器进行编译,所述编译器的选择由预编译文件决定,在根据预编译文件选择到对应的编译器之后,让所述编译器按照顺序依次编译所述预编译文件。
定义模块20,用于分别对各个所述类的类名定义标识信息。
在提取模块10提取出名字相同的各个所述类之后,定义模块20分别对各个所述类的类名定义标识信息,具体地:所述定义模块20分别对各个所述类的类名定义标识信息的实施方式包括:
1)方式一、所述定义模块20,还用于在所述预编译文件中,利用宏定义函数及连接符,分别为各个所述类的类名添加不同的前缀,以实现分别对各个所述类的类名定义标识信息。
也就是说,在预编译文件进行编译过程中,所述定义模块20先利用所述预编译文件的宏定义函数及连接符##,为每一个类的类名添加不同前缀,以实现分别对各个所述类的类名定义标识信息,以使各个所述类定义的标识信息不同。
2)方式二,所述定义模块20,还用于在所述预编译文件中,利用宏定义函数及连接符,分别为各个所述类的类名添加固定的前缀,以实现分别对各个所述类的类名定义标识信息。
值得注意的是,添加固定前缀之后,后续需要类的类名进行调整,具体在下文详述。
更改模块30,用于基于定义的各个标识信息,更改各个所述类的类名,以使各个所述类的类名不同。
在本实施例中,所述定义模块20对各个所述类的类名定义标识信息之后,更改模块30即可基于定义的各个标识信息,更改各个所述类的类名,以使各个所述类的类名不同,由于对各个所述类的类名定义标识信息的方式包括两种,相应地,基于定义的各个标识信息,更改各个所述类的类名的方式同样对应有两种:
1)方式一、为更好理解,举例详述之:原本两个工具包中相同名字的类分别为a1、a1、b1、b1,若为每一个类的类名添加不同前缀,则相当于对各个所述类的类名定义标识信息m、n、x、y,最终将各个类的类名更改为:ma1、na1、xb1、yb1,以使各个所述类的类名不同。
2)方式二、对各个类的类名添加固定前缀之后,将某个工具包中各个类的类名对应的前缀都修改为该终端对应的终端标识,由于目前终端系统常出现的是两个相同的工具包,因此,出现类名相同的类也是两个,那么将其中一个工具包中各个类的类名对应的前缀,都修改为所述终端的终端标识,就会避免相同工具包出现相同的类名。为更好理解,举例如下:
对各个所述类的类名添加固定前缀,如对a1、a1、b1、b1都添加p,则得到pa1、pa1、pb1、pb1,可以理解,此时是因为系统中集成了两个talkingdata,那么,可将其中一个talkingdata中类的类名的前缀都修改为所述终端的终端标识q,即可得到各个类的类名为pa1、qa1、pb1、qb1,最终实现了订制出独特的sdk包,从而避免了终端中同时集成talkingdata而导致的命名冲突问题。
本实施例提出的类名更改装置,终端在预编译文件调用相同工具包进行编译的过程中,若检测到当前存在名字相同的类,先提取出名字相同的各个所述类,然后分别对各个所述类的类名定义标识信息,最终基于定义的各个标识信息,更改各个所述类的类名,以使各个所述类的类名不同,本发明对各个类的类名定义标识信息,使得各个类的类名不同,即使终端同时集成两个相同工具包,也不会出现命名冲突的情况,使得编译文件的编译过程正常运行。
进一步地,基于第一实施例提出本发明类名更改装置100的第二实施例,在本实施例中,参照图6,所述类名更改装置100还包括:
输出模块40,用于在所述预编译文件的编译界面中,输出提示信息,以提示用户分别对各个所述类输入不同的标识信息,用以后续分别对各个所述类的类名定义标识信息。
在本实施例中,在预编译文件进行编译的过程中,若检测到当前存在名字相同的类,所述提取模块10先提取出名字相同的各个所述类,然后输出模块40在所述预编译文件的编译界面中,输出提示信息,以提示用户分别对各个所述类输入不同的标识信息,后续,所述定义模块20根据用户分别输入的各个标识信息,分别对各个所述类的类名定义标识信息,并且所述更改模块30基于定义的各个标识信息,更改各个所述类的类名,以使各个所述类的类名不同。
在本实施例中,在提取出名字相同的各个所述类之后,在预编译文件的编译界面,输出提示信息,便于用户及时修改各个类的类名,提高了类名修改的灵活性。
进一步地,基于第一实施例提出本发明类名更改装置100的第三实施例,在本实施例中,参照图7,所述类名更改装置还包括:
获取模块50,用于获取待处理的各个工具包。
调用模块60,用于在所述预编译文件中分别调用各个所述工具包,以进行所述预编译文件的编译过程。
在本实施例中,在预编译文件进行编译之前,先确定待处理的各个工具包,如talkingdata和任意门这两个工具包,然后获取模块50获取确定的各个工具包,并且调用模块60在所述预编译文件中分别调用各个所述工具包,以进行所述预编译文件的编译过程。
应当理解的是,上文所述的talkingdata和任意门这两个工具包仅仅是示例性的,待处理的工具包还可包括其它各种工具包,在获取到其它各种工具包之后,同样依次调用其它各种工具包,以进行所述预编译文件的编译过程。
进一步地,基于第三实施例提出本发明类名更改装置100的第四实施例,在本实施例中,参照图8,所述类名更改装置还包括:
编译模块70,用于重新编译所述预编译文件。
所述定义模块20,还用于若检测到所述预编译文件当前仍存在名字相同的类,则重新对各个所述类分别定义标识信息,以供所述更改模块30基于重新定义的各个标识信息,更改各个所述类的类名,以使各个所述类的类名不同,直到所述预编译文件当前不存在名字相同的类。
所述编译模块70,还用于若检测到所述预编译文件当前不存在名字相同的类,则完成编译过程。
在本实施例中,所述更改模块30基于定义的各个标识信息,更改各个所述类的类名,以使各个所述类的类名不同之后,为了验证类名是否更改成功,编译模块70会重新编译所述预编译文件,若此时检测到所述预编译文件当前仍存在名字相同的类,则所述定义模块20重新对各个所述类分别定义标识信息,以供所述更改模块30基于重新定义的各个标识信息,更改各个所述类的类名,以使各个所述类的类名不同,直到所述预编译文件当前不存在名字相同的类;当然,若此时检测到所述预编译文件当前不存在名字相同的类,则认为完成编译过程,实现了对各个工具包的类名进行修改,最终得到了不同类名的各个工具包。
进一步地,若检测到所述预编译文件当前不存在名字相同的类,所述编译模块70还可将各个所述工具包编译成一个应用程序包,以实现对应用程序包的制作。
在本实施例中,在对各个类的类名更改之后,重新编译所述预编译文件,以对更改类名后的各个类进行验证,提高了类名更改的准确性。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。