瞭解build.gradle

              每個使用Android Studio編寫Android工程的時候,都會好奇是怎麼把工程編譯成apk的,這就不得不說說一個比較重要的編譯工具gradle,而工程裏面能遇到gradle的文件也比較多。

文件settings.gradle裏面是依賴的module,工程有幾個module就有幾個,比如:

include ':app', ':testaar'。這個就是有apptestaar兩個module

文件local.properties裏面是工程的sdkndk的路徑,比如:sdk.dir=D\:\\Software

\\android-sdk-win

文件gradle.properties裏面是一些gradle裏面用到的變量,常用的有設置網絡代理和設置

jvm的參數等。比如:org.gradle.jvmargs=-Xmx2g。如果設置了代理就可以下載gradle的依賴。

文件build.gradle是最複雜的,內容比較多,工程最外面的build.gradle是適用整個

工程的配置。單個module裏面的build.gradle是適用該module的設置,下面依次說明。


   這個是添加gradle的配置,也就是說這是給gradle使用的。repositories裏面的配置參數是一個倉庫的地址,當gradle的配置和本地不匹配的時候,就會從這個倉庫裏找一個匹配的版本去下載。dependencies是gradle的編譯工具版本,如果版本不合適,也會去重新下載。第一次使用因爲沒有這些配置,默認都會去下載的,後面如果別人工程和你的配置不一致,你可以參考你第一次下載的配置,修改配置,這樣就不用重新去下載配置了。


   這句話表明這個module是一個純android應用,對應的還有另外一個’com.android.library’,代表的意思這個module是一個庫;當然如果不確定是那個類型,可以偷懶寫’android’也是可以的。其實還有其他的插件,比如寫在最後的’java’,就表示引入了gradlejava插件而不是android的了。


   這個和buildscript很類似,但是含義差別很大。這個是供工程使用的配置,而不是給gradle使用的。repositories指定的就是存放jar或者aar等庫文件的位置,一般都是工程的libs裏面;dependencies是需要編譯打包到工程裏面的必要庫文件,第一句是把libs裏面的所有jar文件打包進去;後面是把一些需要的aar文件打包。

android{}這個是對Android工程編譯說明,可編程性很強,所以內容也比較多。


   signingConfigs是簽名相關說明,工程可以有多個簽名,常用有debug和release兩種,這裏給的是release的。裏面的四個參數分別表示簽名文件名,簽名文件密碼,簽名的key別名,簽名的key密碼。不過有些文章說爲了密碼安全,簡易把這些寫到一個配置文件裏面,然後把配置文件不加入版本控制裏面,這樣就不是所有開發者都知道這個密碼,個人感覺沒必要,正直!


   這個是編譯的sdk版本和編譯工具的版本。


   打包的時候把列出來的文件排除在外,這裏是指把所有.apk的文件都不打包。


   dex選項,可以設置一些dex的屬性,這裏是設置了最大堆大小。


   這個是編譯時程序分析工具的設置,有很多屬性,這裏的abortOnError是指遇到錯誤是否會停止編譯,設置成false意思就是遇到錯誤依然會繼續編譯。


   這個是android工程的默認配置,applicationId是程序的ID,和包名有區分;signingConfig是使用的簽名,後面參數是release那個簽名;versionCode和versionName是版本信息,這裏採用的是從一個自定義函數裏面獲取的,獲取路徑是AndroidManifest.xml裏面定義的版本號和版本名稱。自定義函數就是調用系統的方法,如下圖。




   sourceSets是指定代碼或者資源,庫文件等源的位置。可以通過設定不同的源,來編譯不同的包。注意裏面的寫法,可以有很多種。


    buildTypes是構建類型,可以同時構建多個渠道包,這裏寫了debug和release兩種類型,其中有一些參數,signingConfig是簽名相關,debuggable是否打開調試開關,minifyEnabled是否打開混淆,shrinkResources是否刪除未使用資源,如果設爲true,在沒有資源需要減少時反而增加了size。


   productFlavors是構建不同渠道的包,裏面可以自己添加渠道和渠道的一些信息。

參考的文章有:

http://avatarqing.github.io/Gradle-Plugin-User-Guide-Chinese-Verision/index.html

http://ask.android-studio.org/?/article/40






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章