一、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

Android3_了解Gradle工具的更多相关文章

  1. 用IntelliJ IDEA创建Gradle项目简单入门

    Gradle和Maven一样,是Java用得最多的构建工具之一,在Maven之前,解决jar包引用的问题真是令人抓狂,有了Maven后日子就好过起来了,而现在又有了Gradle,Maven有的功能它都 ...

  2. Gradle 下载

    gradle各个版本的下载地址 :http://services.gradle.org/distributions 下载完后的gradle怎么使用呢? //下面是网上提供的方法,仅供学习参考 在 ht ...

  3. 深入理解gradle编译-Android基础篇

    深入理解gradle编译-Android基础篇 导读 Gradle基于Groovy的特定领域语言(DSL)编写的一种自动化建构工具,Groovy作为一种高级语言由Java代码实现,本文将对Gradle ...

  4. Android Studio And Gradle

    AS特色: 智能感知体验特好,堪比VS 布局预览,手写布局后预览页面即时显示,便于布局调整和优化 编辑速度飞快流畅,毫无eclipse的卡顿 布局或源码中有图标和颜色的预览,十分直观 调试时体验极佳 ...

  5. 为Android Studio 项目手动下载gradle

    在http://developer.android.com/samples/index.html上下载的例子,导入Android Studio的时候,第一件事就是下载项目对应版本的gradle.gra ...

  6. 在Eclipse IDE使用Gradle构建应用程序

    文 by / 林本托 Tips 做一个终身学习的人. 1. 下载和配置Gradle Gradle Inc.是Gradle框架开发的公司,为Eclipse IDE提供了Gradle工具的支持. 此工具可 ...

  7. Android Gradle使用总结

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/77678577 本文出自[赵彦军的博客] 其他 Groovy 使用完全解析 http ...

  8. gradle 编译kafka源码慢

    我前提已经在环境变量中将GRADLE_HOME设置到了gradle的目录(在E盘),并且在环境变量里设置了本地仓库GRADLE_USER_HOME. 编译kafka源码时候,很慢很慢.百度了一下,有说 ...

  9. 导入gradle项目

    1.1 代码下载 将代码下载到本机具体位置: 根据svn地址用外部svn工具导入项目到本地一个目录 比如 d:/a 1.2 导入工程 1.2.1 导入gradle工具 1.2.2 选择代码路径 1.2 ...

随机推荐

  1. 两张图说明http协议,tcp协议,ip协议,dns服务之间的关系和区别

    一.理解一个传输流再去扩展 用http举例来说,首先作为发送端的客户端在应用层(http协议)发出一个想看某个web页面的http请求. 接着,为了传输方便,在传输层(tcp协议)把从应用层处收到的数 ...

  2. iis7服务器隐藏index.php

    1.安装url重写模块 32位:http://download.microsoft.com/download/4/9/C/49CD28DB-4AA6-4A51-9437-AA001221F606/re ...

  3. jq 操作CSS

    方式有两种,一种是操作元素className间接控制样式,一种是设置css属性值直接控制样式. jQuery 属性操作方法.jQuery CSS 操作函数 1.addClass() $(selecto ...

  4. MaxCompute 图计算开发指南

    快速入门step by step MaxCompute Studio 创建完成 MaxCompute Java Module后,即可以开始开发Graph了. 代码示例 在examples目录下有gra ...

  5. 1月北上广P2P平台之最 平台数成交量现双降

    1月北上广P2P平台之最 平台数成交量现双降   今日(2月9日),网贷之家联合盈灿咨询发布了<北上广地区P2P网贷行业2017年1月月报>.月报数据显示,截至2017年1月底,北京.上海 ...

  6. 12-3 DOM操作

    一 DOM基础 1 DOM介绍 DOM:文档对象模型.DOM 为文档提供了结构化表示,并定义了如何通过脚本来访问文档结构.目的其实就是为了能让js操作html元素而制定的一个规范. DOM就是由节点组 ...

  7. Win10家庭版如何启用本地组策略

    组策略对于优化和维护Windows系统来说十分重要.众所周知,Windows 10家庭版中并不包含组策略,对于使用家庭版Windows的朋友来说,十分不方便.小编将以Windows10家庭版为例,带大 ...

  8. hdu 5793 A Boring Question(2016第六场多校)

    A Boring Question Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  9. 容器服务kubernetes federation v2实践五:多集群流量调度

    概述 在federation v2多集群环境中,通过前面几篇文章的介绍,我们可以很容易的进行服务多集群部署,考虑到业务部署和容灾需要,我们通常需要调整服务在各个集群的流量分布.本文下面简单介绍如何在阿 ...

  10. 基于thinkphp实现根据用户ip判断地理位置并提供对应天气信息的应用

    https://blog.csdn.net/MyCodeDream/article/details/46706469 我们都知道,在很多的网站都提供了给用户提供天气预报的功能,有时会发现,用户即使不输 ...