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

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

是吧,如果可以直接通过 as 看源码的注释该多好。好了,废话到这,下面开始正文。


系列索引

build.gradle系列一:看不懂的build.gradle代码

build.gradle系列二:学点Groovy来理解build.gradle代码

build.gradle系列三:如何用Adnroid Studio查看build.gradle源码

...


正文

我们来举个例子,就像系列一的博客里介绍的 build.gradle 里有这样一段代码:



咦!这代码是第一次在 build.gradle 里看见过,是什么意思呢?不怕,我有绝招:



Android Studio大法---看源码,还有什么是不能通过看源码注释解决的么



是跳到源码了,可是为什么没有方法的注释说明呢,这方法是什么鬼谁知道啊。再仔细看看 as 的提示,原来打开的是个 class 文件啊。



as 的提示那里应该会有个下载和选择源码位置的按钮的啊,搞不懂为什么不出现。

另外,我们知道,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{...} 使用过的标签名原来都在这里的啊。

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

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

如何用Android Studio查看build.gradle源码的更多相关文章

  1. Android Studio 关联 JDK Java 源码

    Android Studio 关联 Android 源码比较方便,一般下载后可自动关联,但是 Android Studio 默认使用的 JDK 是内嵌的,是不带源码的.所以在查看 JDK 源码时,看到 ...

  2. Android Studio 出现 Build gradle project info

    导入Android Studio,一直停留在Build gradle project info.主要是因为google被墙,下载gradle很慢,有时候设置下载不成功. 参考链接 http://blo ...

  3. Android Studio 关于build.gradle配置问题

    当导入一个Android Project时,会出现很多版本的问题,导入前先删除 .idea文件 .gradle文件 ,gradle文件(与.gradle区分,导入时Android Studio会提示重 ...

  4. 怎么将Android studio 的“ build:gradle改低一点”

    参考来源:http://bbs.qcloud.com/thread-17193-1-1.html Error:Execution failed for task ':xxxx:compileDebug ...

  5. Android(java)学习笔记126:Android Studio中build.gradle简介

    1.首先我们直接上代码介绍: // Top-level build file where you can add configuration options common to all sub-pro ...

  6. 对于在Android Studio 的 build.gradle 中的默认applicationId 要不要写呢?

    起因 刚完成一个版本的开发.刚上Google play 就有用户反映无法更新应用.错误代码为:Can't install app "****" can' be installed. ...

  7. Android(java)学习笔记66:Android Studio中build.gradle简介

    1.首先我们直接上代码介绍: // Top-level build file where you can add configuration options common to all sub-pro ...

  8. flutter_html 和 WebView 解析html 和 build.gradle源码

    一.flutter_html 涉及的 api 接口: http://www.phonegap100.com/appapi.php?a=getPortalArticle&aid=20 二.Flu ...

  9. 图解Android Studio导入Eclipse项目源码

    方法/步骤   打开Android Studio,在主页面中选择"File"->"New"->"Import project...&quo ...

随机推荐

  1. 64位win2003 IIS6运行32位的.NET程序

    做web服务迁移,从32位win2003迁移到64位win2003,数据库是32位Oracle在另外一台服务器上. 迁移之后数据库各种连不上,oracle的客户端32位的装完装64位的,odp.net ...

  2. getchar()不停止原因

    应该是你的输入流中还有残留的字符,getchar()()会接受那个字符.你可以在调用getchar()()之前用fflush(stdin)刷新一下输入缓冲区. 上面一段里面,应该有读入语句吧,没读干净 ...

  3. WP8.1开发中关于如何显示.gif格式动态格式图片方法

    这几天又遇到个问题,就是如何显示动态图片,本来以为和显示静态图片一样,谁知不行,在网上一查才知道WP8.1不支持.gif格式动态图片的显示: 后来又在MSDN论坛上查找,也有人问类似的问题,后来就大概 ...

  4. 关于C语言中变量类型转换

    今天在工作中遇到一个问题,而在解决问题的过程中,发现一段关于int 型变量(a)和char型(b)变量间类型转换的代码存在问题:一个值为255的int型变量a,强制类型转换并赋值给char型变量b后, ...

  5. NoSql研究报告

    NoSql研究报告 1.概述 随着互联网的不断发展,信息系统的数据变得越来越多,关系型数据库逐渐面临着难以克服的障碍,主要体现在: 对数据库的高并发读写需求 对海量数据的高效率存储和访问需求 对数据库 ...

  6. 连连看的原生JS实现

    那天闲来无事,便想找个小游戏来打发时间,后来便找到了连连看, 玩了一会儿感觉无聊,想到各位高手用JS做的各种小游戏,便想自己也来做一个,于是便有了这几天的成果. 代码是用 原生JS 实现的,只是用来学 ...

  7. Dijkstra算法——单源最短路径问题

    学习一个点到其余各个顶点的最短路径--单源最短路径 Dijkstra算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向 ...

  8. Android网络编程要学的东西与Http协议学习

    本节引言: 本节开始我们来学习Android网络编程相关的一些东西:Android端网络编程是要干嘛?http协议的学习,使用自带扣脚Json解析类解析Json,XML解析常用的几种方式,HttpUr ...

  9. Bug记载1之webpack本地安装

    当我安装前端打包工具webpack时,cmd命令出现了这么一句关键性的提示: npm ERR ! Refusing to install package as a dendency of itself ...

  10. Struts2学习笔记②

    之前在跟着老师们做项目的时候经常会烦恼Struts.xml怎么配置,老师也没讲太清楚,都是说很简单,但是不懂的人就是太难了!哈哈,万事还是要靠自己的! struts.xml今天又看了几个小时的书,也跟 ...