Skip to content
/ spy Public

在Build项目时检查Class之间的引用关系,避免因为依赖库版本问题而产生的ClassNotFoundException,NoSuchMethodException问题

Notifications You must be signed in to change notification settings

ooftf/spy

Repository files navigation

Spy

在Build项目时检查Class之间的引用关系,避免因为依赖库版本问题而产生的ClassNotFoundException问题
本项目借鉴于https://github.com/Sunzxyong/ApiInspect 修改内容如下

  • 增加了检测范围;
  • 支持className occurClassName method LineNumber多条件过滤
  • 修改为Referenced方式,不再Copy文件
  • 优化了兼容性问题;
  • 添加了interruptBuild属性,可选择打断Build过程

Maven Central

Introduce

Usage

Installation

Add dependencies in build.gradle of the root project

    repositories {
        mavenCentral()
   
    }
    dependencies {
        // ...
        classpath('com.github.ooftf:spy-plugin:1.0.5') {
            exclude group: 'com.android.tools.build', module: 'gradle'
        }
    }

and add the apply plugin to build.gradle in the module:

apply plugin: 'ooftf-spy'

Configuration

By default, spy will inspects all apis but does not contain the system api. Of course, you can also customize exclude or include Settings:

spy {

    enable true //Whether api inspect is enabled.

    inspectSystemApi false //Whether to inspect the system api.
    interruptBuild true //Whether interrupt build when find error
    //Specify the library to inspect.
//    include {
//        //Value is the package name.
//        api "com.zxy.tiny"
//    }

    //Specify the library not to inspect.
       /*exclude {
        //Value is the package name.
        api 'com.taobao.'
        api 'com.alibaba.'
        api 'org.'
        api 'com.baidubce.'
        api 'com.heytap.'
        api 'com.meizu.'
        api 'com.huawei.'
        api 'com.google.'
        api 'com.vivo.'
        api 'edu.umd.cs.findbugs.annotations.SuppressFBWarnings'
        api 'com.squareup.picasso.'
        api 'com.alipay.'
        api 'dalvik.'
        api 'sun.nio.'
        api 'okhttp3.internal.annotations.EverythingIsNonNull'
        api 'com.nostra13.universalimageloader.','com.didichuxing.doraemonkit'
        api 'com.tencent.map.geolocation.','com.didichuxing.doraemonkit'
    }*/

}

刚刚添spy可能报错比较多不要慌,一步步配置exclude即可,  
首先根据报错信息找到对应的类,如果对应位置有try catch处理这些一般可以添加到exclude
还有一些是不会运行到的类也可以添加到exclude

Inspect Result

When the Apk build is completed. The results of the inspection will be printed on the console:

Of course, The results of the inspection will also be stored in the api-inspect directory:

About

在Build项目时检查Class之间的引用关系,避免因为依赖库版本问题而产生的ClassNotFoundException,NoSuchMethodException问题

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages