目的
本文旨在实现“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) {
}
}