build.gradle文件介紹


對於以前用Eclipse開發安卓的小伙伴來說,Gradle文件是陌生的。
不同於Eclipse,而Android Studio 是采用Gradle來構建項目的。

先來介紹最外層目錄下的build.gradle文件,代碼如下:

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

allprojects {
    repositories {
        jcenter()
    }
}

在repositories閉包中:

jcenter():它是一個代碼托管倉庫,很多的Android開源項目都會選擇將代碼托管到jcenter上,聲明了這行配置后,我們就可以在項目中輕松使用任何的jcenter上的開源項目了

在repositories閉包中:

classpath 'com.android.tools.build:gradle:2.2.2'聲明了一個Gradle插件。gradle:2.2.2為Gradle插件的版本號。

下面來介紹app目錄下的build.gradle文件,代碼如下:

apply plugin: 'com.android.application'

	android {
	    compileSdkVersion 24
	    buildToolsVersion "24.0.2"
	    defaultConfig {
	        applicationId "com.androidtest"
	        minSdkVersion 15
	        targetSdkVersion 24
	        versionCode 1
	        versionName "1.0"
	    }
	    buildTypes {
	        release {
	            minifyEnabled false
	            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
	        }
	    }
	}

	dependencies {
	    compile fileTree(dir: 'libs', include: ['*.jar'])
	    compile 'com.android.support:appcompat-v7:23.4.0'
	    testCompile 'junit:junit:4.12'
	}

介紹

第一行的apply plugin:代表着應用了一個插件。一般來說有兩個值可選。

  1. com.android.application 表示這是一個應用程序模塊。
  2. com.android.library 表示是一個庫模塊。

區別:

com.android.application是代表可以直接運行的,

com.android.library是只能作為代碼依附在別的應用程序模塊來運行。所以在引入一些Model為自己的應用程序所用時,build.gradle文件的第一行就是apply plugin:com.android.library。

android閉包:

compileSdkVersion:用於指定項目的編譯版本。這里24表示使用Android7.0系統的SDK進行編譯。

buildToolsVersion:用於指定項目的構建工具的版本。

android閉包中有defaultConfig閉包:

applicationId:用於指定項目的包名,在創建項目的時候已經指定了包名,當要改變整個項目的包名時可以在這里改變。

minSdkVersion:項目最低的兼容版本。15表示兼容到API 15 既是android 4.0.

targetSdkVersion:表示你在該目標版本上已經做過了充分的測試,系統將為你的應用開啟一些最新的功能和特性。假如targetSdkVersion 為23或者更高,那么在Android6.0中運行這個應用時會開啟新的功能和特性;但是設置成了22的話,只能說明你的應用程序在Android5.1系統上做過了充分的測試,Android6.0的新功能就不會啟用了。

注意
在以前eclipse中設置這些都是AndroidManifest.xml文件中設置的。

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="18" />

而在Android Studio中,即使在AndroidManifest.xml設置了,依然是不起作用的,運行時只承認build.gradle下的設置。

versionCode:項目的版本號

versionName:項目版本號的版本名。

這兩個屬性在生成安裝文件時用到。

android閉包中有buildTypes閉包:

通常這個閉包中會有兩個閉包,一個是debug,一個release。

debug閉包用於生成測試版安裝文件的配置,release閉包用於生成正式版安裝文件的配置。dubug閉包可以忽略不寫。

release閉包中的具體內容:

minifyEnabled:用於是否對項目的代碼進行混淆。true代表開啟,false代表關閉。

proguardFiles:指定混淆時使用的文件。

proguard-android.txt:在Android SDK 目錄下的,里面是所有項目通用的混淆規則。

proguard-rules.pro:是在當前項目根目錄下的,里面編寫當前項目特有的混淆規則。

dependencies閉包

在這個閉包下可以指定當前項目所有的依賴關系。通常Android Studio 項目中一共有三種依賴方式:本地依賴、庫依賴和遠程依賴。

本地依賴可以對本地的Jar包或目錄添加依賴關系

庫依賴可以對項目中的庫模塊添加依賴關系。

遠程依賴則可以對jcenter庫上的開源項目添加依賴關系。

在本項目中的第一行 compile fileTree(dir: 'libs', include: ['*.jar'])就是本地依賴聲明,他把libs目錄下的所以.Jar后綴文件全部添加帶項目的構建路徑中去。同時也可以只指定一個文件,例如:compile files('libs/picasso-2.4.0.jar')

在本項目中並沒有使用到庫依賴。庫依賴的基本格式為 compile project后面加上依賴庫的庫名稱,例如gallery為庫名稱,那么compile project(':gallery')就能添加這個庫的依賴關系。

在本項目中的第二行 ** compile 'com.android.support:appcompat-v7:23.4.0'**這種聲明是遠程依賴聲明。因為是用遠程的庫,所以Gradle在構建項目的時候會檢查一下本地倉庫是否已經緩存了,如果沒有就自動聯網下載,然后再添加到項目的構建路徑中去。

遠程依賴時每次都要檢查是否有這個緩存,所以使編譯變的很慢。可以設置成離線的Gradle模式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM