与Eclipse不同,Android Studio是采用Gradle来构建项目的。Gradle 是一个非常先进强大的项目构建工具,它使用了一种基于 Groovy 领域的特定语言(DSL)来声明项目设置,摒弃了基于 XML(如 Ant 和 Maven)的各种繁琐的配置,接下来我们一起探讨 Android Studio 中强大的项目构建工具 Gradle。
一、简介
Android studio新建的工程中一般包含两个build.gradle文件,一个在工程目录下,一个在app目录下,如下图所示。
二、文件格式详解
2.1 工程目录下的build.gradle文件
buildscript {
repositories {
//代码托管仓库,很多开源Android项目都将代码托管到jcenter()上,声明此配置后,即可引用
//jcenter()上的任何开源项目。同时也可以声明其他托管仓库。
jcenter()
//添加maven库地址
maven{
url "http://maven.xxx.com/xxx/xxx/xxx"
credentials {
username 'xxx'
password 'xxx'
}
}
}
dependencies {
//Gradle 插件及使用版本
classpath 'com.android.tools.build:gradle:2.3.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
//代码托管仓库
jcenter()
}
}
// 运行gradle clean时,执行此处定义的task。
// 该任务继承自Delete,删除根目录中的build目录。
// 相当于执行Delete.delete(rootProject.buildDir)
task clean(type: Delete) {
delete rootProject.buildDir
}
2.2 app目录下的build.gradle文件
//表明是应用程序的插件,若为库模块,则是'com.android.library'
apply plugin: 'com.android.application'
//Android 闭包
android {
//指定项目的编译版本
compileSdkVersion 25
//指定项目的构建工具版本
buildToolsVersion "25.0.3"
defaultConfig {
//指定项目的包名
applicationId "com.example.qiudengjiao.contentprovider"
//指定项目最低兼容的 Android 版本
minSdkVersion 15
//指定项目的最高兼容 Android 版本
targetSdkVersion 25
//指定项目的版本号
versionCode 1
//指定项目的版本名
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
//指定是否对项目的代码进行混淆(true:混淆 false:不混淆)
minifyEnabled false
//proguardFiles用于指定混淆时使用的规则文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
}
编译版本、最小版本、目标版本
compiledSdkVersion:编译SDK版本是将要编译APP的平台版本。默认情况下它应该设置为SDK中最新的Android可用版本。我们依然可以编译APP来支持更早的版本,但是设置它为最新版本让我们可以使用新功能并优化APP使其在最新版本上拥有更好的用户体验。
minSdkVersion:是新建工程的时候指定的”MinimumSDK version”。它表示APP可以支持的Android SDK的最早版本,意为小于该版本的Android系统上不保证APP正常运行。
targetSdkVersion:表示开发者已经测试过的最高的Android版本。当新版本的Android可用的时候,我们应该在新版本上测试自己的APP并更新这个值以匹配最新版本的API,从而使用新版本的功能。
平台版本号 | API 级别 | VERSION_CODE(代号) | 发布时间 |
Android 9.0 | 28 | Pie(馅饼 | 2018年08月 |
Android 8.1 | 27 | Oreo(奥利奥) | 2017年12月 |
Android 8.0 | 26 | Oreo(奥利奥) | 2017年08月 |
Android 7.1.1 | 25 | Nougat(牛轧糖) | 2016年10月 |
Android 7.0 | 24 | Nougat(牛轧糖) | 2016年08月 |
Android 6.0 | 23 | Marshmallow(棉花糖) | 2015年10月 |
Android 5.1 | 22 | Lollipop(棒棒糖) | 2015年03月 |
Android 5.0 | 21 | Lollipop(棒棒糖) | 2014年11月 |
Android 4.4W | 20 | KITKAT_WATCH | 2014年06月 |
Android 4.4 | 19 | KitKat(奇巧) | 2013年10月 |
Android 4.3 | 18 | Jelly Bean(果冻豆) | 2013年07月 |
Android 4.2、4.2.2 | 17 | Jelly Bean(果冻豆) | 2012年11月 |
Android 4.1、4.1.1 | 16 | Jelly Bean(果冻豆) | 2012年07月 |
Android 4.0.3、4.0.4 | 15 | Ice Cream Sandwich(冰激凌三明治) | 2011年12月 |
Android 4.0、4.0.1、4.0.2 | 14 | Ice Cream Sandwich(冰激凌三明治) | 2011年10月 |
Android 3.2 | 13 | Honeycomb(蜂巢) | 2011年07月 |
Android 3.1.x | 12 | Honeycomb(蜂巢) | 2011年05月 |
Android 3.0.x | 11 | Honeycomb(蜂巢) | 2011年02月 |
Android 2.3.4、2.3.3 | 10 | Gingerbread(姜饼) | 2011年02月 |
Android 2.3.2、2.3.1、2.3 | 9 | Gingerbread(姜饼) | 2010年12月 |
Android 2.2.x | 8 | Froyo(冻酸奶) | 2010年05月 |
Android 2.1.x | 7 | Eclair(泡芙) | 2010年01月 |
Android 2.0.1 | 6 | Eclair(泡芙) | 2009年12月 |
Android 2.0 | 5 | Eclair(泡芙) | 2009年10月 |
Android 1.6 | 4 | Donut(甜甜圈) | 2009年09月 |
Android 1.5 | 3 | Cupcake(纸杯蛋糕) | 2009年04月 |
Android 1.1 | 2 | BASE_1_1 | 2009年02月 |
Android 1.0 | 1 | BASE | 2008年09月 |