AndroidStudio中builde.gradle文件詳解

Android Studio是採用Gradle來構建項目的,一個Android項目中包含兩個build.gradle文件,以下圖:android

 
 

(1)最外層目錄下build.gradle文件
  最外層目錄下的build.gradle文件代碼以下:緩存

buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.2'

        // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files
 } } allprojects { repositories { jcenter() } }

 

忽略不明白的語法,從字面上咱們能夠看出,關鍵有兩部分的代碼,repositories閉包和dependencies閉包。
一、repositories閉包
  該閉包中聲明瞭jcenter()的配置,其中jcenter是一個代碼託管倉庫,上面託管了不少Android開源項目,在這裏配置了jcenter後咱們能夠在項目中方便引用jcenter上的開源項目。
二、dependencies閉包
  該閉包使用classpath聲明瞭一個Gradle插件,因爲Gradle並不僅是用來構建Android項目,所以此處引入相關插件來構建Android項目,其中'2.2.2'爲該插件的版本號,能夠根據最新的版本號來調整。
(2)模塊目錄下build.gradle文件
項目中app模塊下的build.gradle文件中的內容以下:閉包

apply plugin: 'com.android.application' android { compileSdkVersion 25 buildToolsVersion "25.0.2" defaultConfig { applicationId "com.wkui.douban.easysearch" minSdkVersion 15 targetSdkVersion 25 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:25.2.0' testCompile 'junit:junit:4.12' }

 

從文件內容能夠看出,主要分爲三大部分:
一、apply plugin
  文件中第一行使用apply plugin表示應用了一個插件,該插件通常有兩種值可選:
一種爲'com.android.application',表示該模塊爲應用程序模塊,能夠直接運行;另外一種爲'com.android.library',表示該模塊爲庫模塊,只能做爲代碼庫依附於別的應用程序模塊來運行。
二、android閉包
  這個閉包主要爲了配置項目構建的各類屬性,compileSdkVersion用於指定項目的編譯版本,25表示使用Android 7.1系統的SDK編譯。buildToolsVersion用於指定項目構建工具的版本。android閉包中嵌套了defaultConfig閉包和buildTypes閉包:
1) defaultConfig閉包
  對項目的更多細節進行配置,其中applicationId指定了項目的包名,咱們能夠經過修改這個值來修改項目的包名。
  minSdkVersion指定項目最低兼容的版本,這裏指定爲15,表示最低兼容到Android 4.0系統。
  targetSdkVersion指定的值表示在該目標版本上已經作過充分測試,系統會爲該應用啓動一些對應該目標系統的最新功能特性,Android系統平臺的行爲變動,只有targetSdkVersion的屬性值被設置爲大於或等於該系統平臺的API版本時,纔會生效。例如,若指定targetSdkVersion值爲22,則表示該程序最高只在Android5.1版本上作過充分測試,在Android6.0系統上(對應targetSdkVersion爲23)擁有的新特性如系統運行時權限等功能就不會被啓用。
2) buildTypes閉包
  這個閉包主要指定生成安裝文件的主要配置,通常包含兩個子閉包,一個是debug閉包,用於指定生成測試版安裝文件的配置,能夠忽略不寫;另外一個是release閉包,用於指定生成正式版安裝文件的配置。
  上面的代碼中省去了debug閉包的內容,只寫了release閉包。其中minifyEnabled代表是否對代碼進行混淆,true表示對代碼進行混淆。proguardFiles指定混淆的規則文件,這裏指定了proguard-android.txt文件和proguard-rules.pro文件兩個文件,proguard-android.txt文件爲默認的混淆文件,裏面定義了一些通用的混淆規則。proguard-rules.pro文件位於當前項目的根目錄下,能夠在該文件中定義一些項目特有的混淆規則。
三、dependencies閉包
  該閉包定義了項目的依賴關係,通常項目都有三種依賴方式:本地依賴、庫依賴和遠程依賴。本地依賴能夠對本地的jar包或目錄添加依賴關係,庫依賴能夠對項目中的庫模塊添加依賴關係,遠程依賴能夠對jcener庫上的開源項目添加依賴關係。
  下面對該閉包中定義的語句進行解釋。
  第一行的compile fileTree是一個本地依賴聲明,表示將libs目錄下全部.jar後綴的文件都添加到項目的構建路徑當中。
  第二行的compile語句爲 遠程依賴聲明,'com.android.support:appcompat-v7:25.2.0'爲一個標準的遠程依賴庫格式,其中com.android.support爲域名部分,用於區分不一樣公司的庫;appcompat-v7爲組件名稱,用於區分同一個公司的不一樣庫;25.2.0爲版本號,用於區分同一個庫的不一樣版本。加上這句聲明後,Gradle在構建項目時會先檢查一下本地是否已經緩存過該庫,若沒有緩存則自動聯網下載,下載後自動添加到項目的構建路徑中去。
  testCompile語句爲聲明測試用例庫的,暫時沒有用到。這裏沒有用到庫依賴聲明,如有一個庫模塊名爲helper,那麼添加這個庫依賴關係須要加入compile project(':helper')這句聲明。app

做者:sunnygarden 連接:https://www.jianshu.com/p/9c27dd7938b7 來源:簡書 簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。
相關文章
相關標籤/搜索