Android3_了解Gradle工具

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

posted @ 2019-09-20 14:00  Grooovvve  阅读(221)  评论(0编辑  收藏  举报