Android Studio之Gradle的介绍与配置

一、Gradle背景

不同于Eclipse,Android Studio是采用Gradle来构建项目的。Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。


Gradle特性:

    • 是一个构建工具
    • 以Groovy语言为基础的
    • 主要面向的是Java语言

打开Android Studio内置的终端Terminal,在输入如下命令查看gradle版本:

gradlew -v

如果是第一次运行这个命令,系统会帮我们下载gradle到本地,下载到的路径是:


输入上述命令后,查看到gradle的版本2.14.1,如下图所示:



二、Gradle基础配置

使用过Android Studio应该都知道,新建一个工程后,默认会生成两个build.gradle文件,一个位于项目根目录下,一个位于app目录下,还有一个也唯一项目根目录下setting.gradle。下面依次说明这几个文件。

1.setting.gradle

这个文件是全局的项目配置文件,里面主要声明一些需要加入gradle的module,例如:

include ':library', ':app'

2.project/build.gradle

这个文件是整个项目的gradle基础配置文件,一般用来存储构建脚本的版本来源及工程的仓库来源,如下:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2'
    }
}
allprojects {
    repositories {
        jcenter()
    }
}

首先,两处repositories的闭包中都声明了jcenter()这行配置,jcenter其实是个代码托管仓库,很多Android开源项目都会将代码托管到jcenter上,声明了这行配置后,我们就可以在项目中轻松引用任何jcenter上的开源项目了。

接下来,dependencies闭包中使用classpath声明了一个Gradle插件。为什么要声明这个插件呢?因为Gradle并不是专门为构建Android项目而开发的,Java、C++等很多项目都可以使用Gradle来构建,因此如果我们想要使用它来构建Android项目,则需要声明com.android.tools.build:gradle:xxx这个插件。

3.app/build.gradle

该文件面向的是对应的module,一般需要指定module的类型,Android相关信息以及依赖库,如下:

//module类型,常用的如:'com.android.application'、'com.android.library'、'java'、'maven'等。
apply plugin: 'com.android.application'

//Android常用配置
android {
    //编译版本
    compileSdkVersion 22
    //构建工具版本
    buildToolsVersion "22.0.1"
    //默认配置
    defaultConfig {
        //应用包名
        applicationId 'com.xyy.example'
        //最小版本
        minSdkVersion 15
        //目标版本
        targetSdkVersion 22
        //应用版本号
        versionCode 1
        //应用版本名称
        versionName "1.0"
        
    }
    //指定编译版本
    compileOptions{
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
    //lint检查配置,默认关闭
    lintOptions {
        abortOnError false
    }
    //渠道指定
    productFlavors {

    }
    //签名配置
    signingConfigs {
        //debug版本
        debug {
            storeFile file('×.keystore')
            storePassword ×××
            keyAlias ××××
            keyPassword ×××
        }
        //release版本
        release {
            //签名文件目录指定,相对于该module
            storeFile file('×.keystore')
            storePassword ×××
            keyAlias ××××
            keyPassword ×××    
        }
    }
    //构建类型配置
    buildTypes {
        debug {
            buildConfigField("boolean", "LOG_DEBUG", "true")
            versionNameSuffix "debug"
            minifyEnabled false
            zipAlignEnabled false
            shrinkResources false
            signingConfig signingConfigs.debug
        }
        release {
            //添加buildConfig配置字段,可以设置日志打印开关字段,方便发布时自动关闭打印日志
            buildConfigField("boolean", "LOG_DEBUG", "false")
            //在生成的release版本APK后缀中添加"release"字段
            versionNameSuffix "release"
            //是否混淆(特别注意:如果混淆文件未配置使用false)
            minifyEnabled false
            //是否支持Zip Align
            zipAlignEnabled true
            //是否清理无用资源
            shrinkResources true
            //混淆文件指定
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //签名指定
            signingConfig signingConfigs.release
        }
    }
    
}

//依赖配置
dependencies {
    //本地依赖文件树
    compile fileTree(dir: 'libs', include: ['*.jar'])
    //远程依赖
    compile '...'
    //本地依赖文件
    compile files('...')
    //本地依赖工程
    compile project('...')
}

接下来逐行分析:

1、apply plugin:指明模块的类型,常用的如:com.android.application(表示这是一个应用程序模块,可以直接运行)和com.android.library(表示这是一个库模块,作为代码库依附于别的应用程序模块来运行)。

2、android闭包:在这个闭包中可以配置项目构建的各种属性。compileSdkVersion用于指定项目的编译版本,这里指定成25表示使用Android7.1系统的SDK编译。buildToolsVersion用于指定项目构建工具的版本。

3、defaultConfig闭包:defaultConfig闭包中可以对项目的更多细节进行配置。其中applicationId用于指定项目的包名,minSdkVersion用于指定项目最低兼容的Android系统版本,这里指定成18表明最低兼容到Android4.3系统。targetSdkVersion指定的值表示你在该目标版本上已经做了充分的测试,系统将会为你的应用程序启用一些最新的功能和特性。比如说Android6.0系统中引用了运行时权限这个功能,如果你将targetSdkVersion指定成23或者更高,那种系统就会为你的程序启动运行时权限功能,而如果你将targetSdkVersion 指定成22,那么说明你的程序最高只在Android5.1系统上做过充分的测试,Android6.0系统中引入的新功能自如就不会启用。versionCode用于指定项目的版本号,versionName用于指定项目的版本名。

4、buildTypes闭包:buildTypes闭包中用于指定生成安装文件的相关配置,通常会有两个子闭包,一个是debug(可以忽略不写),一个是release。debug闭包用于生成测试版安装文件的配置,release闭包用于生成正式版安装文件的配置。下面来,看看release闭包中的具体内容,minifyEnabled用于指定是否对项目的代码进行混淆,proguardFiles用于指定混淆时使用的规则文件,这里指定了两个文件,第一个proguard-android.txt是Android SDK目录下的,里面是所有项目通用的混淆规则,第二个proguard-rules.pro是当前项目的根目录下的,里面可以编写当前项目特有的混淆规则。

5、lintOptions闭包:该闭包用于lint检查的配置。

6、productFlavors闭包:该闭包用于渠道指定。
7、signingConfigs闭包:该闭包用于签名配置,一般有两个子闭包,一个debug,一个release。
8、dependencies闭包:这个闭包功能非常强大,它可以指定当前项目的所有依赖关系。通常有三种依赖方式:本地依赖、库依赖、远程依赖。本地依赖可以对本地的jar包添加依赖关系,库依赖可以对项目中的库模块添加依赖关系,远程依赖则可以对jcenter库上的开源项目添加依赖关系。
compile fileTree(dir: 'libs', include: ['*.jar']):表示将libs目录下所有.jar后缀的文件都添加到项目的构建路径中。

compile [group]:[name]:[version]:就是一个标准的远程依赖库格式,例如compile "com.android.support:appcompat-v7:24.2.1",其中 com.android.support是域名部分,用于和其他公司的库作区分,appcompat-v7是组名称,用于和同一公司中不同的库做区分;24.2.1就是版本号了,用于和同一个库不同的版本做区分。

compile project(':库模块名字'):是库依赖声明的基本格式,例如有一个库模块的名字叫library,那么添加这个库的依赖关系只需要加入compile project(':library')

compile files('libs/xxx.jar'):是对本地文件夹下的jar包进行依赖。

三、Gradle常用命令

  • gradlew -v 版本号
  • gradlew build 检查依赖并编译打包
  • gradlew assembleDebug 编译并打Debug包
  • gradlew assembleRelease 编译并打Release的包
  • gradlew installRelease Release模式打包并安装
  • gradlew uninstallRelease 卸载Release模式包









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值