對於以前用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:代表着應用了一個插件。一般來說有兩個值可選。
- com.android.application 表示這是一個應用程序模塊。
- 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模式。