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与aarLOCAL_STATIC_JAVA_AAR_LIBRARIES := leakcanary-android-aar
LOCAL_STATIC_JAVA_LIBRARIES := haha leakcanary-analyzer-aar leakcanary-watcher-aar
2.2LOCAL_AAPT_FLAGSLOCAL_AAPT_FLAGS := \
--auto-add-overlay \
--extra-packages com.squareup.leakcanary
2.3BUILD_MULTI_PREBUILTinclude $(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文件的中添加
android:minSdkVersion="14"
android:targetSdkVersion="21"/>
5.实践编译运行
筛选log关键字"LeakCanary",则可以查看是否有内存泄露了