一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种异常定位处理方法、装置、电子设备及存储介质与流程

2021-12-14 21:50:00 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,尤其涉及一种异常定位处理方法、装 置、电子设备及存储介质。


背景技术:

2.一个应用程序通常会集成很多第三方aar(android archive,是一个 android库项目的二进制归档文件)和集团内部sdk提供的一些能力,例如 推送、认证、直播等功能,但是,应用程序运行过程中,经常会遇到一些 崩溃问题,而且可能会存在一些崩溃问题的原因无法通过堆栈信息进行快 速定位。
3.相关技术中,为了定位崩溃问题原因,一般会将apk(androidpackage, android安装包)使用反编译工具反编译后进行全局搜索,但是,当apk文 件较大时反编译工具会报出内存泄露问题或者由于apk加固导致反编译失 败。同样会影响发生崩溃时的快速定位和崩溃修复。


技术实现要素:

4.本发明实施例提供一种异常定位处理方法、装置、电子设备及存储介 质,以解决现有的崩溃异常定位不准确的问题。
5.为了解决上述技术问题,本发明是这样实现的:
6.第一方面,本发明实施例提供了一种异常定位处理方法,包括:
7.通过自定义的gradle插件,获取所述目标工程中指定类型的目标文 件,所述指定类型的目标文件包括class文件、jar文件、arr文件中的至少一 种;
8.遍历每个所述目标文件中的每个class文件,并获取每个所述class文件 的class相关信息;所述class相关信息至少包括所述class文件所调用对象 的对象标识,所述对象包括方法、接口中的至少一种;
9.基于每个所述class文件的class相关信息,根据所述gradle插件中配置 的异常定位条件,获取符合所述异常定位条件的目标class文件,所述异常 定位条件至少包括调用指定对象。
10.可选地,在所述通过自定义gradle插件,获取所述目标工程中指定类 型的目标文件的步骤之前,还包括:
11.创建一自定义gradle插件工程,并在所述gradle插件工程中创建一个 gradle插件类;
12.在所述gradle插件类中创建一个transform类,以获取工程中指定类型 的目标文件;
13.所述transform类中至少还包括目标逻辑代码,所述目标逻辑代码执行 以遍历每个所述目标文件中的每个class文件,并获取每个所述class文件的 class相关信息;基于每个所述class文件的class相关信息,根据所述gradle 插件中配置的异常定位条件,获取
符合所述异常定位条件的目标class文 件;
14.在所述目标工程中引入所述gradle插件工程,并在所述gradle插件工 程中配置针对所述目标工程的异常定位条件。
15.可选地,所述基于每个所述class文件的class相关信息,根据所述 gradle插件中配置的异常定位条件,获取符合所述异常定位条件的目标 class文件的步骤,包括:
16.对引入所述gradle插件工程的目标工程进行apk打包,以基于每个所述 class文件的class相关信息,根据所述gradle插件中配置的异常定位条件, 获取符合所述异常定位条件的目标class相关信息,并输出至指定结果文件 中;
17.获取所述指定结果文件,并定位至每个所述目标class相关信息对应的 目标class文件。
18.可选地,所述遍历每个所述目标文件中的每个class文件,并获取每个 所述class文件的class相关信息的步骤,包括:
19.根据每个所述目标文件的文件名称,获取第三方目标文件;
20.遍历每个所述第三方目标文件中的每个class文件,并获取每个所述 class文件的class相关信息。
21.可选地,所述指定类型的目标文件包括第三方class文件、第三方jar文 件、第三方arr文件中的至少一种;
22.所述获取所述目标工程中指定类型的目标文件的步骤,包括:
23.根据所述目标工程中每个文件的名称以及类型,获取其中指定类型的 目标文件。
24.可选地,所述class相关信息还包括所述class文件的类名、所述class 文件中的所有变量、所有方法。
25.第二方面,本发明实施例提供了一种异常定位处理装置,包括:
26.文件筛选模块,用于通过自定义的gradle插件,获取所述目标工程中指 定类型的目标文件,所述指定类型的目标文件包括class文件、jar文件、arr 文件中的至少一种;
27.class信息获取模块,用于遍历每个所述目标文件中的每个class文件, 并获取每个所述class文件的class相关信息;所述class相关信息至少包括 所述class文件所调用对象的对象标识,所述对象包括方法、接口中的至少 一种;
28.异常定位模块,用于基于每个所述class文件的class相关信息,根据所 述gradle插件中配置的异常定位条件,获取符合所述异常定位条件的目标 class文件,所述异常定位条件至少包括调用指定对象。
29.可选地,所述装置还包括:
30.gradle插件创建模块,用于创建一自定义gradle插件工程,并在所述 gradle插件工程中创建一个gradle插件类;
31.transform类创建模块,用于在所述gradle插件类中创建一个transform 类,以获取工程中指定类型的目标文件;其中,所述transform类中至少还 包括目标逻辑代码,所述目标逻辑代码执行以遍历每个所述目标文件中的 每个class文件,并获取每个所述class文件的class相关信息;基于每个所 述class文件的class相关信息,根据所述gradle插件中配置的异常定位条 件,获取符合所述异常定位条件的目标class文件;
32.gradle插件引入模块,用于在所述目标工程中引入所述gradle插件工 程,并在所
述gradle插件工程中配置针对所述目标工程的异常定位条件。
33.可选地,所述异常定位模块,包括:
34.工程打包处理子模块,用于对引入所述gradle插件工程的目标工程进行 apk打包,以基于每个所述class文件的class相关信息,根据所述gradle插 件中配置的异常定位条件,获取符合所述异常定位条件的目标class相关信 息,并输出至指定结果文件中;
35.结果读取子模块,用于获取所述指定结果文件,并定位至每个所述目标 class相关信息对应的目标class文件。
36.可选地,所述class信息获取模块,包括:
37.第三方文件获取子模块,用于根据每个所述目标文件的文件名称,获取 第三方目标文件;
38.class信息获取子模块,用于遍历每个所述第三方目标文件中的每个 class文件,并获取每个所述class文件的class相关信息。
39.可选地,所述指定类型的目标文件包括第三方class文件、第三方jar文 件、第三方arr文件中的至少一种;
40.所述文件筛选模块,具体用于:
41.根据所述目标工程中每个文件的名称以及类型,获取其中指定类型的 目标文件。
42.可选地,所述class相关信息还包括所述class文件的类名、所述class 文件中的所有变量、所有方法。
43.第三方面,本发明实施例另外提供了一种电子设备,包括:存储器、 处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所 述计算机程序被所述处理器执行时实现如第一方面所述的异常定位处理方 法的步骤。
44.第四方面,本发明实施例另外提供了一种计算机可读存储介质,其特 征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序 被处理器执行时实现如第一方面所述的异常定位处理方法的步骤。
45.在本发明实施例中,通过自定义gradle插件快速定位android工程中 调用特定对象的class信息,从而实现工程异常的快速定位,当发生线上崩 溃时便于快速定位问题和修复崩溃。
附图说明
46.图1是本发明实施例中的一种异常定位处理方法的步骤流程图;
47.图2是本发明实施例中的一种应用崩溃堆栈信息示意图;
48.图3是本发明实施例中的另一种异常定位处理方法的步骤流程图;
49.图4a是本发明实施例中的一种自定义gradle插件的执行流程示意图;
50.图4b是本发明实施例中的一种通过自定义gradle插件针对工程进行异 常定位的流程示意图;
51.图5是本发明实施例中的一种异常定位处理装置的结构示意图;
52.图6是本发明实施例中的另一种异常定位处理装置的结构示意图。
具体实施方式
53.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行 清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是 全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创 造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
54.参照图1,示出了本发明实施例中一种异常定位处理方法的步骤流程 图。
55.步骤110,通过自定义的gradle插件,获取所述目标工程中指定类型的 目标文件,所述指定类型的目标文件包括class文件、jar文件、arr文件中的 至少一种;
56.步骤120,遍历每个所述目标文件中的每个class文件,并获取每个所 述class文件的class相关信息;所述class相关信息至少包括所述class文件 所调用对象的对象标识,所述对象包括方法、接口中的至少一种;
57.步骤130,基于每个所述class文件的class相关信息,根据所述gradle 插件中配置的异常定位条件,获取符合所述异常定位条件的目标class文 件,所述异常定位条件至少包括调用指定对象。
58.如上述,在相关技术中,从后台收集到的应用崩溃堆栈信息中可以看 到崩溃问题一般是最终都调用了系统提供的方法导致的崩溃。但是,由于 第三方aar常会使用三方加固功能,因此很难基于堆栈信息定位到调用了系 统提供的方法从而导致崩溃的具体class,也没有办法根据方法名搜索第三 方aar中的class,从而导致问题无法定位和修复崩溃。
59.例如,图2所示为一种在bugly(一个用于收集应用崩溃信息的平台) 后台收集到的应用崩溃堆栈信息示意图。可以从第5行看出是由于某个类 (class)的onserviceconnected方法导致的崩溃,可以从第4行看出是调用了 该类调用了系统提供的unbindservice方法,但是由于使用了三方加固功 能,其中的“cq”为加固后的类名,并不是真实的类名,因此没有办法直 接定位到具体的class,也没有办法根据方法名搜索第三方aar中的class, 从而导致问题无法定位和修复崩溃。
60.因此,在本发明实施例中,为了解决上述问题,提供快速获取工程第 三方aar中调用特定方法的class信息的能力,搜索全工程第三方aar中调用 特定方法的class。其中,class文件可以理解为java源码编译后得到的文 件。一般而言,java源码中的一个类(class)的源码经编译可以生成一个 class文件。
61.具体地,可以通过自定义gradle插件,遍历工程中可能调用特定方法 从而导致工程崩溃的class文件。其中,gradle是一个基于apache ant和 apache maven概念的项目自动化构建开源工具。
62.而且,在实际应用中,一个工程中一般可以包含单独的class文件,另 外也可能包含jar文件、arr文件,等等。其中,jar/jar文件就是javaarchive file,顾名思义,它的应用是与java息息相关的,是java的一种文 档格式。jar文件中一般包含有class文件与清单文件,不包含资源文件,如 图片等所有res中的文件。aar/aar(android archive)包是一个android库 项目的二进制归档文件,aar文件中包含所有资源,class以及res资源文 件。而且,在aar文件中,class文件可以为.jar格式的数据包。
63.因此,在本发明实施例中,根据崩溃定位分析的需求,可以设置获取 需要获取的
指定类型的目标文件包括class文件、jar文件、arr文件中的至少 一种。例如,假设针对目标工程全局代码进行崩溃定位处理,那么此时指 定类型的目标文件则可以包括class文件、jar文件、arr文件三种类型;而如 果针对目标工程中的arr文件进行崩溃定位处理,那么此时指定类型的目标 文件则可以仅包括arr文件;而如果针对目标工程中的jar文件进行崩溃定位 处理,那么此时指定类型的目标文件则可以仅包括jar文件。
64.此外,在指定类型的目标文件包括class文件、jar文件的情况下,由于 arr文件中包含.jar格式的数据包,且其中包含有class文件,因此此时也可 以读取arr文件中包含.jar格式的数据包,作为一种jar文件,对此本发明实 施例不加以限定。
65.在获取得到目标工程中指定类型的目标文件之后,则可以遍历每个所 述目标文件中包含的每个class文件(其中,指定类型的目标文件如果为class 文件,那么该目标文件中的每个class文件即为该目标文件自身),并获取 每个class文件的class相关信息。其中,为了便于后续检测class文件是否 调用指定系统方法,可以设置class相关信息至少包括的class文件所调用对 象的对象标识为该class文件所调用方法的方法名。当然,class相关信息还 可以包括class名称、class文件中每行代码定义的变量、方法等任何可用的 信息,对此本发明实施例不加以限定。
66.而且,在本发明实施例中,可以通过任何可用方式获取每个class文件 的class相关信息,对此本发明实施例不加以限定。例如,可以通过class字 节码修改工具asm读取每个class文件的class相关信息。
67.进而则可以基于获取得到的每个class文件的class相关信息,根据引入 的自定义gradle插件中配置的异常定位条件,从各个class文件中获取符合 该异常定位条件的目标class文件,所述异常定位条件至少包括调用指定对 象。
68.其中,可以在自定义的gradle插件中设置一用于配置异常定位条件的 接口或者路径,那么相关技术人员则可以通过该接口或者路径设置当前针 对目标工程的异常定位条件。异常定位条件中包含的指定方法具体可以根 据需求进行自定义设置,对此本发明实施例不加以限定。
69.例如,如前述,可以通过分析得到导致崩溃一般是调用某一系统提供 的方法,那么此时则可以设置指定方法为该系统提供的方法,等等。
70.另外,在本发明实施例中,除了上述的崩溃异常,为了扫描工程中是否 包含调用不合规api(application program interface,应用程序接口,也即接 口)的异常,那么此时的调用对象可以为接口,class相关信息则可以包括 class文件所调用api的api标识,异常定位条件则可以包括调用指定api, 对此本发明实施例不加以限定。
71.参照图3,在本发明实施例中,在所述步骤110之前,进一步还可以包 括:
72.步骤210,创建一自定义gradle插件工程,并在所述gradle插件工程中 创建一个gradle插件类;
73.步骤220,在所述gradle插件类中创建一个transform类,以获取工程 中指定类型的目标文件;其中,所述transform类中至少还包括目标逻辑代 码,所述目标逻辑代码执行以遍历每个所述目标文件中的每个class文件, 并获取每个所述class文件的class相关信息;基于每个所述class文件的class 相关信息,根据所述gradle插件中配置的异常定位条件,获取符合所述异 常定位条件的目标class文件;
74.步骤230,在所述目标工程中引入所述gradle插件工程,并在所述 gradle插件工程中配置针对所述目标工程的异常定位条件。
75.在实际应用中,可以在生成class文件之后,dex文件之前,拿到当前应 用程序,也即目标工程中所有指定类型的目标文件,再去借助asm之类的 库,就可以遍历这些目标文件中所有class文件,
76.gradle transform是android官方提供给开发者在项目构建阶段(.class
ꢀ‑
>.dex转换期间)用来修改.class文件的一套标准api,即把输入的.class文 件转变成目标字节码文件。目前比较经典的应用是字节码插桩、代码注入等。 通过transform api,允许第三方以插件的形式,在android应用程序打包成 dex文件之前的编译过程中操作.class文件。因此,在本发明实施例中,可以 通过实现一套transform类,以获取工程中指定类型的目标文件。
77.具体地,可以创建一自定义gradle插件工程,并在该自定义的gradle 插件工程中创建一个gradle插件类,进一步地,在该gradle插件类中创建 一个transform类,以获取工程中指定类型的目标文件。
78.此外,为了便于直接通过该自定义的gradle插件工程获取最终符合所述 异常定位条件的目标class文件,还可以在其中自定义的相应transform类中 注入用于执行上述步骤120

130的目标逻辑代码。
79.那么,在针对目标工程进行崩溃定位时,则可以在该目标工程中引入相 应自定义的gradle插件工程,并在该gradle插件工程中配置针对当前的目 标工程的异常定位条件。也即,在应用程序等工程或项目中应用自定义的 gradle插件并根据需要进行配置。
80.而且,在本发明实施例中,根据需求可以将自定义的gradle插件工程发 布到进行崩溃定位的平台的本地仓库中,那么该平台中的多个项目则可以均 通过引入该gradle插件工程的方式进行崩溃定位,操作方便。
81.参照图3,在本发明实施例中,所述步骤130进一步可以包括:
82.步骤131,对引入所述gradle插件工程的目标工程进行apk打包,以基 于每个所述class文件的class相关信息,根据所述gradle插件中配置的异常 定位条件,获取符合所述异常定位条件的目标class相关信息,并输出至指 定结果文件中;
83.步骤132,获取所述指定结果文件,并定位至每个所述目标class相关 信息对应的目标class文件。
84.引入gradle插件工程的目标工程一般是经过编译但未打包成apk的项目 或者工程。那么为了通过目标工程中的gradle插件进行崩溃定位,则可以在 目标工程中引入gradle插件工程之后,对引入所述gradle插件工程的目标 工程进行apk打包,那么在执行打包过程中则可以通过其中引入的自定义的 gradle插件,获取该目标工程中指定类型的目标文件,并且遍历每个所述目 标文件中的每个class文件,并获取每个所述class文件的class相关信息, 基于每个所述class文件的class相关信息,根据所述gradle插件中配置的异 常定位条件,获取符合所述异常定位条件的目标class相关信息。
85.而且,在本发明实施例中,还可以在gradle插件中配置将符合异常定位 条件的class相关信息,输出到指定结果文件中。那么,在对引入所述gradle 插件工程的目标工程进行apk打包的过程中,则可以获取符合所述异常定位 条件的目标class相关信息,并输出
至指定结果文件中。执行打包结果之后, 则可以获取所述指定结果文件,从中则可以得到调用指定对象的目标class, 进而也可以定位至每个目标class相关信息对应的目标class文件。可以很快 定位到发生崩溃问题的具体class进而根据原因进行修复。
86.可选地,在本发明实施例中,所述步骤120,进一步可以包括:
87.步骤121,根据每个所述目标文件的文件名称,获取第三方目标文件;
88.步骤122,遍历每个所述第三方目标文件中的每个class文件,并获取 每个所述class文件的class相关信息。
89.在实际应用中,系统是相对稳定的,系统自身的文件调用某一系统提供 的方法等指定方法时,一般不会崩溃。而第三方文件不是系统自身的文件, 很多时候第三方提供的文件中调用指定对象时更容易导致崩溃。
90.因此,在本发明实施例中,为了提高效率,可以仅针对目标工程中的第 三方文件进行崩溃定位。而且在实际应用中,可以根据文件名称判定文件属 于第三方文件还是系统自带文件。
91.因此在本发明实施例中,可以通过自定义的gradle插件,获取所述目标 工程中全部指定类型的目标文件,此时并不区分目标文件是否为第三方文件 还是系统自带文件,而在后续遍历每个所述目标文件中的每个class文件时, 为了避免针对系统自带文件的无效遍历,则可以仅遍历其中第三方目标文件 中的每个class文件,那么在获取所述目标工程中指定类型的目标文件之后, 还可以根据每个目标文件的文件名称,获取其中的第三方目标文件。当然, 在本发明实施例中,也可以通过其他任何可用方式区分第三方文件、系统自 带文件,对此本发明实施例不加以限定。
92.可选地,在本发明实施例中,所述指定类型的目标文件包括第三方 class文件、第三方jar文件、第三方arr文件中的至少一种;
93.所述步骤110,进一步可以包括:根据所述目标工程中每个文件的名称 以及类型,获取其中指定类型的目标文件。
94.在本发明实施例中,也可以在初始阶段设置指定类型的目标文件即为第 三方文件,也即可以包括第三方class文件、第三方jar文件、第三方arr文 件中的至少一种。
95.那么,此时则可以在自定义的gradle插件中设置其所需获取的目标文件 的具体类型,以通过自定义的gradle插件,根据目标工程中每个文件的名称 以及类型,获取其中指定类型的目标文件。
96.可选地,在本发明实施例中,所述class相关信息还包括所述class文件 的类名、所述class文件中的所有变量(变量名、变量值等)、所有方法(方 法名、方法体等)。
97.在本发明实施例中,通过自定义gradle插件,遍历工程中所有class文 件和第三方jar文件,使用asm读取class相关信息,根据插件配置将符合 条件的class输出到指定的结果文件中。
98.具体方案可以包括以下步骤:
99.具体方案步骤:
100.1.创建自定义gradle插件工程;
101.2.创建自定义gradle插件类,创建自定义transform类;
102.3.在自定义transform类中获取工程中所有jar和class文件集合;
103.4.遍历工程中所有jar和class文件集合,使用asm获取class文件的class 相关信息;
104.5.根据插件配置将符合条件的class相关信息包含类名、所有field(变 量名、变量值等)和method(方法名、方法体等)等输出到指定结果文件;
105.6.将自定义gradle插件发布到本地仓库;
106.7.在应用程序工程中应用自定义的gradle插件并根据需要进行配置;
107.8.执行打包获取结果文件;
108.通过上述步骤可以很快定位到发生崩溃问题的具体class进而根据原因 进行修复。
109.如图4a所示为一种自定义gradle插件的执行流程示意图,如图4b所 示为一种通过自定义gradle插件针对工程进行异常定位的流程示意图。
110.在本发明实施例中,通过自定义gradle插件使用asm快速定位android 工程中第三方aar中调用特定方法的class信息,当发生线上崩溃时便于快速 定位问题和修复崩溃。另外也可用于扫描工程中是否包含调用不合规的api。
111.参照图5,示出了本发明实施例中一种异常定位处理装置的结构示意 图。
112.本发明实施例的异常定位处理装置包括:文件筛选模块310、class信息 获取模块320和异常定位模块330。
113.下面分别详细介绍各模块的功能以及各模块之间的交互关系。
114.文件筛选模块310,用于通过自定义的gradle插件,获取所述目标工程 中指定类型的目标文件,所述指定类型的目标文件包括class文件、jar文 件、arr文件中的至少一种;
115.class信息获取模块320,用于遍历每个所述目标文件中的每个class文 件,并获取每个所述class文件的class相关信息;所述class相关信息至少 包括所述class文件所调用对象的对象标识,所述对象包括方法、接口中的 至少一种;
116.异常定位模块330,用于基于每个所述class文件的class相关信息,根 据所述gradle插件中配置的异常定位条件,获取符合所述异常定位条件的 目标class文件,所述异常定位条件至少包括调用指定对象。
117.参照图6,在本发明实施例中,所述装置还可以包括:
118.gradle插件创建模块410,用于创建一自定义gradle插件工程,并在所 述gradle插件工程中创建一个gradle插件类;
119.transform类创建模块420,用于在所述gradle插件类中创建一个 transform类,以获取工程中指定类型的目标文件;其中,所述transform类 中至少还包括目标逻辑代码,所述目标逻辑代码执行以遍历每个所述目标 文件中的每个class文件,并获取每个所述class文件的class相关信息;基 于每个所述class文件的class相关信息,根据所述gradle插件中配置的异常 定位条件,获取符合所述异常定位条件的目标class文件;
120.gradle插件引入模块430,用于在所述目标工程中引入所述gradle插件 工程,并在所述gradle插件工程中配置针对所述目标工程的异常定位条 件。
121.参照图6,在本发明实施例中,所述异常定位模块330,可以包括:
122.工程打包处理子模块331,用于对引入所述gradle插件工程的目标工程 进行apk
打包,以基于每个所述class文件的class相关信息,根据所述 gradle插件中配置的异常定位条件,获取符合所述异常定位条件的目标 class相关信息,并输出至指定结果文件中;
123.结果读取子模块332,用于获取所述指定结果文件,并定位至每个所述 目标class相关信息对应的目标class文件。
124.可选地,在本发明实施例中,所述class信息获取模块320,可以包 括:
125.第三方文件获取子模块,用于根据每个所述目标文件的文件名称,获取 第三方目标文件;
126.class信息获取子模块,用于遍历每个所述第三方目标文件中的每个 class文件,并获取每个所述class文件的class相关信息。
127.可选地,在本发明实施例中,所述指定类型的目标文件包括第三方 class文件、第三方jar文件、第三方arr文件中的至少一种;
128.所述文件筛选模块310,具体可以用于:
129.根据所述目标工程中每个文件的名称以及类型,获取其中指定类型的 目标文件。
130.可选地,在本发明实施例中,所述class相关信息还包括所述class文件 的类名、所述class文件中的所有变量、所有方法。
131.本发明实施例提供的异常定位处理装置能够实现图1至图2的方法实施 例中实现的各个过程,为避免重复,这里不再赘述。
132.优选的,本发明实施例还提供了一种电子设备,包括:处理器,存储 器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被 处理器执行时实现上述异常定位处理方法实施例的各个过程,且能达到相 同的技术效果,为避免重复,这里不再赘述。
133.本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介 质上存储有计算机程序,计算机程序被处理器执行时实现上述异常定位处 理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里 不再赘述。其中,所述的计算机可读存储介质,如只读存储器(read

onlymemory,简称rom)、随机存取存储器(random access memory,简称 ram)、磁碟或者光盘等。
134.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变 体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品 或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是 还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的 情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过 程、方法、物品或者装置中还存在另外的相同要素。
135.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述 实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通 过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的 技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式 体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、 光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器, 空调器,或者网络设备等)执行本发明各个实施例所述的方法。
136.上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于 上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制 性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和 权利要求所保护的范围情况下,还可做出
很多形式,均属于本发明的保护 之内。
137.本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施 例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和 电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决 于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的 应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本 发明的范围。
138.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述 描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的 对应过程,在此不再赘述。
139.在本技术所提供的实施例中,应该理解到,所揭露的装置和方法,可 以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性 的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以 有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个 系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之 间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接 耦合或通信连接,可以是电性,机械或其它的形式。
140.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的, 作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地 方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的 部分或者全部单元来实现本实施例方案的目的。
141.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元 中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在 一个单元中。
142.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使 用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发 明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的 部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储 介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务 器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。 而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等 各种可以存储程序代码的介质。
143.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局 限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可 轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明 的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献