詳解build.gradle
@(Alu)
AndroidStudio
采用 Gradle
來構(gòu)建項目料祠。
Gradle
是一個非常先進(jìn)的項目構(gòu)建工具塞弊,它使用一種基于 groovy
的領(lǐng)域特定語言(DSL)來聲明項目變更懈贺,摒棄了傳統(tǒng)基于 XML 的各種煩瑣位置盒至。
一般項目我們的 android 項目中會有兩個 build.gradle
文件,一個在最外層目錄下,一個在app 目錄下翩迈,這兩個文件對構(gòu)建 android studio
的項目都起了至關(guān)重要的 作用。
最外層的build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.0'
}
}
allprojects {
repositories {
jcenter()
}
}
這些代碼都是自動生成的垦江,我們忽略結(jié)構(gòu)直接看最關(guān)鍵部分帽馋。
repositories
閉包中都聲明了 jcenter()
進(jìn)行配置, jcenter()
是一個代碼托管倉庫比吭。聲明配置后绽族,就可以在項目中輕松引用任何 jcenter
上的開源項目了。
而dependencies
閉包中 申明了一個 gradle 插件衩藤,用來構(gòu)建我們的 android 項目吧慢。
App包里的 build.gradle文件
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion '25.0.0'
defaultConfig {
applicationId "com.example.test"
minSdkVersion 14
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
incremental true
targetCompatibility 1.8
sourceCompatibility 1.8
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:25.0.0'
testCompile 'junit:junit:4.12'
}
這個文件里的內(nèi)容比較多,看起來比上一個 gradle 文件復(fù)雜的多赏表。
首先第一行代碼應(yīng)用了一個插件检诗。一般有兩種值可以選擇: com.android.application
表示這是一個應(yīng)用程序模塊,
com.android.library
表明這是一個庫模塊瓢剿。應(yīng)用程序模塊和庫模塊的區(qū)別在于逢慌,前者可以直接運(yùn)行,后者只能作為代碼庫依附于別的程序模塊來運(yùn)行间狂。
接下來是一個大的 android
閉包攻泼,這個閉包里,compileSdkVersion
用來指定項目的編譯版本。
buildToolVersion
用來指定項目構(gòu)建工具的版本忙菠。
defaultConfig
閉包里何鸡,applicationId
用于指定項目的包名,minSdkVersion
和targetSdkVersion
分別表示最低兼容版本牛欢,和最適合版本骡男。versionCode
用于指定版本號。
buildTypes
閉包中minifyEnabled
用于指定師傅對項目的代碼進(jìn)行混淆“茫現(xiàn)在是false
隔盛,說明沒有混淆。
proguardFiles
用于指定混淆 時使用的 混淆規(guī)則文件焰望。
下面這個 compileOptons
閉包表明我們編譯的 JDK 版本骚亿。
最后 的dependencies
閉包的功能十分強(qiáng)大,它可以指定當(dāng)前項目的所有依賴關(guān)系熊赖。通常 Android stuido項目一共有三種依賴方式: 本地依賴、庫依賴虑椎、遠(yuǎn)程依賴震鹉。
對于上面的代碼來說:第一行 fileTree
為本地依賴,第二行'com.android.support:appcompat_v7:25.0.0'
為遠(yuǎn)程依賴捆姜,第三行用于聲明測試用例庫传趾。
庫依賴這里沒有用到一般格式為 compile project
后面加上要依賴的庫的名稱,就比如compile project(':help')
這句的意思就是依賴了一個名為helper
的庫泥技。