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

来源:互联网 发布:正版ug软件价格 编辑:程序博客网 时间:2024/06/05 21:07

今天看到一个检测内存泄漏的工具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模式: 






如有错误, 欢迎指正大笑






0 0