前奏
多渠道打包,很多是为了在各渠道上线使用的。而我主要是为了方便测试版使用的。最近做项目由于出现过内存泄漏需要分析,使用Android Studio+MAT分析工具分析比较繁琐,也很耗时,使用Leakcanary框架集成到项目中可以很方便在运行的时候在手机上看出来,效率高很多了。加之自己刚换MAC2016版需用转接口连接手机,连接经常不稳定看Log日志不方便,便想在测试的时候输出Toast而发布版不用Toast,如果代码都在一起只有一两行像原来注释反注释的方法分别打出不同的APK还比较方便,但是如果代码比较多且在不同的类里面就比较繁琐或容易忘记了。使用多渠道打包正合适。本文不讲那么简单的,介绍简单的使用方法。
使用
#郭德纲
说了不是那么多,那么如何简单的使用呢,搜过很多教程,接下来就总结下自己觉得比较方便的方式了。修改Modoule中的build.gradle,在android闭包中加入如下代码:
productFlavors {
production {}//正式发布版本
dev {}//开发测试版本
}
build后点击左侧面板的Build Variants,就可以看到可以选择dev或production来打包了。
那么如何能实现方便测试的那种需求呢?莫慌,接下来就来就是见证奇迹的时刻。
我们在Module的src目录下新建dev和production文件夹,并创建与main文件夹下Java文件同样的包名。新建相同的类,类里面方法名一样,方法里面的代码不一样。可以看到当选中一个渠道时对应下代码是正常的,另外一个渠道对应下代码标红,这样就可以使用同样的方法名在不同的渠道下执行不同的代码块了。
比如我的dev下的AppInit代码:
public class AppInit {
public void init(){
if (LeakCanary.isInAnalyzerProcess(AppApplication.getAppContext())) {
// This process is dedicated to LeakCanary for heap analysis.
// You should not init your app in this process.
return;
}
LeakCanary.install(AppApplication.getInstance());
}
}
production下的AppInit代码:
public class AppInit {
public void init(){
}
}
在自己的Application类里面调用init方法,分别运行两种渠道可以看到开发版多了Leaks图标,正式版没有Leaks图标,这样就达到了想要的效果了。
其他还有可以更改应用名,应用包名等功能……