概述
Android Studio是采用gradle来构建项目的,gradle是基于groovy语言的,如果只是用它构建普通Android项目的话,是可以不去学groovy的。当我们创建一个Android项目时会包含两个Android build.gradle配置详解文件,如下图:
Project的build.gradle文件
### 代码
对应的build.gradle代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {//这里是gradle脚本执行所需依赖,分别是对应的maven库和插件
repositories {
google()//从Android Studio3.0后新增了google()配置,可以引用google上的开源项目
jcenter()//是一个类似于github的代码托管仓库,声明了jcenter()配置,可以轻松引用 jcenter上的开源项目
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'////此处是android的插件gradle,gradle是一个强大的项目构建工具
}
}
allprojects {//这里是项目本身需要的依赖,比如项目所需的maven库
repositories {
google()
jcenter()
}
}
// 运行gradle clean时,执行此处定义的task任务。
// 该任务继承自Delete,删除根目录中的build目录。
// 相当于执行Delete.delete(rootProject.buildDir)。
// gradle使用groovy语言,调用method时可以不用加()。
task clean(type: Delete) {
delete rootProject.buildDir
}
- buildscript{}闭包里是gradle脚本执行所需依赖,分别是对应的maven库和插件。
- allprojects{}闭包里是项目本身需要的依赖,比如项目所需的maven库。
- task clean(type: Delete){}是运行gradle clean时,执行此处定义的task任务,该任务继承自Delete,删除根目录中的build目录。其中buildscript包含repositories闭包和dependencies闭包。
### repositories{}闭包:配置远程仓库
该闭包中声明了jcenter()和google()的配置,其中jcenter是一个代码托管仓库,上面托管了很多Android开源项目,在这里配置了jcenter后我们可以在项目中方便引用jcenter上的开源项目,从Android Studio3.0后新增了google()配置,可以引用google上的开源项目。
### dependencies{}闭包:配置构建工具
该闭包使用classpath声明了一个Gradle插件,由于Gradle并不只是用来构建Android项目,因此此处引入相关插件来构建Android项目,其中'3.0.0'为该插件的版本号,可以根据最新的版本号来调整。
Module的build.gradle文件
从文件内容可以看出,主要分为三大部分,如下图所示:
apply plugin:
1 | // 声明是Android程序, |
文件中第一行使用apply plugin表示应用了一个插件,该插件一般有两种值可选:
- ‘com.android.application’,表示该模块为应用程序模块,可以直接运行,打包得到的是.apk文件
- ‘com.android.library’,表示该模块为库模块,只能作为代码库依附于别的应用程序模块来运行,打包得到的是.aar文件
android{}闭包:
这个闭包主要为了配置项目构建的各种属性:
添加signingConfigs{}闭包:
1 | signingConfigs {// 自动化打包配置 |
可以手动添加签名配置,也可以通过Project Structure 选中app,点击Singing添加,具体步骤如下图所示:
签名配置完成后可以方便带签名打包,在module的Build Variants中有两个Type,分别是debug和release,可以选择任意一个类型进行打包,并且他们会利用各自配置的Key进行打包,执行 Run app或者Build->Build apk就会自动在module name/app/build/outputs/apk路径下生成Apk文件。另一种打包方式是Build->Generate Signed APK填写签名信息生成Apk。
compileSdkVersion:设置编译时用的Android版本
buildToolsVersion:设置编译时使用的构建工具的版本,Android Studio3.0后去除此项配置
defaultConfig{}闭包:
1 | compileSdkVersion 27//设置编译时用的Android版本 |
- applicationId:指定了项目的包名。
- minSdkVersion:指定项目最低兼容的版本,如果设备小于这个版本或者大于maxSdkVersion(一般不用)将无法安装这个应用,这里指定为16,表示最低兼容到Android 4.1系统。
- targetSdkVersion:指定项目的目标版本,表示在该目标版本上已经做过充分测试,系统会为该应用启动一些对应该目标系统的最新功能特性,Android系统平台的行为变更,只有targetSdkVersion的属性值被设置为大于或等于该系统平台的API版本时,才会生效。例如,若指定targetSdkVersion值为22,则表示该程序最高只在Android5.1版本上做过充分测试,在Android6.0系统上(对应targetSdkVersion为23)拥有的新特性如系统运行时权限等功能就不会被启用。
- versionCode:表示版本号,一般每次打包上线时该值只能增加,打包后看不见。
- versionName:表示版本名称,展示在应用市场上。
- testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner”表明要使用AndroidJUnitRunner进行单元测试。
1 | ``` |