Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具,Android Studio IDE使用的构建项目工具就是Gradle
Gradle是比较先进的构建工具,允许通过插件自定义构建逻辑,使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。
通过Android Studio创建一个项目,默认会有两个build.gradle文件和一个settings.gradle,一个位于app目录下,两个位于项目的根目录下
位于项目的根目录下,它描述了这个项目的整体构建基础
位于app目录下,它描述这个app的构建基础,也可以是一个Module
最基本的Android项目中,它的settings.gradle内容如下:
include ‘:app’
该文件中就仅仅只包含了一句话,在你的项目中如果有多个 Model 存在的时候,就可以选择包含哪些进行编译。
build.gradle内容如下:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.5.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
repositories 配置的是依赖管理的服务器。默认是 jcenter()
dependencies 上面是指定依赖管理的服务器,这个就是具体依赖什么库。
app目录下的build.gradle内容如下:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.example.think.testapplication"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:design:23.2.1'
}
apply plugin: ‘com.android.application’
表示的是添加插件,默认为 com.android.application 程序,也就是应用程序
dependencies:
这个也就是所谓的依赖了,不光可以进行远程依赖,也可以本地依赖
compile fileTree(dir: ‘libs’, include: [‘*.jar’])
这句话也就是说编译时依赖 libs 文件夹下的所有 jar 文件。
compile ‘com.android.support:appcompat-v7:23.2.1’
依赖一个远程的库
compileSdkVersion 23
buildToolsVersion “23.0.3”
这两个指定的是编译SDK以及编辑工具版本
buildTypes
在这里进行配置的是你的编译配置,可以看见这里有一个 release ,当然也有 debug 部分,两个部分配置其实都是一样的。
在这里主要进行的配置是是否进行代码混淆,所以有一个代码混淆的开关,以及代码混淆的具体文件,文件有两种,哪一种都可以。
可以这里通过定义相关值来达到release 版本与debug 版本的差异性
defaultConfig {
applicationId "com.example.think.testapplication"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
applicationId 应用ID,库类型的 Module 无此配置项
minSdkVersion 定义的是应用的最小的SDK版本
targetSdkVersion 定义的是应用的目标SDK版本
versionCode 定义的是应用的版本号
versionName 定义的是应用的版本名称
这些定义项经过编译最后生成一个叫做BuildConfig的最终类,可以在java代码中直接调用,路径在app\build\generated\source\buildConfig\debug\com\example\think\testapplication下
/**
* Automatically generated file. DO NOT MODIFY
*/
package com.example.think.testapplication;
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "com.example.think.testapplication";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "1.0";
}