上一篇博客里讲过 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. Hbase数据库安装

    一.环境准备 1.Ubuntu14.04-server 2.ssh 3.jdk1.6 4.hbase-0.98.19-hadoop2-bin.tar.gz(下载地址http://www.apache. ...

  2. AngularJS自定义指令之可选参数replace

    replace是一个可选参数,如果设置了这个参数,值必须为true,因为默认值为false.默认值意味着模板会被当作子元素插入到调用此指令的元素内部: 如: <my-directive>& ...

  3. vim高亮设置

    vim高亮设置 前提: 查看vim是否完整安装 rpm -qa | grep vim 若完整安装,则会出现如下相关信息 vim-filesystem-7.4.629-5.el6.x86_64 vim- ...

  4. DevExpress 控件使用之GridControl基本属性设置

    DEV控件:gridControl常用属性设置     1.隐藏最上面的GroupPanel(实现方法两种)     ①代码实现:gridView1.OptionsView.ShowGroupPane ...

  5. 3553: [Shoi2014]三叉神经树(树链剖分)

    这道题特别恶心,首先我们可以发现更改的就是出现连续的一或二,那么就用线段树+树链剖分找到这个范围 想到是不难想,就是打起来恶心罢了= = CODE: #include<cstdio> #i ...

  6. Spring Mvc + Easyui中根据查询结果导出文件

    项目是典型的SpringMvc + Easyui,需求是前台页面根据查询条件导出生成CSV文件. 基本流程是:前台页面通过表单提交的方式,请求后台,后台接受到查询参数,根据查询参数查询到数据集合,最后 ...

  7. 从源码解析LinkedList集合

         上篇文章我们介绍了ArrayList类的基本的使用及其内部的一些方法的实现原理,但是这种集合类型虽然可以随机访问数据,但是如果需要删除中间的元素就需要移动一半的元素的位置,效率低下.并且它内 ...

  8. YoMail 邮箱客户端的社会化之路,起于邮箱,不止于邮件

    你还记不记得上一次用邮箱处理私人事务是什么时候?从什么时候开始邮箱于你而言,唯一功能沦为了收取各种网站的验证信息? 电子邮件实际上非常适合于工作上使用,比起其他通信工具,或者社会化媒体,电子邮件在工作 ...

  9. linux下zookeeper 配置参数

    -----------zookeeper 配置文件 clientPort ---服务的监听端口dataDir ---用于存放内存数据库快照的文件夹,同时用于集群的myid文件也存在这个文件夹里 (注意 ...

  10. 过程 : 系统语言和jobPost 语言版本

    在前台,用户选择语言会是checkbox list,可以选择多个.如果英文是主要语言,那么 ·选择英文而已,jobPosts 只显示英文版本 ·如果jobPost有英文和中文,只显示英文 ·如果job ...