源码编译环境集成LeakCanary

一、前言

在做系统应用的时候,一般都在Linus 服务器上面搭建编译环境,编译apk,而源码环境无法像gradle 一行代码依赖LeakCanary,而是需要通过aar或者jar形式添加依赖。刚好前段时间抽空将LeakCanary集成到项目中,现在将过程记录下来,为大家踩个坑。

二、撸起袖子

老规矩,百度一下...


源码编译环境集成LeakCanary_第1张图片
image.png

搜到一篇文章,嗯,感觉有我要的东西


源码编译环境集成LeakCanary_第2张图片
image.png

点进去一看,额,只是记录了依赖,没给出相应的jar包和arr,版本1.5也不是最新的,所以我还是自己动手吧。

下载LeakCanary源码

传送门 https://github.com/square/leakcanary

编译出 aar

选择assembleDebug


源码编译环境集成LeakCanary_第3张图片
image.png

生成的aar在目录 /build/outputs/aar 下


源码编译环境集成LeakCanary_第4张图片
image.png

leakcanary-android 依赖 leakcanary-analyzer,所以把leakcanary-analyzer-debug.aar也取出来


源码编译环境集成LeakCanary_第5张图片
image.png

leakcanary-analyzer 依赖 com.squareup.haha:haha:2.0.4 和 leakcanary-watcher
我们把haha:2.0.4的jar包取出来


源码编译环境集成LeakCanary_第6张图片
image.png

同理把leakcanary-watcher 的jar包取出来。

整理依赖

整理一下需要依赖的jar包和arr
haha-2.0.4.jar
leakcanary-analyzer-1.6.2.aar
leakcanary-android-1.6.2.aar
leakcanary-watcher-1.6.2.jar

把上面的aar和jar放到项目的libs目录下,然后打开Android.mk文件,开始添加依赖

#依赖申明,冒号前是别名,冒号后是jar包路径
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES :=  haha:libs/haha-2.0.4.jar \
    leakcanary-watcher:libs/leakcanary-watcher-1.6.2.jar \
    leakcanary-android:libs/leakcanary-android-1.6.2.aar \
    leakcanary-analyzer:libs/leakcanary-analyzer-1.6.2.aar \
include $(BUILD_MULTI_PREBUILT)

...省略其它

#依赖jar包
...省略其它jar包依赖
LOCAL_STATIC_JAVA_LIBRARIES += haha
LOCAL_STATIC_JAVA_LIBRARIES += leakcanary-watcher
#依赖aar
LOCAL_STATIC_JAVA_AAR_LIBRARIES := leakcanary-analyzer
LOCAL_STATIC_JAVA_AAR_LIBRARIES += leakcanary-android

...省略其它
#添加包名
LOCAL_AAPT_FLAGS += --extra-packages com.squareup.leakcanary
LOCAL_AAPT_FLAGS += --extra-packages gnu.trove

然后在Application中添加初始化代码

import com.squareup.leakcanary.LeakCanary;
#oncreate中
      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);

感觉应该没啥问题,编译一下试试
开始mm
等待中...

编译失败

源码编译环境集成LeakCanary_第7张图片
image.png

非法字符 '$' ?什么鬼,非法字符哪里来的,肯定是LeakCanary 的,看看去。


源码编译环境集成LeakCanary_第8张图片
image.png

原来是占位符导致的,这个好办,直接把applicationId 写死不就行了
这里就把 ${applicationId} 换成hello_world,然后编译一下,把aar替换成新编译的,然后mm
等待一分钟...


image.png

编译成功,install 一下,运行没问题。

那搞个内存泄漏出来看看?
源码编译环境集成LeakCanary_第9张图片
screen.png

嗯,没毛病,那本次源码环境集成LeakCanary工作到此就结束了。
总结:
1.下载LeakCanary 源码,修改manifest中的非法字符’$‘,然后编译,取出需要的aar和jar
2.然后在Android.mk中添加依赖

为何方便大家集成,依赖我已经整理出来了
链接:https://pan.baidu.com/s/1VIn4cZS4L7s8ricKWxFqoA 密码:9j5y

更多文章,敬请期待。

你可能感兴趣的:(源码编译环境集成LeakCanary)