Android开发项目中的build.gradle文件介绍
2017-10-12 本文已影响32人
琦琦出去玩了
Android开发项目中的build.gradle文件介绍
在开发android项目中,我们通常会遇到两个build.gradle文件。如下图所示:
DE125352-71D5-4425-A643-F6F0F19B676F.png
一个用于整个项目,一个用于app应用模块,对应于整个项目的内容很少,其内容如下:
B98C97F7-3362-4079-90B6-6A68EC8DA195.png下面是具体的解释:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
// Gradle中可以使用“//”或“/**/”来添加注释,与Java类似。
// 根目录下的build.gradle用于添加子工程或模块共用的配置项。
// "buildscript"的类型为script block,而且是最上层的script block,用于配置Gradle的Project实例。其API文档为https://docs.gradle.org/current/dsl/org.gradle.api.Project.html#org.gradle.api.Project:buildscript(groovy.lang.Closure)
// 其余的根script block有"allprojects", "dependencies", "configurations"等,更多的可见https://docs.gradle.org/current/dsl/的“Build script structure”一节。
// Script Block是一种method的调用,传入的参数为configuration closure。执行后会对Project的属性进行配置。
// 此处的"buildscript"用于配置Project的build script的classpath。
buildscript {
// 如果需要的话,从https://jcenter.bintray.com/下载code reposities。
repositories {
jcenter()
}
// 定义classpath,gradle会从“repositories”中下载对应版本的Gradle。如果使用gradle wrapper的话,感觉这个配置会被忽略。Wrapper会自己去下载所使用的gradle版本。
dependencies {
classpath 'com.android.tools.build:gradle:2.1.3'
// 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)。
// gradle使用groovy语言,调用method时可以不用加()。
task clean(type: Delete) {
delete rootProject.buildDir
}
其次,我们要了解和经常编辑的是app/build.gradle文件。其内容如下:
73F07CF6-5961-41F3-8D9F-3F0A66F1A645.png下面是具体的解释:
// 声明是Android程序,
//com.android.application 表示这是一个应用程序模块
//com.android.library 标识这是一个库模块
//而这区别:前者可以直接运行,后着是依附别的应用程序运行
apply plugin: 'com.android.application'
android {
compileSdkVersion 26 // 编译SDK的版本
buildToolsVersion "26.0.2" // 编译build tools的版本
defaultConfig { //默认配置
applicationId "com.example.zhangqi.myapplication" //应用的包名
minSdkVersion 15 //支持的最低版本
targetSdkVersion 26 //支持的目标版本
versionCode 1 //版本号
versionName "1.0" //版本名
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes { //build类型
release { //发布
minifyEnabled false //混淆开启
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //指定混淆规则文件
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])。 //编译lib目录下的.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:26.+'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.squareup.retrofit2:retrofit:2.1.0'//retrofit
compile 'com.google.code.gson:gson:2.6.2'//Gson 库
//下面两个是RxJava 和RxAndroid
compile 'io.reactivex:rxjava:1.1.0'
compile 'io.reactivex:rxandroid:1.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'//转换器,请求结果转换成Model
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'//配合Rxjava 使用
testCompile 'junit:junit:4.12'
}