整個(gè)項(xiàng)目中的build.gradle文件
AndroidStudio 3.0版本之前:
一般效果如圖:

1
在這個(gè)文件中你可以給此project中的所有的moudle配置公共基礎(chǔ)選項(xiàng)。
2 buildscript閉包
表示配置gradle腳本執(zhí)行所需要的信息
其中的repositories閉包表示指定代碼托管庫(或者說是倉庫的源),這里指定倉庫源是jcenter,
簡單來講可以說是網(wǎng)址的頭,翻譯過來就是 :https://jcenter.bintray.com(不標(biāo)準(zhǔn))
其中dependencies:表示依賴性,這里指定的是'com.android.tools.build:gradle:2.3.1'
如果需要的話,gradle下載對應(yīng)版本的Gradle。如果使用gradle wrapper的話,感覺這個(gè)配置會被忽略。Wrapper會自己去下載所使用的gradle版本。
其實(shí)jcenter 就是 Android library 文件服務(wù)器中的其中一個(gè),另外一個(gè)就是 Maven Central,這兩個(gè)都是Maven 倉庫。 jcenter 由 bintray.com 維護(hù) , Maven Central 則是由 sonatype.org 維護(hù),它們分別存儲在不同的服務(wù)器。
allprojects閉包
表示配置的是所有的工程;
并且通過dependencies指定項(xiàng)目的代碼托管庫,設(shè)置之后可以輕松在項(xiàng)目中引用jcenter中開源項(xiàng)目。
task clean
運(yùn)行g(shù)radle clean時(shí),執(zhí)行此處定義的task。
該任務(wù)繼承自Delete,刪除根目錄中的build目錄。
相當(dāng)于執(zhí)行Delete.delete(rootProject.buildDir)。
AndroidStudio 3.0版本之后:

1
你會發(fā)現(xiàn),指定的庫閉包里面多了一個(gè)google(),表明AS可以直接從google()庫中下載自己需要的內(nèi)容了。
具體某個(gè)mudle中的build.gradle文件

apply plugin
表示使用插件,
'com.android.application'表示指定當(dāng)前項(xiàng)目是一個(gè)應(yīng)用。
該插件一般有兩種值可選:一種為'com.android.application',表示該模塊為應(yīng)用程序模塊,可以直接運(yùn)行;另一種為'com.android.library',表示該模塊為庫模塊,只能作為代碼庫依附于別的應(yīng)用程序模塊來運(yùn)行。
android閉包
用于配置當(dāng)前項(xiàng)目的屬性。
compileSdkVersion:指定項(xiàng)目的編譯版本,表示API的版本號如圖表示是1~25
buildToolsVersion:指定項(xiàng)目的構(gòu)建版本,如打包工具之類的
你可以用高版本的ToolsVersion去編譯低版本的SdkVersion,反之不可以。
對這個(gè)項(xiàng)目進(jìn)行細(xì)節(jié)上配置
defaultConfig:{
applicationId:應(yīng)用的包名
minSdkVersion:項(xiàng)目最低兼容版本
targetSdkVersion:表示項(xiàng)目已經(jīng)在當(dāng)前版本上進(jìn)行了充分測試,系統(tǒng)才會開啟新的版本特性,
也就是說;若指定targetSdkVersion值為22,則表示該程序最高只在Android5.1版本上做過充
分測試,在Android6.0系統(tǒng)上(對應(yīng)targetSdkVersion為23)擁有的新特性如系統(tǒng)運(yùn)行時(shí)權(quán)限等功能就不會被啟用
versionCode:版本號
versionName:版本名稱
testIntrumentationRunner:為了進(jìn)行單元化測試
}
生成安裝文件的主要配置
buildTypes{
表示的是發(fā)布正式版本
release{
minifyEnabled:表示是否混淆
proguardFiles:表示指定混淆文件
}
}
dependencies閉包
指定本項(xiàng)目的依賴關(guān)系,分為三種形式的依賴,
compile fileTree:一個(gè)本地依賴聲明,表示將libs目錄下所有.jar后綴的文件都添加到項(xiàng)目的構(gòu)建路徑當(dāng)中。
compile:遠(yuǎn)程依賴,AS會去jcenter()這種庫源中去下載所需要的內(nèi)容。
compile project(':honjane-demo-library') 庫依賴
testCompile:聲明測試用例庫
androidTestCompile:測試用例庫。
在3.0 版本上的變化

在dependencies中:
implement 和api代替了compile
其中,api 完全等于compile,沒有區(qū)別
implement 指令有自己的好處:對于使用了該命令編譯的依賴,對該項(xiàng)目有依賴的項(xiàng)目將無法訪問到使用該命令編譯的依賴中的任何程序,也就是將該依賴隱藏在內(nèi)部,而不對外部公開。