如何用Android Studio查看build.gradle源码
上一篇博客里讲过 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源码的更多相关文章
- Android Studio 关联 JDK Java 源码
Android Studio 关联 Android 源码比较方便,一般下载后可自动关联,但是 Android Studio 默认使用的 JDK 是内嵌的,是不带源码的.所以在查看 JDK 源码时,看到 ...
- Android Studio 出现 Build gradle project info
导入Android Studio,一直停留在Build gradle project info.主要是因为google被墙,下载gradle很慢,有时候设置下载不成功. 参考链接 http://blo ...
- Android Studio 关于build.gradle配置问题
当导入一个Android Project时,会出现很多版本的问题,导入前先删除 .idea文件 .gradle文件 ,gradle文件(与.gradle区分,导入时Android Studio会提示重 ...
- 怎么将Android studio 的“ build:gradle改低一点”
参考来源:http://bbs.qcloud.com/thread-17193-1-1.html Error:Execution failed for task ':xxxx:compileDebug ...
- Android(java)学习笔记126:Android Studio中build.gradle简介
1.首先我们直接上代码介绍: // Top-level build file where you can add configuration options common to all sub-pro ...
- 对于在Android Studio 的 build.gradle 中的默认applicationId 要不要写呢?
起因 刚完成一个版本的开发.刚上Google play 就有用户反映无法更新应用.错误代码为:Can't install app "****" can' be installed. ...
- Android(java)学习笔记66:Android Studio中build.gradle简介
1.首先我们直接上代码介绍: // Top-level build file where you can add configuration options common to all sub-pro ...
- flutter_html 和 WebView 解析html 和 build.gradle源码
一.flutter_html 涉及的 api 接口: http://www.phonegap100.com/appapi.php?a=getPortalArticle&aid=20 二.Flu ...
- 图解Android Studio导入Eclipse项目源码
方法/步骤 打开Android Studio,在主页面中选择"File"->"New"->"Import project...&quo ...
随机推荐
- Frogs
Problem Description There are m stones lying on a circle, and n frogs are jumping over them.The ston ...
- C++ 头文件系列(sstream)
1. 简介 这个头文件主要定义了基于字符串类(string类)的流的4个模版: basic_stringbuf basic_istringstream basic_ostringstream basi ...
- NodeJs下的测试框架Mocha
介绍和代码下载 Mocha在2011年发布,是目前最为流行的javascript框架之一,在本文我们重点介绍它在NodeJs上的使用. 如果你需要下载实例代码,可以通过这个链接 gitClone 或者 ...
- 各种ORM框架对比(理论篇,欢迎来观摩)
各种ORM框架对比 目前框架有以下 PetaPoco Dapper.NET Massive Simple.Data Chain PetaPoco 轻量级,以前单文件,目前有维护形成项目级别,适合多个数 ...
- 实例了解js面向对象的封装和继承等特点
1.面向对象特点 相比之前按照过程式写法,面向对象有以下几个特点; 1.抽象:抓住核心问题,就是将很多个方法放在一个对象上.对象由属性和方法组成,属性就是我们定义的变量,它是静态的:方法就是行为操作, ...
- Mysql动态sql语句,用当前时间做表名
在mysql备份操作中, 我们可能要使用表名和当前时间来做为备份表的名称,但是MySQL在存储过程中不支持使用变量名来做表名或者列名. 例如:有一个表"user",我需要备份一份, ...
- 【openstack N版】——手把手教你制作生产环境镜像
一.CentOS7镜像制作 1.1创建CentOS7虚拟机 1.1.1创建虚拟磁盘 #注:尽量将虚拟机创建在控制节点,以便于将镜像上传至glance [root@linux-node1 ~]# qem ...
- PHP字符串三种定义方式
PHP的字符串有三种定义方式:单引号 .双引号 .定界符 1.单引号:指定一个简单字符串的最简单的方法是用单引号(字符 ')括起来. 在被单引号括起来的字符串中,要再表示一个单引号,需要用反斜线(\ ...
- The Art of Prolog:Advanced Programming Techniques【译文】
申明:此文为译文,仅供学习交流试用,请勿用作商业用途,造成一切后果本人概不负责,转载请说明.本人英语功力尚浅,翻译大多借助于翻译工具,如有失误,欢迎指正. 逻辑程序简介 逻辑程序是一组公理或规则,定义 ...
- I3D Next-Gen Game Development with Unity3D Vol I学习笔记(上)
这部教程主题是讲述如何在Unity中安放模型以及对场景进行优化(面对的是次世代平台).第二章看到一半,看不下,索性直接凭借Maya和Torque的经验自己操作. 看教程总结的原则如下(or tips) ...