CN114816369B - 一种Android端支持安全裁剪第三方库的方法及装置 - Google Patents
一种Android端支持安全裁剪第三方库的方法及装置 Download PDFInfo
- Publication number
- CN114816369B CN114816369B CN202210744907.3A CN202210744907A CN114816369B CN 114816369 B CN114816369 B CN 114816369B CN 202210744907 A CN202210744907 A CN 202210744907A CN 114816369 B CN114816369 B CN 114816369B
- Authority
- CN
- China
- Prior art keywords
- party library
- class
- implementation
- functional interface
- creating
- 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
Images
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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出了一种Android端支持安全裁剪第三方库的方法及装置,所述方法包括:将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口;定义用于实现所述功能接口的实现类,实现类中可引用第三方库中的类来实现对应的功能;定义用于实现所述功能接口的空实现类,空实现类中不引用第三方库中的类,所有实现的方法均为空的实现;定义一个工厂类,对外提供获取所述功能接口的方法,至少用于判断是否创建空实现返回。所述装置使用了所述方法。本发明使得客户可以根据自身需求按给定的方式修改Gradle依赖配置后,对第三方库进行简便的裁剪,裁剪第三方库后可以正常使用SDK,且减少集成SDK后的APP体积大小。
Description
技术领域
本发明涉及软件测试技术领域,具体涉及一种Android端支持安全裁剪第三方库的方法及装置。
背景技术
当Android SDK的提供方集成第三方库,用于支持某项功能的时候,整个SDK的体积也会随之增大。而客户在集成方提供的该SDK的时候,不一定会需要SDK中的第三方库的功能,这些第三方库增加了客户集成SDK后的APP体积大小。如果客户直接通过修改Gradle的依赖配置项裁剪第三方库,则应用程序在运行到已裁剪的第三方库中的类时,由于Android虚拟机加载不到这些已裁剪的类,就会抛出错误从而导致应用程序崩溃,影响了客户的正常使用。
发明内容
针对现有技术的不足,本发明提出一种Android端支持安全裁剪第三方库的方法及装置,解决了现有技术中客户在裁剪SDK的第三方库后,应用程序在运行到已裁剪的第三方库中的类时,会抛出错误从而导致应用程序崩溃的缺陷。
本发明的技术方案是这样实现的:一种Android端支持安全裁剪第三方库的方法,包括:
将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口;
定义用于实现所述功能接口的实现类,实现类中可引用第三方库中的类来实现对应的功能;
定义用于实现所述功能接口的空实现类,空实现类中不引用第三方库中的类,所有实现的方法均为空的实现;
定义一个工厂类,对外提供获取所述功能接口的方法,至少用于判断是否创建空实现返回。
在其中一个实施例中,上述所述获取所述功能接口的方法在内部所做的操作具体为:在通过功能接口调用第三方库的类对象异常时,创建空实现类返回。
在其中一个实施例中,上述所述在通过功能接口调用第三方库的类对象异常时,创建空实现类返回的步骤,包括:
通过功能接口对任意一个第三方库中的类对象执行调用操作,对所述调用操作进行异常捕获,若发生异常则说明第三方库不存在,否则说明第三方库存在;
使用预设变量记录所述调用操作,判断是否发生异常,若发生异常,则记录为true,若未发生异常,记录为false;
根据预设变量的值创建不同的实例返回,若预设变量记录为true,创建空实现类实例返回;若预设变量记录为false,创建实现类实例返回。
在其中一个实施例中,上述所述功能接口对外只公开接口,不公开内部的具体实现类。
在其中一个实施例中,上述所述通过功能接口对任意一个第三方库中的类对象执行调用操作,对所述调用操作进行异常捕获,若发生异常则说明第三方库不存在,否则说明第三方库存在的步骤,具体为:
通过功能接口对任意一个第三方库中的类对象执行加载或创建操作,对所述加载或创建操作进行异常捕获,若发生异常则说明第三方库不存在,否则说明第三方库存在。
在其中一个实施例中,上述所述预设变量包括boolean变量。
本发明还提供了一种Android端支持安全裁剪第三方库的装置,包括:
创建模块,用于将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口;
第一定义模块,用于定义用于实现所述功能接口的实现类,实现类中可引用第三方库中的类来实现对应的功能;
第二定义模块,用于定义用于实现所述功能接口的空实现类,空实现类中不引用第三方库中的类,所有实现的方法均为空的实现;
第三定义模块,用于定义一个工厂类,对外提供获取所述功能接口的方法,至少用于判断是否创建空实现返回。
在其中一个实施例中,上述所述第三定义模块140,具体用于:
定义一个工厂类,对外提供获取所述功能接口的方法,通过功能接口对任意一个第三方库中的类对象执行调用操作,对所述调用操作进行异常捕获,若发生异常则说明第三方库不存在,否则说明第三方库存在;
使用预设变量记录所述调用操作,判断是否发生异常,若发生异常,则记录为true,若未发生异常,记录为false;
根据预设变量的值创建不同的实例返回,若预设变量记录为true,创建空实现类实例返回;若预设变量记录为false,创建实现类实例返回。
本发明还提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所述的一种Android端支持安全裁剪第三方库的方法。
本发明还提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述所述的一种Android端支持安全裁剪第三方库的方法。
将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口;
定义用于实现所述功能接口的实现类,实现类中可引用第三方库中的类来实现对应的功能;
定义用于实现所述功能接口的空实现类,空实现类中不引用第三方库中的类,所有实现的方法均为空的实现;
定义一个工厂类,对外提供获取所述功能接口的方法,至少用于判断是否创建空实现返回。
本发明实施例通过将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口,该功能接口可以不公开具体的实现类,并定义一个工厂类,对外提供获取所述功能接口的方法,使得外部只要调用工厂类的获取接口方法,即使调用失败也不会加载到已裁剪的类,不会抛出错误从引发应用程序崩溃,保障了客户在裁剪第三方库后可以正常使用,客户可以根据自身需求自由裁剪不需要的第三方库以减少SDK的体积,从而减少集成SDK后的APP体积大小。另一方面,本实施例通过创建抽象化接口的方式避免了采用反射方案,减少了风险、漏洞问题,通过定义工厂类并对外提供获取所述功能接口的方法,避免采用空包方案,减少了额外的项目维护、发包成本,客户只需按给定的方式简单修改Gradle依赖配置项即可安全裁剪第三方库。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明第一实施例的一种Android端支持安全裁剪第三方库的方法的流程图;
图2为本发明第二实施例的一种Android端支持安全裁剪第三方库的方法的流程图;
图3为本发明第二实施例中S24的一个优选实施方案的流程图;
图4为本发明第三实施例的一种Android端支持安全裁剪第三方库的装置的结构框图;
图5为本发明的又一实施方式的计算机内部构造示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,众所周知的模块、单元及其相互之间的连接、链接、通信或操作没有示出或未作详细说明。并且,所描述的特征、架构或功能可在一个或一个以上实施方式中以任何方式组合。本领域技术人员应当理解,下述的各种实施方式只用于举例说明,而非用于限制本发明的保护范围。还可以容易理解,本文所述和附图所示的各实施方式中的模块或单元或处理方式可以按各种不同配置进行组合和设计。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
第一实施例:
请参照图1所示,本发明实施例公开了一种Android端支持安全裁剪第三方库的方法,包括:
S11,将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口。
通常Android SDK的提供方需要扩展功能时,需要集成第三方库用于支持对应的功能,而不同客户对SDK提供的功能的需求不同,当某些客户不需要SDK的部分功能时,可能对SDK的对应第三方库进行裁剪,以满足其自身APP小型化等目的,因此SDK提供方针对可能被裁剪的第三方库,并在其基础上提供安全裁剪的方法。
在本步骤中,通过第三方库所提供的功能抽象出一个SDK接口,对外只公开接口,不公开内部的具体实现类。
以下是相关名词解释:
SDK:软件开发工具包(Software Development Kit ),软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。
APP:手机软件(Application),主要指安装在智能手机上的软件,完善原始系统的不足与个性化。
Gradle:是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。
S12,定义用于实现所述功能接口的实现类,实现类中可引用第三方库中的类来实现对应的功能。
本实施例的实现类用于实现功能接口中约定的内容。即在功能接口中定义规范,实现类来确定规范如何运行,实现类可引用第三方库中的类来实现具体的功能。
S13,定义用于实现所述功能接口的空实现类,空实现类中不引用第三方库中的类,所有实现的方法均为空的实现。
空实现类对应于实现类,其不引用第三方库中的类,不用以实现具体的功能。
S14,定义一个工厂类,对外提供获取所述功能接口的方法,至少用于判断是否创建空实现返回。
工厂类通过传入不同的参数在工厂类内部区分成不同的对象,然后产生不同的对象实例。本实施例用于提供获取功能接口的方法,判断是否创建空实现返回,以满足用户在裁剪第三方库时,通过空实现不引用第三方库中的类,避免加载到已裁剪的类而导致错误或应用程序崩溃的情况。
本发明实施例通过将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口,该功能接口可以不公开具体的实现类,并定义一个工厂类,对外提供获取所述功能接口的方法,使得外部只要调用工厂类的获取接口方法,即使调用失败也不会加载到已裁剪的类,不会抛出错误从引发应用程序崩溃,保障了客户在裁剪第三方库后可以正常使用,客户可以根据自身需求自由裁剪不需要的第三方库以减少SDK的体积,从而减少集成SDK后的APP体积大小。另一方面,本实施例通过创建抽象化接口的方式避免了采用反射方案,减少了风险、漏洞问题,通过定义工厂类并对外提供获取所述功能接口的方法,避免采用空包方案,减少了额外的项目维护、发包成本,客户只需按给定的方式简单修改Gradle依赖配置项即可安全裁剪第三方库。
第二实施例:
请参照图2和图3所示,本发明实施例公开了另一种Android端支持安全裁剪第三方库的方法。包括:
S21,将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口。
S22,定义用于实现所述功能接口的实现类,实现类中可引用第三方库中的类来实现对应的功能。
S23,定义用于实现所述功能接口的空实现类,空实现类中不引用第三方库中的类,所有实现的方法均为空的实现。
S21-S23与第一实施例的对应步骤相同,这里不再赘述。
S24,定义一个工厂类,对外提供获取所述功能接口的方法,所述获取所述功能接口的方法在内部所做的操作具体为:在通过功能接口调用第三方库的类对象异常时,创建空实现类返回。
具体的,所述在通过功能接口调用第三方库的类对象异常时,创建空实现类返回的步骤,包括:
S241,通过功能接口对任意一个第三方库中的类对象执行调用操作,对所述调用操作进行异常捕获,若发生异常则说明第三方库不存在,否则说明第三方库存在。
本步骤S241,具体为:通过功能接口对任意一个第三方库中的类对象执行加载或创建操作,对所述加载或创建操作进行异常捕获,若发生异常则说明第三方库不存在,否则说明第三方库存在。
通常情况下,对第三方库中类对象的任何调用操作都可以用于进行异常捕获,本实施例的创建或加载操作具有实施简单、可靠的优点。
S242,使用预设变量记录所述调用操作,判断是否发生异常,若发生异常,则记录为true,若未发生异常,记录为false;
S243,根据预设变量的值创建不同的实例返回,若预设变量记录为true,创建空实现类实例返回;若预设变量记录为false,创建实现类实例返回。
当预设变量为true时,说明第三方库不存在,功能接口调用第三方库的类对象的操作异常,创建空实现类实例返回,作为一种优选方案而非限定,所述预设变量包括boolean变量。
本发明实施例通过在运行时查找第三方库是否存在,若第三方库存在则加载实现类,外部只要调用工厂类的获取所述功能接口的方法,就能和原来一样正常使用第三方库的功能,若第三方库不存在则加载空实现类,从而避开Android虚拟机加载已裁剪的类而导致的程序异常,并且本实施例能够支持客户修改Gradle依赖配置项裁剪第三方库后,应用程序仍能够正常运行。
第三实施例:
请参照图4所示,本发明还提供了一种Android端支持安全裁剪第三方库的装置100,包括创建模块110、第一定义模块120、第二定义模块130和第三定义模块140,其中:
创建模块110,与第一定义模块120连接,用于将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口;
第一定义模块120,与第二定义模块130和第三定义模块140连接,用于定义用于实现所述功能接口的实现类,实现类中可引用第三方库中的类来实现对应的功能;
第二定义模块130,与第三定义模块140连接,用于定义用于实现所述功能接口的空实现类,空实现类中不引用第三方库中的类,所有实现的方法均为空的实现;
第三定义模块140,用于定义一个工厂类,对外提供获取所述功能接口的方法,所述方法至少用于判断是否创建空实现返回。
作为一种优选方案而非限定,所述第三定义模块140,具体用于:
定义一个工厂类,对外提供获取所述功能接口的方法,通过功能接口对任意一个第三方库中的类对象执行调用操作,对所述调用操作进行异常捕获,若发生异常则说明第三方库不存在,否则说明第三方库存在;
使用预设变量记录所述调用操作,判断是否发生异常,若发生异常,则记录为true,若未发生异常,记录为false;
根据预设变量的值创建不同的实例返回,若预设变量记录为true,创建空实现类实例返回;若预设变量记录为false,创建实现类实例返回。
本实施例的模块与上述两个方法实施例中的步骤一一对应,在此不再赘诉。
本发明实施例通过将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口,该功能接口可以不公开具体的实现类,并定义一个工厂类,对外提供获取所述功能接口的方法,使得外部只要调用工厂类的获取接口方法,即使调用失败也不会加载到已裁剪的类,不会抛出错误从引发应用程序崩溃,保障了客户在裁剪第三方库后可以正常使用,客户可以根据自身需求自由裁剪不需要的第三方库以减少SDK的体积,从而减少集成SDK后的APP体积大小。另一方面,本实施例通过创建抽象化接口的方式避免了采用反射方案,减少了风险、漏洞问题,通过定义工厂类并对外提供获取所述功能接口的方法,避免采用空包方案,减少了额外的项目维护、发包成本,客户只需按给定的方式简单修改Gradle依赖配置项即可安全裁剪第三方库。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明实施例还提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述各实施例中的一种Android端支持安全裁剪第三方库的方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各一种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)等。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、终端、或者网络设备等)执行本发明各个实施例方法的全部或部分。而前述的存储介质包括:移动存储设备、RAM、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
与上述的计算机存储介质对应的是,在一个实施例中还提供一种计算机设备,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行程序时实现如上述各实施例中的一种Android端支持安全裁剪第三方库的方法。
该计算机设备可以是终端,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种Android端支持安全裁剪第三方库的方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本发明实施例通过将SDK中的第三方库所提供的功能抽象化,并创建对应的功能接口,该功能接口可以不公开具体的实现类,并定义一个工厂类,对外提供获取所述功能接口的方法,使得外部只要调用工厂类的获取接口方法,即使调用失败也不会加载到已裁剪的类,不会抛出错误从引发应用程序崩溃,保障了客户在裁剪第三方库后可以正常使用,客户可以根据自身需求自由裁剪不需要的第三方库以减少SDK的体积,从而减少集成SDK后的APP体积大小。另一方面,本实施例通过创建抽象化接口的方式避免了采用反射方案,减少了风险、漏洞问题,通过定义工厂类并对外提供获取所述功能接口的方法,避免采用空包方案,减少了额外的项目维护、发包成本,客户只需按给定的方式简单修改Gradle依赖配置项即可安全裁剪第三方库。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (6)
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端支持安全裁剪第三方库的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210744907.3A CN114816369B (zh) | 2022-06-29 | 2022-06-29 | 一种Android端支持安全裁剪第三方库的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210744907.3A CN114816369B (zh) | 2022-06-29 | 2022-06-29 | 一种Android端支持安全裁剪第三方库的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114816369A CN114816369A (zh) | 2022-07-29 |
CN114816369B true CN114816369B (zh) | 2022-10-04 |
Family
ID=82523496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210744907.3A Active CN114816369B (zh) | 2022-06-29 | 2022-06-29 | 一种Android端支持安全裁剪第三方库的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114816369B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111309325A (zh) * | 2020-01-22 | 2020-06-19 | 上海钧正网络科技有限公司 | 一种第三方库引用的方法、装置及移动终端 |
CN114416057A (zh) * | 2022-01-19 | 2022-04-29 | 平安付科技服务有限公司 | 项目代码打包方法、装置、终端设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416310B (zh) * | 2019-08-22 | 2024-06-25 | 杭州萤石软件有限公司 | 一种扩充的面向对象软件开发工具包的功能扩展方法 |
CN114527964A (zh) * | 2022-02-18 | 2022-05-24 | 广州易方信息科技股份有限公司 | 实时通信库裁剪方法、装置、计算机设备 |
CN114461226A (zh) * | 2022-04-07 | 2022-05-10 | 广州易方信息科技股份有限公司 | 解决强制依赖的方法及装置 |
-
2022
- 2022-06-29 CN CN202210744907.3A patent/CN114816369B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111309325A (zh) * | 2020-01-22 | 2020-06-19 | 上海钧正网络科技有限公司 | 一种第三方库引用的方法、装置及移动终端 |
CN114416057A (zh) * | 2022-01-19 | 2022-04-29 | 平安付科技服务有限公司 | 项目代码打包方法、装置、终端设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
Android应用性能数据采集探针研究;马思峻等;《计算机应用与软件》;20170715(第07期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114816369A (zh) | 2022-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4088212A1 (en) | Method and apparatus for authority control, computer device and storage medium | |
CN110413432B (zh) | 一种信息处理方法、电子设备及存储介质 | |
CN112631737B (zh) | 容器镜像构建方法、装置、电子设备及存储介质 | |
CN110599305A (zh) | 业务处理方法、装置及存储介质 | |
CN115878207A (zh) | 一种微服务治理方法、装置及系统 | |
CN114816369B (zh) | 一种Android端支持安全裁剪第三方库的方法及装置 | |
CN114461226A (zh) | 解决强制依赖的方法及装置 | |
CN113127329B (zh) | 脚本调试方法、装置及计算机存储介质 | |
TWI501152B (zh) | 用於簡化具有動態程式庫的介面之方法 | |
CN115292201B (zh) | 函数调用栈解析和回溯方法与装置 | |
CN111176653B (zh) | 程序编译合包方法、装置、电子设备及存储介质 | |
CN114328090A (zh) | 一种程序监控方法、装置、电子设备及存储介质 | |
CN114416057A (zh) | 项目代码打包方法、装置、终端设备及存储介质 | |
CN114564385A (zh) | 软件测试方法、装置、计算机设备和存储介质 | |
CN111427623A (zh) | 程序退出方法、装置、计算机设备和存储介质 | |
CN110597707A (zh) | 一种内存越界故障检测方法及终端设备 | |
CN114327648B (zh) | 一种驱动调试方法、装置、电子设备及存储介质 | |
CN217825010U (zh) | 通信测试系统 | |
CN117707546A (zh) | 基于ci/cd的代码编译产物处理方法及装置 | |
CN114020714A (zh) | 一种日志控制方法、装置、电子设备及存储介质 | |
CN116955078A (zh) | 多个自触发应用的日志输出方法、装置、设备及存储介质 | |
CN113485943A (zh) | 应用测试方法、装置、终端及存储介质 | |
CN115458031A (zh) | 硬盘测试方法、装置、计算机设备和存储介质 | |
CN115437683A (zh) | 基于sdk的变量配置方法、装置及计算机可读存储介质 | |
CN117407023A (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 | ||
CB02 | Change of applicant information |
Address after: Room 402, No. 66, North Street, University Town Center, Panyu District, Guangzhou City, Guangdong Province, 510006 Applicant after: Yifang Information Technology Co.,Ltd. Address before: 510006 room 402, No. 66 (innovation building), North Central Street, University City, Panyu District, Guangzhou, Guangdong Province Applicant before: GUANGZHOU EASEFUN INFORMATION TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |