如何用Android Studio查看build.gradle源码

本篇文章已受权微信公众号 dasu_Android(大苏)独家发布html

上一篇博客里讲过 build.gradle 里的每一行代码基本都是在调用一个方法,既然是这样,咱们就能够用 android studio(下面简称as) 去查看它源码的方法注释说明,这样就能够理解每一个方法是作什么的了,就算是在大神的 build.gradle 碰见一些没看懂的代码,也能够点进去看方法介绍来理解。就像咱们在查看 SDK 里的各类方法同样。java

可是有个问题,应该也有小伙伴跟我同样吧,每次在大神的 build.gradle 看到一堆不懂的代码时,按住 Ctrl 键后,鼠标移到代码上时有个跳转的手势时老是很开心,老是心想原来能够看源码啊,那就点进去看看介绍,看这个是干吗的吧。但是每次一点进去,打开的倒是 class 代码文件,顶多就只有方法名,一点注释都没有,并且方法参数命名还混淆过,也猜不出来是干吗的。又不懂怎么去官方文档里查找,只能去网上用关键字查找,找出来的又跟本身碰到的问题不同,越找越气干脆不找了,放一边去,之后再说。android

是吧,若是能够直接经过 as 看源码的注释该多好。好了,废话到这,下面开始正文。api


系列索引

build.gradle系列一:看不懂的build.gradle代码
build.gradle系列二:学点Groovy来理解build.gradle代码
build.gradle系列三:如何用Adnroid Studio查看build.gradle源码
...微信


正文

咱们来举个例子,就像系列一的博客里介绍的 build.gradle 里有这样一段代码:
build.gradle
咦!这代码是第一次在 build.gradle 里看见过,是什么意思呢?不怕,我有绝招:
Ctrl + 左键
Android Studio大法---看源码,还有什么是不能经过看源码注释解决的么
BaseExtension.class
是跳到源码了,但是为何没有方法的注释说明呢,这方法是什么鬼谁知道啊。再仔细看看 as 的提示,原来打开的是个 class 文件啊。
as提示
as 的提示那里应该会有个下载和选择源码位置的按钮的啊,搞不懂为何不出现。maven

另外,咱们知道,as 通常会默认先打开 xxx-sources.jar 也就是 xxx 的 java 文件源码,若是没有源码文件,才会打开 xxx.jar 的 class 代码。咱们看一下,打开的是什么文件。
gradle-2.3.0.jar
没错,as 打开的是 gradle-2.3.0.jar,说明 as 没有找到 gradle-2.3.0-sources.jar 源码文件,咱们看一下究竟是不是这样
as标题栏
as 标题栏会显示你当前打开的文件的具体位置,好了,知道了 gradle-2.3.0.jar 在电脑里的位置了,咱们到那个目录下看看
gradle-2.3.0.jar本地路径
只有一个 gradle-2.3.0.jar 文件和一个 pom 文件,正常的话应该还要有个 xxx-sources.jar 文件才对,就像下面这样
三个文件
由于这里没有 gradle-2.3.0-sources.jar 文件,因此 as 没办法打开带有方法注释的源码文件了。既然知道问题,那么就好解决了,as 的提示条也没有下载的按钮,那咱们就本身去下载好了
seach.maven.org
打开 maven 网站,在这里能够下载 gradle 插件。在搜索框中输入 com.android.tools.build,为何输入这个,你打开 project 下的 build.gradle 文件看看就知道了
com.android.tools.build
search result
这些就是 gradle 插件,咱们在根目录下的 build.gradle 配置的 gradle 版本其实就是来这里下载的,应该是吧。
下载的文件
下载后获得的就是这些文件了,接下去就是找到相应文件的位置,复制一份过去
gradle的本地路径
打开相应的插件文件夹,选择相应的版本,最后将下载的 xxx-sources.jar 复制一份进去,最后的样子以下
三个文件
好了,大功告成,咱们再打开 as,记得 ReBuild 一下,而后再试试查看 build.gradle 源码会是什么样子
BaseExtension.java
LintOptions.java
翻译一下英文大概就是说, lintOptions.abortOnError = false 是设置即便 lint 检查时发现错误也不中止构建程序的运行。学习

这种方法比去官方的 api 文档里查阅方便多了吧。再来看看几个效果。
BaseExtension.java
这里就能够看到源码里介绍 Plugin 的值都有哪些,分别对应哪一个类,该去哪一个类看它的做用是什么,干什么的。
AndroidConfig.java
借助 as,咱们甚至能够很容易的查到 android{...} 这个括号里能使用的方法都有哪些,若是要看各自的做用是干什么的,再继续点进去查看注释就好了。是否是发现,咱们在 build.gradle 里的 android{...} 使用过的标签名原来都在这里的啊。gradle

之后就算是再碰到大神的 build.gradle 文件里各类没看见过的标签名,不用再担忧看不懂了。不懂就看源码注释嘛,so easy!网站

固然,大神的 build.gradle 文件里仍是会出现一些 groovy 代码或者是 task 之类的,这些就不是 gradle 源码里可以查到的了,须要稍微了解一下 groovy 和 gradle 语言的基础,有兴趣的能够继续阅读下我写的这个系列里的相关博客,固然能力不够,若是你但愿更好的学习,网上资料也不少。ui


QQ图片20180316094923.jpg 最近刚开通了公众号,想激励本身坚持写做下去,初期主要分享原创的Android或Android-Tv方面的小知识,感兴趣的能够点一波关注,谢谢支持~~

相关文章
相关标签/搜索