一、Gradle
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置
面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala,计划未来将支持更多的语言。
关于gradle的介绍暂时不展开,以后有时间继续补充。
=====================================================
二、什么是build.gradle?
Android模式下项目结构中可以看到有两个build.gradle;
一个是项目级别的,一个是模块级别的;

打开项目级别的build.gradle看一下,然后详细分析一下:

repositories这个闭包声明了jcenter()和google()。两个都是代码托管仓库。很多Android项目都会选择将代码托管到jcenter或google上。声明了这两行,我们就可以轻松地引用任何jcenter或google上的开源项目了。

dependencies闭包中使用classpath声明了一个插件。因为gradle项目不是专门为了android项目而开发的。java、c++很多项目都可以用gradle来构建。如果想要用它来构建Android项目,则需要声明如上所示名称的插件。最后面的数字是插件的版本号。

这个build.gradle文件通常情况下不需要修改,除非要添加一些全局的项目构建配置。

接下来是模块的build.gradle:

这个文件相对复杂些,开始逐行分析一下。

apply plugin: 'com.android.application'    //这行表示这个是程序应用模块,如果application改成library的话,就表示程序库模块。

接下来是一个叫做Android的闭包:

compileSdkVersion 29        //表示的是项目的编译SDK版本,这里是29。

buildToolsVersion "29.0.2"  //项目构建工具的版本

然后是一个叫做default config的闭包,可以对项目的更多细节进行构建:

  applicationId "com.example.helloworld"    //项目的包名
  minSdkVersion 15                                     //最低兼容的安卓系统版本为15
  targetSdkVersion 29                                 //系统会为你的应用程序在该目标版本上启动最新的功能和特性
  versionCode 1                                          //用于指定项目的版本号
  versionName "1.0"                                   //用于指定项目的版本名
  testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"  //大概是配置测试的模块,非必要

接下来看下buildTypes这个闭包:

buildTypes {
  release {                                //该闭包用于对正式版安装文件的配置
    minifyEnabled false        //是否对项目代码进行混淆,false表示不混淆
    proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'       //用于指定混淆时的规则文件,这里指定了两个文件,一个是proguard-android-optimize.txt表示对所有项目的通用混淆规则,另一个proguard-rules.pro表示在当前项目的根目录下,里面可以编写对当前项目特有的混淆规则。
  }
}

以上就是android闭包的大概解释,接下来分析一下dependencies闭包。

这个闭包非常强大,它可以指定当前项目所有的依赖关系。

通常Android Studio项目一共有3种依赖方式:本地依赖、库依赖、远程依赖

本地依赖可以对本地的Jar包或目录添加依赖关系,

库依赖可以对项目中的库模块添加依赖关系,

远程依赖则可以对jcenter库上的开源项目添加依赖关系。

dependencies {
  implementation fileTree(dir: 'libs', include: ['*.jar'])               //本地依赖声明,将libs目录下所有.jar后缀的文件都添加到项目的构建路径中
  implementation 'androidx.appcompat:appcompat:1.0.2'     //这是一个远程依赖格式,最新AndroidX的,详细了解末尾链接
  implementation 'androidx.constraintlayout:constraintlayout:1.1.3'  //这也是一个远程依赖格式,最新AndroidX的,详细了解末尾链接
  testImplementation 'junit:junit:4.12'                                                 //声明了一个测试用例库
  androidTestImplementation 'androidx.test:runner:1.1.1'                //声明了一个测试用例库
  androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'  //声明了一个测试用例库
}

====================================================

相关链接:

Gradle简易入门:https://blog.csdn.net/j3t9z7h/article/details/81976774

Gradle超详细解析:https://www.jianshu.com/p/822e44a5ea97

AndroidX 了解一下:https://blog.csdn.net/qq_17766199/article/details/81433706

AndroidX 它来了:https://blog.csdn.net/mhhyoucom/article/details/83061601

最新文章

  1. js小练习去掉指定的字符组成一句话输出
  2. Rxjava异常处理
  3. 使用T4模板生成代码的学习
  4. myslq 基本命令
  5. GNUPLOT画图工具
  6. ANTLR3完全参考指南读书笔记[08]
  7. 了解常见的 Azure 灾难
  8. css实现三角的一些方法
  9. WordPress Citizen Space插件跨站请求伪造漏洞
  10. (step5.1.2)hdu 2473(Junk-Mail Filter——并查集)
  11. UVA 10140 - Prime Distance(数论)
  12. NHibernate中使用memcache二级缓存
  13. 2.1 sikuli 中编程运行
  14. 常见ie css hack
  15. 2018-2019-2 20165237《网络攻防技术》Exp1 PC平台逆向破解
  16. ES6 Symbol数据类型和set-map 数据结构
  17. npm install、npm install --save与npm install --save-dev区别
  18. FoonSunCMS-Word图片上传功能-Xproer.WordPaster
  19. Codeforces Round #545 (Div. 1) 简要题解
  20. iOS开发消息推送原理

热门文章

  1. 在oracle中操作数据——使用特点的格式插入日期 sql函数的使用——日期函数
  2. Java练习 SDUT-4303_简单的复数运算(类和对象)
  3. 用GitHub Pages搭了个博客,欢迎来玩~
  4. poj 1845 【数论:逆元,二分(乘法),拓展欧几里得,费马小定理】
  5. c++第四次作业:继承
  6. ansible基础☞安装方法
  7. Jmeter非命令行执行脚本
  8. python 列表对象的增减
  9. java根据年月获取当前月的每一天日期
  10. 「POI2012」约会 Rendezvous