Android Studio:Gradle简述

android studio 教程 | 2018-12-08 01:06

作者丨季舟1

Google 推荐使用的 Android studio 是采用 Gradle 来构建项目。Gradle 是一个非常先进的项目构建工具。

Gradle 是用了一种基于 Groovy 的领域特定语言(DSL,Demain Specific Language)来声明项目设置,摒弃了 XML(如 ANT 和 Maven)的各种繁琐配置。

项目中一般会出现1个settings.gradle和2个或者多个 build.gradle 文件,一个在根目录下,一个在 app 目录下。

如果切换到 Android 模式下则全部在 Gradle Scripts。

这个 setting 文件定义了哪些module 应该被加入到编译过程,对于单个module 的项目可以不用需要这个文件,但是对于 multimodule 的项目我们就需要这个文件,否则gradle 不知道要加载哪些项目。这个文件的代码在初始化阶段就会被执行。

include ':app'

1.repositories 闭包,声明了 jcenter() 的配置;

2.dependencies 闭包,声明了一个 Gradle 插件。

// Top-level build file where you can add configuration options common to all sub-projects/modules.// 顶级构建文件,为所有子项目/模块添加常见的配置选项buildscript {    //repositories闭包    repositories {        google()        //代码托管库:设置之后可以在项目中轻松引用jcenter上的开源项目        jcenter()    }    //dependencies闭包    dependencies {        /*        声明gradle插件,插件版本号为3.2.1        gradle是一个强大的项目构建工具,不仅可以构建Android,还可以构建java,C++等        此处引用android的插件        */        classpath 'com.android.tools.build:gradle:3.2.1'        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files        /*        注意:不要将您的应用程序依赖项放在这里;        模块的依赖在各模块自己的build.gradle文件中配置        */    }}allprojects {    repositories {        google()        jcenter()    }}task clean(type: Delete) {    delete rootProject.buildDir}

1.apply plugin,声明是 Android 应用程序还是库模块;

2.android 闭包,配置项目构建的各种属性,compileSDKVersion 用于指定项目的编译 SDK  版本, buildToolsVersion 用户指定项目构建工具的版本。

defaultConfig 闭包:默认配置、应用程序包名、最小sdk版本、目标sdk版本、版本号、版本名称;

buildTypes 闭包:指定生成安装文件的配置,是否对代码进行混淆;

signingConfigs 闭包:签名信息配置;

sourceSets  闭包:源文件路径配置;

lintOptions 闭包:lint 配置;

3.dependencies 闭包,指定当前项目的所有以来关系,本地以来,库依赖以及远程依赖;

4.repositories 闭包,仓库配置。

// 是否对代码进行混淆,true表示混淆            minifyEnabled false            /*            指定混淆时使用的规则文件             proguard-android.txt指所有项目通用的混淆规则,proguard-rules.pro当前项目特有的混淆规则             release的Proguard默认为Module下的proguard-rules.pro文件             */            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'            signingConfig signingConfigs.release        }        // debug版本的配置        debug {            signingConfig signingConfigs.release        }    }}/* 指定当前项目的所有依赖关系:本地依赖、库依赖、远程依赖 本地依赖:可以对本地 Jar 包或目录添加依赖关系 库依赖:可以对项目中的库模块添加依赖关系 远程依赖:可以对 jcenter 库上的开源项目添加依赖 标准的远程依赖格式是 域名:组织名:版本号 */dependencies {    // 本地依赖    implementation fileTree(include: ['*.jar'], dir: 'libs')    // 远程依赖,com.android.support是域名部分,appcompat-v7是组名称,27.1.1是版本号    implementation 'com.android.support:appcompat-v7:27.1.1'    implementation 'com.android.support.constraint:constraint-layout:1.1.3'    // 声明测试用列库    testImplementation 'junit:junit:4.12'    androidTestImplementation 'com.android.support.test:runner:1.0.2'    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'}

Gradle Wrapper目录结构

Gradle 会根据build 文件的配置生成不同的task,我们可以直接单独执行每一个task。通过./gradlew tasks列出所有task。如果通过同时还想列出每个task 对应依赖的其他task,可以使用./gradlew tasks -all。其实每当我们在Android Studio点击 build,rebuild,clean菜单的时候,执行的就是一些gradle task.

Android tasks

有四个基本的 task, Android 继承他们分别进行了自己的实现:

1.assemble:对所有的 buildType 生成 apk 包。

2.clean:移除所有的编译输出文件,比如apk

3.check:执行lint检测编译。

4.build:同时执行assemble和check命令

这些都是基本的命令,在实际项目中会根据不同的配置,会对这些task 设置不同的依赖。比如 默认的 assmeble 会依赖 assembleDebug 和assembleRelease,如果直接执行assmeble,最后会编译debug,和release 的所有版本出来。如果我们只需要编译debug 版本,我们可以运行assembleDebug。

除此之外还有一些常用的新增的其他命令,比如 install命令,会将编译后的apk 安装到连接的设备。

5.install:将编译后的apk 安装到连接的设备

6.uninstall:卸载apk

推荐↓↓↓