您的位置:首页 > 移动开发 > Android开发

关于AndroidStudio引用外部库时的问题(gradle构建机理)

2015-07-17 15:12 423 查看
今天看到一个检测内存泄漏的工具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模式:





如有错误, 欢迎指正
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: