今天看到一个检测内存泄漏的工具LeakCanary(关于LeakCanary的用法有中文介绍), 于是想写个demo试试.
结果, 遇到了一个问题LeakCanary类找不到. 我下载了一个Demo, 我的配置文件和这个Demo一模一样!!
我无论我怎么同步build.gradle文件, 都没有效果.
我的module下的build.gradle配置文件的片段如下:
点击右上角的"Sync Now"之后, 发现"External Libraries"列表中有了两个与leakcanary相关的引用, 这两个引用分别是
leakcanary-analyzer-1.3.1 和 leakcanary-wacther-1.3.1
这两个外部library中都没有LeakCanary类, 于是在jcenter上找了一下.
发现上面两个是jar包, 有一leakcanary-android-1.3.1, 但是aar包.
我又点击了下载下来的demo中的LeakCanary类, 跳转到一样一个地方:
原来引用的外部aar包, 都会解压到<project-path>/build/intermediates/exploded-aar目录下面!!
我在网上下的demo为什么可以应用aar包里面的class, 我我自己创建的不可以呢??
我猜可能是aar包没有解压(aar包其实就是zip包)
经过一番摸索, module上右键->"Make Module 'Module-Name' ", 终于可以引用LeakCanary类了!!! (aar包已经解压到build下...)
有点啰嗦, 主要是备忘一下
总结一下这番折腾:
1. module下面的build.gradle中的 compile 'library', 可能引用的是jar包, 也可能引用的是aar包
2. 如果不能生成R文件(也经常遇到这个问题, 特别是冲其他项目中copy res目录是, R文件就不能生成)
或者 不能引用外部包中的类, 重新make你的module (在你的module上右键->Make Module 'Module-Name')
3. 查看外部库是否引用成功, 可以在两个地方看: "External Libraries" (引用成功后, jar和aar包都显示在这里面, 你引用的library所依赖的库也会在这里显示) 和
"<project_dir>/build/intermediates/exploded-aar" (针对aar包)
切到Project模式:
如有错误, 欢迎指正