AndroidStudio中build.gradle文件解讀

整個(gè)項(xiàng)目中的build.gradle文件

AndroidStudio 3.0版本之前:

一般效果如圖:

P78UD@R4LC_5)N1X)((9)G7.png

1
在這個(gè)文件中你可以給此project中的所有的moudle配置公共基礎(chǔ)選項(xiàng)。

2 buildscript閉包
表示配置gradle腳本執(zhí)行所需要的信息
其中的repositories閉包表示指定代碼托管庫(kù)(或者說(shuō)是倉(cāng)庫(kù)的源),這里指定倉(cāng)庫(kù)源是jcenter,
簡(jiǎn)單來(lái)講可以說(shuō)是網(wǎng)址的頭,翻譯過(guò)來(lái)就是 :https://jcenter.bintray.com(不標(biāo)準(zhǔn))
其中dependencies:表示依賴性,這里指定的是'com.android.tools.build:gradle:2.3.1'
如果需要的話,gradle下載對(duì)應(yīng)版本的Gradle。如果使用gradle wrapper的話,感覺(jué)這個(gè)配置會(huì)被忽略。Wrapper會(huì)自己去下載所使用的gradle版本。
其實(shí)jcenter 就是 Android library 文件服務(wù)器中的其中一個(gè),另外一個(gè)就是 Maven Central,這兩個(gè)都是Maven 倉(cāng)庫(kù)。 jcenter 由 bintray.com 維護(hù) , Maven Central 則是由 sonatype.org 維護(hù),它們分別存儲(chǔ)在不同的服務(wù)器。

allprojects閉包
表示配置的是所有的工程;
并且通過(guò)dependencies指定項(xiàng)目的代碼托管庫(kù),設(shè)置之后可以輕松在項(xiàng)目中引用jcenter中開(kāi)源項(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版本之后:

圖片er.png

1
你會(huì)發(fā)現(xiàn),指定的庫(kù)閉包里面多了一個(gè)google(),表明AS可以直接從google()庫(kù)中下載自己需要的內(nèi)容了。

具體某個(gè)mudle中的build.gradle文件

圖片三.png

apply plugin
表示使用插件,
'com.android.application'表示指定當(dāng)前項(xiàng)目是一個(gè)應(yīng)用。
該插件一般有兩種值可選:一種為'com.android.application',表示該模塊為應(yīng)用程序模塊,可以直接運(yùn)行;另一種為'com.android.library',表示該模塊為庫(kù)模塊,只能作為代碼庫(kù)依附于別的應(yīng)用程序模塊來(lái)運(yùn)行。

android閉包
用于配置當(dāng)前項(xiàng)目的屬性。

compileSdkVersion:指定項(xiàng)目的編譯版本,表示API的版本號(hào)如圖表示是1~25
buildToolsVersion:指定項(xiàng)目的構(gòu)建版本,如打包工具之類的
你可以用高版本的ToolsVersion去編譯低版本的SdkVersion,反之不可以。
對(duì)這個(gè)項(xiàng)目進(jìn)行細(xì)節(jié)上配置
defaultConfig:{
                          applicationId:應(yīng)用的包名
                          minSdkVersion:項(xiàng)目最低兼容版本
                          targetSdkVersion:表示項(xiàng)目已經(jīng)在當(dāng)前版本上進(jìn)行了充分測(cè)試,系統(tǒng)才會(huì)開(kāi)啟新的版本特性,
                          也就是說(shuō);若指定targetSdkVersion值為22,則表示該程序最高只在Android5.1版本上做過(guò)充
                          分測(cè)試,在Android6.0系統(tǒng)上(對(duì)應(yīng)targetSdkVersion為23)擁有的新特性如系統(tǒng)運(yùn)行時(shí)權(quán)限等功能就不會(huì)被啟用
                          versionCode:版本號(hào)
                          versionName:版本名稱
                          testIntrumentationRunner:為了進(jìn)行單元化測(cè)試
}
生成安裝文件的主要配置
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會(huì)去jcenter()這種庫(kù)源中去下載所需要的內(nèi)容。

compile project(':honjane-demo-library') 庫(kù)依賴

testCompile:聲明測(cè)試用例庫(kù)

androidTestCompile:測(cè)試用例庫(kù)。

在3.0 版本上的變化

圖片4.png

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,523評(píng)論 25 708
  • Android Studio是采用Gradle來(lái)構(gòu)建項(xiàng)目的,一個(gè)Android項(xiàng)目中包含兩個(gè)build.gradl...
    sunnygarden閱讀 10,561評(píng)論 4 12
  • 文|千若鳶 來(lái)不及揮手,便要與你說(shuō)再見(jiàn)離別的話語(yǔ)咽在喉中,再也說(shuō)不出口未曾想過(guò)分別的今日,是如此快的到來(lái)。再見(jiàn),我...
    千若鳶閱讀 266評(píng)論 1 4
  • 如今多數(shù)企業(yè)都會(huì)對(duì)員工進(jìn)行企業(yè)文化內(nèi)訓(xùn)。那么,企業(yè)文化內(nèi)訓(xùn)應(yīng)該怎么做?講師約(微信公眾號(hào):china_jsy)告訴...
    fengtian89閱讀 210評(píng)論 0 1
  • “在場(chǎng)手帳圈的小伙伴請(qǐng)舉個(gè)手”看到你們了,我給你們一個(gè)小任務(wù),在這場(chǎng)演講結(jié)1束,你們把你身邊的小伙伴安利入坑好嗎?...
    L要做自己閱讀 332評(píng)論 0 0