本篇文章已受权微信公众号 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 里看见过,是什么意思呢?不怕,我有绝招:
Android Studio大法---看源码,还有什么是不能经过看源码注释解决的么
是跳到源码了,但是为何没有方法的注释说明呢,这方法是什么鬼谁知道啊。再仔细看看 as 的提示,原来打开的是个 class 文件啊。
as 的提示那里应该会有个下载和选择源码位置的按钮的啊,搞不懂为何不出现。maven
另外,咱们知道,as 通常会默认先打开 xxx-sources.jar 也就是 xxx 的 java 文件源码,若是没有源码文件,才会打开 xxx.jar 的 class 代码。咱们看一下,打开的是什么文件。
没错,as 打开的是 gradle-2.3.0.jar,说明 as 没有找到 gradle-2.3.0-sources.jar 源码文件,咱们看一下究竟是不是这样
as 标题栏会显示你当前打开的文件的具体位置,好了,知道了 gradle-2.3.0.jar 在电脑里的位置了,咱们到那个目录下看看
只有一个 gradle-2.3.0.jar 文件和一个 pom 文件,正常的话应该还要有个 xxx-sources.jar 文件才对,就像下面这样
由于这里没有 gradle-2.3.0-sources.jar 文件,因此 as 没办法打开带有方法注释的源码文件了。既然知道问题,那么就好解决了,as 的提示条也没有下载的按钮,那咱们就本身去下载好了
打开 maven 网站,在这里能够下载 gradle 插件。在搜索框中输入 com.android.tools.build
,为何输入这个,你打开 project 下的 build.gradle 文件看看就知道了
这些就是 gradle 插件,咱们在根目录下的 build.gradle 配置的 gradle 版本其实就是来这里下载的,应该是吧。
下载后获得的就是这些文件了,接下去就是找到相应文件的位置,复制一份过去
打开相应的插件文件夹,选择相应的版本,最后将下载的 xxx-sources.jar 复制一份进去,最后的样子以下
好了,大功告成,咱们再打开 as,记得 ReBuild 一下,而后再试试查看 build.gradle 源码会是什么样子
翻译一下英文大概就是说, lintOptions.abortOnError = false 是设置即便 lint 检查时发现错误也不中止构建程序的运行。学习
这种方法比去官方的 api 文档里查阅方便多了吧。再来看看几个效果。
这里就能够看到源码里介绍 Plugin 的值都有哪些,分别对应哪一个类,该去哪一个类看它的做用是什么,干什么的。
借助 as,咱们甚至能够很容易的查到 android{...}
这个括号里能使用的方法都有哪些,若是要看各自的做用是干什么的,再继续点进去查看注释就好了。是否是发现,咱们在 build.gradle 里的 android{...}
使用过的标签名原来都在这里的啊。gradle
之后就算是再碰到大神的 build.gradle 文件里各类没看见过的标签名,不用再担忧看不懂了。不懂就看源码注释嘛,so easy!网站
固然,大神的 build.gradle 文件里仍是会出现一些 groovy 代码或者是 task 之类的,这些就不是 gradle 源码里可以查到的了,须要稍微了解一下 groovy 和 gradle 语言的基础,有兴趣的能够继续阅读下我写的这个系列里的相关博客,固然能力不够,若是你但愿更好的学习,网上资料也不少。ui
最近刚开通了公众号,想激励本身坚持写做下去,初期主要分享原创的Android或Android-Tv方面的小知识,感兴趣的能够点一波关注,谢谢支持~~