9. Gradle源代码编译以及源代码分析

简介:

一. Gradle简介

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。---来源于百度

对于自己而言,作为一个Android程序员,我自己使用就是用它来编译android程序,以前用ant,现在用gradle。

但是个人觉得在android studio gradle属性又多又乱,不知道总共有哪些属性;同时对于框架,自己也不喜欢黑盒使用它,总觉得心里没底,所以想把Gradle的源代码研究一遍。



二. Gradle和Groovy关系

Groovy是一种类似Java的编程语言,语法就像在Java里面糅合了很多脚本语言的特性,比如def定义变量

1
2
3
def val
val =  "abc"
val =  1


类似的写法,还有Gpath以及闭包等等,大家最好去下面的网站看看Groovy语法,然后对着敲敲。这对自己理解Gradle配置有一定的好处。


那Gradle就是利用Groovy和Java语言编写的一款自动化构建工具。


Groovy官方教程,语法教程


Groovy github源代码



三. Gradle源代码编译


  1. 下载Gradle源代码

Gradle源代码下载


下载的时候,选择src即可;本来自己下载了all,但是后面发现不对。编译的话需要下载src。

就像这样的:

1
2
3
4
5
6
  gradle-4.0-milestone-2-src.zip 17-May-2017 14:05 +0000 21.28M
  gradle-4.0-milestone-2-bin.zip 17-May-2017 14:05 +0000 64.28M
  gradle-4.0-milestone-2-all.zip 17-May-2017 14:05 +0000 85.43M
  gradle-4.0-milestone-1-src.zip 28-Apr-2017 07:04 +0000 20.70M
  gradle-4.0-milestone-1-bin.zip 28-Apr-2017 07:04 +0000 64.11M
  gradle-4.0-milestone-1-all.zip

2. 解压...


你会发现一个这样的目录结构:


wKioL1ke0f6BTtmNAAAUaPvvNM8605.png-wh_50


其中gradlew.bat是windows环境下Gradle源代码自身编译的脚本,gradlew应该是linux下面的,我没有去测试。


注意!这个不是gradle!! gradle.bat是Gradle去编译其他项目的脚本。


所以,我们最开始的时候,是没有Gradle环境的,需要编译编译一个Gradle环境出来,所以这里我们只有gradlew.bat


3. 编译

打开一个命令行,把gradle.bat拖进去,后面接着输入assemble

也就是:

e:\work_space\gradle-source-from-csdn\gradle-3.1>E:\work_space\gradle-source-fro

m-csdn\gradle-3.1\gradlew.bat assemble


按道理来说,直接双击运行gradlew.bat也是可以的,不过我是保险起见,按上面的方法(被问题搞怕了)。


4. 编译结果

编译的时候它会下载不少jar,需要一点时间。

编译完毕后在源代码目录下会有一个build目录,进去后有个distributions目录,再进去,里面有编译好的Gradle环境包 xxx-bin.zip,直接解压即可。如下:

wKiom1ke1D3yNFrCAAAhHHZhfsE278.png-wh_50


解压后,会有下面的目录:

wKiom1ke3GryWxYzAAA11moOaF4233.png-wh_50


bin目录下有gradle.bat,用来编译其他项目的脚本,所以可以把bin目录添加到环境变量里面,这样在任意命令行目录都可以执行gradle xxx


lib目录是编译出来的jar包,包含了很多module,后面如果我们修改了某个源代码文件,编译出jar包后,那就直接替换lib里面的jar,然后再去编译其他的项目,就可以验证我们的修改。


接下来会进行源代码流程分析。





     本文转自rongwei84n 51CTO博客,原文链接:http://blog.51cto.com/483181/1927673,如需转载请自行联系原作者

相关文章
|
9月前
|
搜索推荐 Java Linux
记一次编译Android源码
记一次编译Android源码
|
Java Android开发
编译安卓项目时报错
编译安卓项目时报错
325 0
编译安卓项目时报错
|
编解码 Ubuntu 固态存储
ijkplayer编译so库真没那么难(上)
公司现在的电台项目是我第二个接触音频播放项目,Android音视频 播放很多还是使用的MediaPlayer(大中厂除外),但是如果你用过 MediaPlayer的话,很多开发者都会吐槽有多坑,连谷歌官方都推荐 使用ExoPlayer...遇到过最坑的就是播放在线音视频的时候,网络不好 会一直加载,然后点多了还容易ANR...
400 0
|
Android开发 开发者
ijkplayer编译so库真没那么难(下)
公司现在的电台项目是我第二个接触音频播放项目,Android音视频 播放很多还是使用的MediaPlayer(大中厂除外),但是如果你用过 MediaPlayer的话,很多开发者都会吐槽有多坑,连谷歌官方都推荐 使用ExoPlayer...遇到过最坑的就是播放在线音视频的时候,网络不好 会一直加载,然后点多了还容易ANR...
333 0
|
Android开发 C++ Java
JNI学习笔记之AS+ndk+gradle自动编译出so并集成流程
上一篇的方法完全是我们手动编译并拷来拷去集成so库的,这样会很麻烦,但对初学者来说就应该这样一步一步前进,混合编程本来就是个很复杂的流程,我觉得这样把每个流程分开来学习是最好的。
1279 0
|
Java Android开发 C++
【CMake】CMake 引入 ( Android Studio 创建 Native C++ 工程 | C/C++ 源码编译过程 | Makefile 工具 | CMake 引入 )(一)
【CMake】CMake 引入 ( Android Studio 创建 Native C++ 工程 | C/C++ 源码编译过程 | Makefile 工具 | CMake 引入 )(一)
271 0
【CMake】CMake 引入 ( Android Studio 创建 Native C++ 工程 | C/C++ 源码编译过程 | Makefile 工具 | CMake 引入 )(一)
|
Java 编译器 Linux
【CMake】CMake 引入 ( Android Studio 创建 Native C++ 工程 | C/C++ 源码编译过程 | Makefile 工具 | CMake 引入 )(二)
【CMake】CMake 引入 ( Android Studio 创建 Native C++ 工程 | C/C++ 源码编译过程 | Makefile 工具 | CMake 引入 )(二)
270 0
【CMake】CMake 引入 ( Android Studio 创建 Native C++ 工程 | C/C++ 源码编译过程 | Makefile 工具 | CMake 引入 )(二)
|
IDE 开发工具
刚刚编译运行的项目,突然就不能用了。AndroidStudio最难用
刚刚编译运行的项目,突然就不能用了。AndroidStudio最难用
80 0
|
IDE Java 开发工具
NDK 编译的三种方式
通过 Android Studio 默认的方式 创建带有 native 方法的类,build 项目。
311 0
NDK 编译的三种方式

热门文章

最新文章