本文介绍如何在系统应用中集成LeakCanary。由于很多系统应用不使用gradle,且通过Android.mk来进行编译,因此无法使用类似gradle的方式添加依赖来完成对LeakCanary的集成和使用。
1. 源码下载
LeakCanary的源码链接 https://github.com/square/leakcanary,通过 git clone
或者 zip 的方式将源码下载到本地,源码目录如下:
将 leakcanary-analyzer
,leakcanary-android
和 leakcanary-watcher
复制到系统应用源码根目录下。
2. 添加编译支持(修改Android.mk)
将上述3个java代码目录添加到编译树中:
LOCAL_SRC_FILES += $(call all-java-files-under, leakcanary-analyzer/) \
$(call all-java-files-under, leakcanary-android/) \
$(call all-java-files-under, leakcanary-watcher/)
将 leakcanary-android 目录下的 res 目录添加到资源文件编译:
LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/leakcanary-android/src/main/res
添加 haha
和 trove
的 jar 包到系统应用源码 libs 文件夹中,haha-2.0.3.jar 和 trove-3.0.2.jar 的下载链接:
https://pan.baidu.com/s/1dto2NcgvxEdiA3lGXVKX0A 提取码: qjqy
将这两个 jar 包加入编译:
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += \
haha:libs/haha-2.0.3.jar \
trove:libs/trove-3.0.2.jar
LOCAL_STATIC_JAVA_LIBRARIES += \
haha \
trove
3. 修改 AndroidManifest.xml
需要将 leakcanary-android 中声明的 Activity,Service,Provider 等组件以及权限申请加入到 AndroidManifest.xml 清单文件中:
<!-- LeakCanary -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
&l