一、介绍:
最近做app性能优化增加了几个第三方性能检测框架:
1、leakcanary(内存泄漏检测)
2、blockcanary(耗时检测工具)
因为项目开发时在android studio工具编译但在完整编译时是用make方式和整个项目一起编译,所以需要在AS编译时自动把上面性能检测工具编入方便开发自我调试,但在make编译版本不能带上上面工具(各种提示和日志影响用户体验),同时也要满足所有开发使用同一份代码互不影响,git库使用同一份代码大家都能用到上面功能。
针对上面情况需要差异化编译代码,并且兼容android studio和make脚本编译方式。
二、分析
1.leakcanary和blockcanary工具使用方法都只是需要在application类中做初始化即可,不涉及其它代码,所以需要对application进行差异化区分。
2.application需要在AndroidManifest.xml中声明,所以需要差异化AndroidManifest.xml文件。
3.添加leakcanary和blockcanary工具有两种方式:
(1)下载源码或jar包
(2)直接通过gradle引入
这两种方法都可以我选择的是第二种,因为添加上面工具主要是给开发自己使用所以需要和编译给其它人使用区分开,这个纪要用到多渠道打包方式。
4.make编译是给客户或测试的所以不需要编译上面工具,需要区分。
三、实施
根据以上分析我们需要做以下几个工作:
一.创建一个独立目录存放差异代码(这个目录不能在其它被包含的目录内否则可能会被其它代码编译进去)
我这里主要是需要application文件所以修改了上面几个文件res,libs等目录如果用到了也可以添加
1.因为项目开始没有重写application,所以新建了一个,如果之前已经重写了则需要在原来的基础上加上新增代码(保证原有功能)
import android.app.Application;
import android.content.Context;
import com.github.moduth.blockcanary.BlockCanary;
import com.squareup.leakcanary.LeakCanary;
public class LauncherApplication extends Application {
private static C