一种Android端支持安全裁剪第三方库的方法及装置转让专利

申请号 : CN202210744907.3

文献号 : CN114816369B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄晋宇白剑黄海亮梁瑛玮张海林鲁和平李长杰陈焕然李乐王浩洪行健冷冬丁一

申请人 : 易方信息科技股份有限公司

摘要 :

本发明提出了一种Android端支持安全裁剪第三方库的方法及装置,所述方法包括:将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口;定义用于实现所述功能接口的实现类,实现类中可引用第三方库中的类来实现对应的功能;定义用于实现所述功能接口的空实现类,空实现类中不引用第三方库中的类,所有实现的方法均为空的实现;定义一个工厂类,对外提供获取所述功能接口的方法,至少用于判断是否创建空实现返回。所述装置使用了所述方法。本发明使得客户可以根据自身需求按给定的方式修改Gradle依赖配置后,对第三方库进行简便的裁剪,裁剪第三方库后可以正常使用SDK,且减少集成SDK后的APP体积大小。

权利要求 :

1.一种Android端支持安全裁剪第三方库的方法,其特征在于,包括:将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口;

定义用于实现所述功能接口的实现类,实现类中可引用第三方库中的类来实现对应的功能;

定义用于实现所述功能接口的空实现类,空实现类中不引用第三方库中的类,所有实现的方法均为空的实现;

定义一个工厂类,对外提供获取所述功能接口的方法,至少用于判断是否创建空实现返回;

所述获取所述功能接口的方法在内部所做的操作具体为:在通过功能接口调用第三方库的类对象异常时,创建空实现类返回;

所述在通过功能接口调用第三方库的类对象异常时,创建空实现类返回的步骤,包括:通过功能接口对任意一个第三方库中的类对象执行调用操作,对所述调用操作进行异常捕获,若发生异常则说明第三方库不存在,否则说明第三方库存在;

使用预设变量记录所述调用操作,判断是否发生异常,若发生异常,则记录为true,若未发生异常,记录为false;

根据预设变量的值创建不同的实例返回,若预设变量记录为true,创建空实现类实例返回;若预设变量记录为false,创建实现类实例返回;

通过功能接口对任意一个第三方库中的类对象执行调用操作,对所述调用操作进行异常捕获,若发生异常则说明第三方库不存在,否则说明第三方库存在的步骤,具体为:通过功能接口对任意一个第三方库中的类对象执行加载或创建操作,对所述加载或创建操作进行异常捕获,若发生异常则说明第三方库不存在,否则说明第三方库存在。

2.如权利要求1所述的方法,其特征在于,所述功能接口对外只公开接口,不公开内部的具体实现类。

3.如权利要求2所述的方法,其特征在于,所述预设变量包括boolean变量。

4.一种Android端支持安全裁剪第三方库的装置,其特征在于,包括:创建模块,用于将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口;

第一定义模块,用于定义用于实现所述功能接口的实现类,实现类中可引用第三方库中的类来实现对应的功能;

第二定义模块,用于定义用于实现所述功能接口的空实现类,空实现类中不引用第三方库中的类,所有实现的方法均为空的实现;

第三定义模块,用于定义一个工厂类,对外提供获取所述功能接口的方法,至少用于判断是否创建空实现返回;

所述第三定义模块,具体用于:

定义一个工厂类,对外提供获取所述功能接口的方法,通过功能接口对任意一个第三方库中的类对象执行调用操作,对所述调用操作进行异常捕获,若发生异常则说明第三方库不存在,否则说明第三方库存在;

使用预设变量记录所述调用操作,判断是否发生异常,若发生异常,则记录为true,若未发生异常,记录为false;

根据预设变量的值创建不同的实例返回,若预设变量记录为true,创建空实现类实例返回;若预设变量记录为false,创建实现类实例返回;

通过功能接口对任意一个第三方库中的类对象执行调用操作,对所述调用操作进行异常捕获,若发生异常则说明第三方库不存在,否则说明第三方库存在的步骤,具体为:通过功能接口对任意一个第三方库中的类对象执行加载或创建操作,对所述加载或创建操作进行异常捕获,若发生异常则说明第三方库不存在,否则说明第三方库存在。

5.一种计算机设备,包括存储器、处理器以及存储在所述存储器上并在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至3任意一项所述的一种Android端支持安全裁剪第三方库的方法。

6.一种计算机存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至3任意一项所述的一种Android端支持安全裁剪第三方库的方法。

说明书 :

一种Android端支持安全裁剪第三方库的方法及装置

技术领域

[0001] 本发明涉及软件测试技术领域,具体涉及一种Android端支持安全裁剪第三方库的方法及装置。

背景技术

[0002] 当Android SDK的提供方集成第三方库,用于支持某项功能的时候,整个SDK的体积也会随之增大。而客户在集成方提供的该SDK的时候,不一定会需要SDK中的第三方库的功能,这些第三方库增加了客户集成SDK后的APP体积大小。如果客户直接通过修改Gradle的依赖配置项裁剪第三方库,则应用程序在运行到已裁剪的第三方库中的类时,由于Android虚拟机加载不到这些已裁剪的类,就会抛出错误从而导致应用程序崩溃,影响了客户的正常使用。

发明内容

[0003] 针对现有技术的不足,本发明提出一种Android端支持安全裁剪第三方库的方法及装置,解决了现有技术中客户在裁剪SDK的第三方库后,应用程序在运行到已裁剪的第三方库中的类时,会抛出错误从而导致应用程序崩溃的缺陷。
[0004] 本发明的技术方案是这样实现的:一种Android端支持安全裁剪第三方库的方法,包括:
[0005] 将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口;
[0006] 定义用于实现所述功能接口的实现类,实现类中可引用第三方库中的类来实现对应的功能;
[0007] 定义用于实现所述功能接口的空实现类,空实现类中不引用第三方库中的类,所有实现的方法均为空的实现;
[0008] 定义一个工厂类,对外提供获取所述功能接口的方法,至少用于判断是否创建空实现返回。
[0009] 在其中一个实施例中,上述所述获取所述功能接口的方法在内部所做的操作具体为:在通过功能接口调用第三方库的类对象异常时,创建空实现类返回。
[0010] 在其中一个实施例中,上述所述在通过功能接口调用第三方库的类对象异常时,创建空实现类返回的步骤,包括:
[0011] 通过功能接口对任意一个第三方库中的类对象执行调用操作,对所述调用操作进行异常捕获,若发生异常则说明第三方库不存在,否则说明第三方库存在;
[0012] 使用预设变量记录所述调用操作,判断是否发生异常,若发生异常,则记录为true,若未发生异常,记录为false;
[0013] 根据预设变量的值创建不同的实例返回,若预设变量记录为true,创建空实现类实例返回;若预设变量记录为false,创建实现类实例返回。
[0014] 在其中一个实施例中,上述所述功能接口对外只公开接口,不公开内部的具体实现类。
[0015] 在其中一个实施例中,上述所述通过功能接口对任意一个第三方库中的类对象执行调用操作,对所述调用操作进行异常捕获,若发生异常则说明第三方库不存在,否则说明第三方库存在的步骤,具体为:
[0016] 通过功能接口对任意一个第三方库中的类对象执行加载或创建操作,对所述加载或创建操作进行异常捕获,若发生异常则说明第三方库不存在,否则说明第三方库存在。
[0017] 在其中一个实施例中,上述所述预设变量包括boolean变量。
[0018] 本发明还提供了一种Android端支持安全裁剪第三方库的装置,包括:
[0019] 创建模块,用于将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口;
[0020] 第一定义模块,用于定义用于实现所述功能接口的实现类,实现类中可引用第三方库中的类来实现对应的功能;
[0021] 第二定义模块,用于定义用于实现所述功能接口的空实现类,空实现类中不引用第三方库中的类,所有实现的方法均为空的实现;
[0022] 第三定义模块,用于定义一个工厂类,对外提供获取所述功能接口的方法,至少用于判断是否创建空实现返回。
[0023] 在其中一个实施例中,上述所述第三定义模块140,具体用于:
[0024] 定义一个工厂类,对外提供获取所述功能接口的方法,通过功能接口对任意一个第三方库中的类对象执行调用操作,对所述调用操作进行异常捕获,若发生异常则说明第三方库不存在,否则说明第三方库存在;
[0025] 使用预设变量记录所述调用操作,判断是否发生异常,若发生异常,则记录为true,若未发生异常,记录为false;
[0026] 根据预设变量的值创建不同的实例返回,若预设变量记录为true,创建空实现类实例返回;若预设变量记录为false,创建实现类实例返回。
[0027] 本发明还提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所述的一种Android端支持安全裁剪第三方库的方法。
[0028] 本发明还提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述所述的一种Android端支持安全裁剪第三方库的方法。
[0029] 将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口;
[0030] 定义用于实现所述功能接口的实现类,实现类中可引用第三方库中的类来实现对应的功能;
[0031] 定义用于实现所述功能接口的空实现类,空实现类中不引用第三方库中的类,所有实现的方法均为空的实现;
[0032] 定义一个工厂类,对外提供获取所述功能接口的方法,至少用于判断是否创建空实现返回。
[0033] 本发明实施例通过将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口,该功能接口可以不公开具体的实现类,并定义一个工厂类,对外提供获取所述功能接口的方法,使得外部只要调用工厂类的获取接口方法,即使调用失败也不会加载到已裁剪的类,不会抛出错误从引发应用程序崩溃,保障了客户在裁剪第三方库后可以正常使用,客户可以根据自身需求自由裁剪不需要的第三方库以减少SDK的体积,从而减少集成SDK后的APP体积大小。另一方面,本实施例通过创建抽象化接口的方式避免了采用反射方案,减少了风险、漏洞问题,通过定义工厂类并对外提供获取所述功能接口的方法,避免采用空包方案,减少了额外的项目维护、发包成本,客户只需按给定的方式简单修改Gradle依赖配置项即可安全裁剪第三方库。

附图说明

[0034] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0035] 图1为本发明第一实施例的一种Android端支持安全裁剪第三方库的方法的流程图;
[0036] 图2为本发明第二实施例的一种Android端支持安全裁剪第三方库的方法的流程图;
[0037] 图3为本发明第二实施例中S24的一个优选实施方案的流程图;
[0038] 图4为本发明第三实施例的一种Android端支持安全裁剪第三方库的装置的结构框图;
[0039] 图5为本发明的又一实施方式的计算机内部构造示意图。

具体实施方式

[0040] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,众所周知的模块、单元及其相互之间的连接、链接、通信或操作没有示出或未作详细说明。并且,所描述的特征、架构或功能可在一个或一个以上实施方式中以任何方式组合。本领域技术人员应当理解,下述的各种实施方式只用于举例说明,而非用于限制本发明的保护范围。还可以容易理解,本文所述和附图所示的各实施方式中的模块或单元或处理方式可以按各种不同配置进行组合和设计。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0041] 第一实施例:
[0042] 请参照图1所示,本发明实施例公开了一种Android端支持安全裁剪第三方库的方法,包括:
[0043] S11,将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口。
[0044] 通常Android SDK的提供方需要扩展功能时,需要集成第三方库用于支持对应的功能,而不同客户对SDK提供的功能的需求不同,当某些客户不需要SDK的部分功能时,可能对SDK的对应第三方库进行裁剪,以满足其自身APP小型化等目的,因此SDK提供方针对可能被裁剪的第三方库,并在其基础上提供安全裁剪的方法。
[0045] 在本步骤中,通过第三方库所提供的功能抽象出一个SDK接口,对外只公开接口,不公开内部的具体实现类。
[0046] 以下是相关名词解释:
[0047] SDK:软件开发工具包(Software Development Kit ),软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。
[0048] APP:手机软件(Application),主要指安装在智能手机上的软件,完善原始系统的不足与个性化。
[0049] Gradle:是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。
[0050] S12,定义用于实现所述功能接口的实现类,实现类中可引用第三方库中的类来实现对应的功能。
[0051] 本实施例的实现类用于实现功能接口中约定的内容。即在功能接口中定义规范,实现类来确定规范如何运行,实现类可引用第三方库中的类来实现具体的功能。
[0052] S13,定义用于实现所述功能接口的空实现类,空实现类中不引用第三方库中的类,所有实现的方法均为空的实现。
[0053] 空实现类对应于实现类,其不引用第三方库中的类,不用以实现具体的功能。
[0054] S14,定义一个工厂类,对外提供获取所述功能接口的方法,至少用于判断是否创建空实现返回。
[0055] 工厂类通过传入不同的参数在工厂类内部区分成不同的对象,然后产生不同的对象实例。本实施例用于提供获取功能接口的方法,判断是否创建空实现返回,以满足用户在裁剪第三方库时,通过空实现不引用第三方库中的类,避免加载到已裁剪的类而导致错误或应用程序崩溃的情况。
[0056] 本发明实施例通过将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口,该功能接口可以不公开具体的实现类,并定义一个工厂类,对外提供获取所述功能接口的方法,使得外部只要调用工厂类的获取接口方法,即使调用失败也不会加载到已裁剪的类,不会抛出错误从引发应用程序崩溃,保障了客户在裁剪第三方库后可以正常使用,客户可以根据自身需求自由裁剪不需要的第三方库以减少SDK的体积,从而减少集成SDK后的APP体积大小。另一方面,本实施例通过创建抽象化接口的方式避免了采用反射方案,减少了风险、漏洞问题,通过定义工厂类并对外提供获取所述功能接口的方法,避免采用空包方案,减少了额外的项目维护、发包成本,客户只需按给定的方式简单修改Gradle依赖配置项即可安全裁剪第三方库。
[0057] 第二实施例:
[0058] 请参照图2和图3所示,本发明实施例公开了另一种Android端支持安全裁剪第三方库的方法。包括:
[0059] S21,将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口。
[0060] S22,定义用于实现所述功能接口的实现类,实现类中可引用第三方库中的类来实现对应的功能。
[0061] S23,定义用于实现所述功能接口的空实现类,空实现类中不引用第三方库中的类,所有实现的方法均为空的实现。
[0062] S21‑S23与第一实施例的对应步骤相同,这里不再赘述。
[0063] S24,定义一个工厂类,对外提供获取所述功能接口的方法,所述获取所述功能接口的方法在内部所做的操作具体为:在通过功能接口调用第三方库的类对象异常时,创建空实现类返回。
[0064] 具体的,所述在通过功能接口调用第三方库的类对象异常时,创建空实现类返回的步骤,包括:
[0065] S241,通过功能接口对任意一个第三方库中的类对象执行调用操作,对所述调用操作进行异常捕获,若发生异常则说明第三方库不存在,否则说明第三方库存在。
[0066] 本步骤S241,具体为:通过功能接口对任意一个第三方库中的类对象执行加载或创建操作,对所述加载或创建操作进行异常捕获,若发生异常则说明第三方库不存在,否则说明第三方库存在。
[0067] 通常情况下,对第三方库中类对象的任何调用操作都可以用于进行异常捕获,本实施例的创建或加载操作具有实施简单、可靠的优点。
[0068] S242,使用预设变量记录所述调用操作,判断是否发生异常,若发生异常,则记录为true,若未发生异常,记录为false;
[0069] S243,根据预设变量的值创建不同的实例返回,若预设变量记录为true,创建空实现类实例返回;若预设变量记录为false,创建实现类实例返回。
[0070] 当预设变量为true时,说明第三方库不存在,功能接口调用第三方库的类对象的操作异常,创建空实现类实例返回,作为一种优选方案而非限定,所述预设变量包括boolean变量。
[0071] 本发明实施例通过在运行时查找第三方库是否存在,若第三方库存在则加载实现类,外部只要调用工厂类的获取所述功能接口的方法,就能和原来一样正常使用第三方库的功能,若第三方库不存在则加载空实现类,从而避开Android虚拟机加载已裁剪的类而导致的程序异常,并且本实施例能够支持客户修改Gradle依赖配置项裁剪第三方库后,应用程序仍能够正常运行。
[0072] 第三实施例:
[0073] 请参照图4所示,本发明还提供了一种Android端支持安全裁剪第三方库的装置100,包括创建模块110、第一定义模块120、第二定义模块130和第三定义模块140,其中:
[0074] 创建模块110,与第一定义模块120连接,用于将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口;
[0075] 第一定义模块120,与第二定义模块130和第三定义模块140连接,用于定义用于实现所述功能接口的实现类,实现类中可引用第三方库中的类来实现对应的功能;
[0076] 第二定义模块130,与第三定义模块140连接,用于定义用于实现所述功能接口的空实现类,空实现类中不引用第三方库中的类,所有实现的方法均为空的实现;
[0077] 第三定义模块140,用于定义一个工厂类,对外提供获取所述功能接口的方法,所述方法至少用于判断是否创建空实现返回。
[0078] 作为一种优选方案而非限定,所述第三定义模块140,具体用于:
[0079] 定义一个工厂类,对外提供获取所述功能接口的方法,通过功能接口对任意一个第三方库中的类对象执行调用操作,对所述调用操作进行异常捕获,若发生异常则说明第三方库不存在,否则说明第三方库存在;
[0080] 使用预设变量记录所述调用操作,判断是否发生异常,若发生异常,则记录为true,若未发生异常,记录为false;
[0081] 根据预设变量的值创建不同的实例返回,若预设变量记录为true,创建空实现类实例返回;若预设变量记录为false,创建实现类实例返回。
[0082] 本实施例的模块与上述两个方法实施例中的步骤一一对应,在此不再赘诉。
[0083] 本发明实施例通过将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口,该功能接口可以不公开具体的实现类,并定义一个工厂类,对外提供获取所述功能接口的方法,使得外部只要调用工厂类的获取接口方法,即使调用失败也不会加载到已裁剪的类,不会抛出错误从引发应用程序崩溃,保障了客户在裁剪第三方库后可以正常使用,客户可以根据自身需求自由裁剪不需要的第三方库以减少SDK的体积,从而减少集成SDK后的APP体积大小。另一方面,本实施例通过创建抽象化接口的方式避免了采用反射方案,减少了风险、漏洞问题,通过定义工厂类并对外提供获取所述功能接口的方法,避免采用空包方案,减少了额外的项目维护、发包成本,客户只需按给定的方式简单修改Gradle依赖配置项即可安全裁剪第三方库。
[0084] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0085] 本发明实施例还提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述各实施例中的一种Android端支持安全裁剪第三方库的方法。
[0086] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各一种Android端支持安全裁剪第三方库的方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0087] 或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、终端、或者网络设备等)执行本发明各个实施例方法的全部或部分。而前述的存储介质包括:移动存储设备、RAM、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
[0088] 与上述的计算机存储介质对应的是,在一个实施例中还提供一种计算机设备,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行程序时实现如上述各实施例中的一种Android端支持安全裁剪第三方库的方法。
[0089] 该计算机设备可以是终端,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种Android端支持安全裁剪第三方库的方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
[0090] 本发明实施例通过将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口,该功能接口可以不公开具体的实现类,并定义一个工厂类,对外提供获取所述功能接口的方法,使得外部只要调用工厂类的获取接口方法,即使调用失败也不会加载到已裁剪的类,不会抛出错误从引发应用程序崩溃,保障了客户在裁剪第三方库后可以正常使用,客户可以根据自身需求自由裁剪不需要的第三方库以减少SDK的体积,从而减少集成SDK后的APP体积大小。另一方面,本实施例通过创建抽象化接口的方式避免了采用反射方案,减少了风险、漏洞问题,通过定义工厂类并对外提供获取所述功能接口的方法,避免采用空包方案,减少了额外的项目维护、发包成本,客户只需按给定的方式简单修改Gradle依赖配置项即可安全裁剪第三方库。
[0091] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0092] 以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。