Android開發(fā)項(xiàng)目中的build.gradle文件介紹
在開發(fā)android項(xiàng)目中,我們通常會(huì)遇到兩個(gè)build.gradle文件。如下圖所示:

DE125352-71D5-4425-A643-F6F0F19B676F.png
一個(gè)用于整個(gè)項(xiàng)目,一個(gè)用于app應(yīng)用模塊,對應(yīng)于整個(gè)項(xiàng)目的內(nèi)容很少,其內(nèi)容如下:

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用于添加子工程或模塊共用的配置項(xiàng)。
// "buildscript"的類型為script block,而且是最上層的script block,用于配置Gradle的Project實(shí)例。其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”一節(jié)。
// Script Block是一種method的調(diào)用,傳入的參數(shù)為configuration closure。執(zhí)行后會(huì)對Project的屬性進(jìn)行配置。
// 此處的"buildscript"用于配置Project的build script的classpath。
buildscript {
// 如果需要的話,從https://jcenter.bintray.com/下載code reposities。
repositories {
jcenter()
}
// 定義classpath,gradle會(huì)從“repositories”中下載對應(yīng)版本的Gradle。如果使用gradle wrapper的話,感覺這個(gè)配置會(huì)被忽略。Wrapper會(huì)自己去下載所使用的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
}
}
// 該配置會(huì)被應(yīng)用到所有的子工程。
allprojects {
repositories {
jcenter()
}
}
// 運(yùn)行g(shù)radle clean時(shí),執(zhí)行此處定義的task。
// 該任務(wù)繼承自Delete,刪除根目錄中的build目錄。
// 相當(dāng)于執(zhí)行Delete.delete(rootProject.buildDir)。
// gradle使用groovy語言,調(diào)用method時(shí)可以不用加()。
task clean(type: Delete) {
delete rootProject.buildDir
}
其次,我們要了解和經(jīng)常編輯的是app/build.gradle文件。其內(nèi)容如下:

73F07CF6-5961-41F3-8D9F-3F0A66F1A645.png
下面是具體的解釋:
// 聲明是Android程序,
//com.android.application 表示這是一個(gè)應(yīng)用程序模塊
//com.android.library 標(biāo)識這是一個(gè)庫模塊
//而這區(qū)別:前者可以直接運(yùn)行,后著是依附別的應(yīng)用程序運(yùn)行
apply plugin: 'com.android.application'
android {
compileSdkVersion 26 // 編譯SDK的版本
buildToolsVersion "26.0.2" // 編譯build tools的版本
defaultConfig { //默認(rèn)配置
applicationId "com.example.zhangqi.myapplication" //應(yīng)用的包名
minSdkVersion 15 //支持的最低版本
targetSdkVersion 26 //支持的目標(biāo)版本
versionCode 1 //版本號
versionName "1.0" //版本名
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes { //build類型
release { //發(fā)布
minifyEnabled false //混淆開啟
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //指定混淆規(guī)則文件
}
}
}
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 庫
//下面兩個(gè)是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'//轉(zhuǎn)換器,請求結(jié)果轉(zhuǎn)換成Model
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'//配合Rxjava 使用
testCompile 'junit:junit:4.12'
}