实现“Library只在Debug包中使用,Release包中自动去除”功能

目的

本文旨在实现“Library只在Debug包中使用,Release包中自动去除”功能!

背景

举个栗子:

LeakCanary是一个便捷的检测内存泄露的Library,但是我们只能在Debug包中使用它,上线之后需要移除它,因此需要在Release包中移除。

如果不通过一些手段的话,我们只能在上线的时候通过手动注释的方式移除它,但是这样有两个弊端:首先容易忘记,其次如果需要移除的Library比较多,就比较麻烦了!

所以,下面就教大家怎么实现Release包中自动移除不需要的Library的功能!

具体操作

步骤1:在主Module的build.gradle文件中,添加以下代码,路径可根据自身情况调整,此处以src/debug/java为例:

android{
    sourceSets {
        debug {
            java.srcDirs = ['src/debug/java']
        }
        release {
            java.srcDirs = ['src/release/java']
        }
    }
}

步骤2:按照步骤1中的路径,参考下面的目录结构,创建文件夹:

主Module
  |--
  src
    |--debug
      |--java
        |--包名
          |--MMHConfig.java // 实现方法和debug包需要的功能
    |--main
      |--java
        |--包名
    |--release
      |--java
        |--包名
          |--MMHConfig.java // 只实现方法,不实现功能

Demo

debug文件夹下的MMHConfig.java文件内容:

public class MMHConfig {

    public static void setting(Application application) {
        initLeakCanary();
    }

    /**
     * 初始化LeakCanary
     */
    private void initLeakCanary() {
        if (LeakCanary.isInAnalyzerProcess(this)) {
          // This process is dedicated to LeakCanary for heap analysis.
          // You should not init your app in this process.
          return;
        }
        LeakCanary.install(this);
    }

}

release文件夹下的MMHConfig.java文件内容:

public class MMHConfig {

    public static void setting(Application application) {

    }

}

添加新评论