系统App集成leakcanary来查找内存泄露

Android的APP可以使用leakcanary(参考链接https://github.com/square/leakcanary)来进行定位分析,而leakcanary工程是为AndroidStudio配置的,我们需要将其移植到系统编译环境中。

1.获取JAR包

链接:https://pan.baidu.com/s/18WWTHuU9Z6Tmdz1izUzE4w 密码:iwcq

选中leak_lib.rar双击解压,获取其中的haha-1.3.jar、leakcanary-analyzer-1.3.jar、leakcanary-android-1.3.aar、leakcanary-watcher-1.3.jar
在Android.mk文件同级目录下新建libs文件夹,如果已有libs文件夹则不用创建,然后刚刚获取的四个文件放入libs文件夹中


2.修改Android.mk文件

在mk文件中添加三部分:jar与aar、LOCAL_AAPT_FLAGS 、BUILD_MULTI_PREBUILT模块

2.1jar与aar

	LOCAL_STATIC_JAVA_AAR_LIBRARIES := leakcanary-android-aar
	LOCAL_STATIC_JAVA_LIBRARIES :=  haha leakcanary-analyzer-aar leakcanary-watcher-aar

2.2LOCAL_AAPT_FLAGS

	LOCAL_AAPT_FLAGS := \
    --auto-add-overlay \
    --extra-packages com.squareup.leakcanary

2.3BUILD_MULTI_PREBUILT

	include $(CLEAR_VARS)
	LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := core-3.2.1:libs/core-3.2.1.jar \
        haha:libs/haha-1.3.jar \
        leakcanary-android-aar:libs/leakcanary-android-1.3.aar \
        leakcanary-watcher-aar:libs/leakcanary-watcher-1.3.jar \
        leakcanary-analyzer-aar:libs/leakcanary-analyzer-1.3.jar 
	include $(BUILD_MULTI_PREBUILT)
	include $(call all-makefiles-under,$(LOCAL_PATH))

3.添加监听内存泄露代码

新建自定义Application,或者在已有的Application的onCreate方法中添加代码

import com.squareup.leakcanary.LeakCanary;
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);
// Normal app init code...

4.修改AndroidManifest.xml

在AndroidManifest.xml文件的中添加

<uses-sdk
          android:minSdkVersion="14"
          android:targetSdkVersion="21"/>

5.实践

编译运行
筛选log关键字"LeakCanary",则可以查看是否有内存泄露了

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值