build.gradle配置說明
module/build.gradle
apply plugin: 'com.android.application'
//說明module的型別,com.android.application為程式,com.android.library為庫
android {
compileSdkVersion 22 //編譯的SDK版本
buildToolsVersion "22.0.1" //編譯的Tools版本
defaultConfig { //預設配置
applicationId "com.example.test" //應用程式的包名
minSdkVersion 15 //支援的最低版本
targetSdkVersion 25 //支援的目標版本
versionCode 3190 //版本號
versionName "3.1.9" //版本名
}
sourceSets { //目錄指向配置
main {
manifest.srcFile 'AndroidManifest.xml' //指定AndroidManifest檔案
java.srcDirs = ['src'] //指定source目錄
resources.srcDirs = ['src' ] //指定source目錄
aidl.srcDirs = ['src'] //指定source目錄
renderscript.srcDirs = ['src'] //指定source目錄
res.srcDirs = ['res'] //指定資源目錄
assets.srcDirs = ['assets'] //指定assets目錄
jniLibs.srcDirs = ['libs'] //指定lib庫目錄
}
debug.setRoot('build-types/debug' ) //指定debug模式的路徑
release.setRoot('build-types/release') //指定release模式的路徑
}
signingConfigs { //簽名配置
release { //釋出版簽名配置
storeFile file("fk.keystore") //金鑰檔案路徑
storePassword "123" //金鑰檔案密碼
keyAlias "fk" //key別名
keyPassword "123"//key密碼
}
debug { //debug版簽名配置
storeFile file("fk.keystore")
storePassword "123"
keyAlias "fk"
keyPassword "123"
}
}
buildTypes { //build型別
release { //釋出
minifyEnabled true //混淆開啟
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt' //指定混淆規則檔案
signingConfig signingConfigs.release //設定簽名信息
}
debug { //除錯
signingConfig signingConfigs.release
}
}
packagingOptions {
exclude 'META-INF/ASL2.0'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
exclude 'META-INF/MANIFEST.MF'
}
lintOptions {
abortOnError false //lint時候終止錯誤上報,防止編譯的時候莫名的失敗
}
}
dependencies {
compile fileTree(dir: 'libs', exclude: ['android-support*.jar'], include: ['*.jar'])
//編譯lib目錄下的.jar檔案
compile project(':Easylink') //編譯附加的專案
compile project(':ImageLibrary')
compile project(':ImageResLibrary')
compile project(':Ofdmtransport')
compile project(':PullToRefreshLibrary')
compile project(':RecorderLibrary')
compile project(':WebSocket')
compile project(':WidgetLibrary')
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3' //編譯來自Jcenter的第三方開源庫
}
專案/build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
//整個專案的gradle基礎配置檔案
//buildscript { ... }配置了驅動構建的程式碼。
// 聲明瞭使用jcenter 中央庫,並且對一個Maven 檔案有一個類路徑依賴。
// 這個檔案是包含 Gradle Android 外掛的 1.5.0版本的庫
buildscript {
repositories {
jcenter()
}
dependencies {
//聲明瞭android gradle plugin的版本
classpath 'com.android.tools.build:gradle:1.5.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
內容主要包含了兩個方面:一個是宣告倉庫的源,這裡可以看到是指明的jcenter(), 之前版本則是mavenCentral(), jcenter可以理解成是一個新的中央遠端倉庫,相容maven中心倉庫,而且效能更優。另一個是聲明瞭android gradle plugin的版本,android studio 1.0正式版必須要求支援gradle plugin 1.0的版本。
android DSL
–領域特定語言(domain-specific languages,簡稱DSL)
defaultConfig{} 預設配置,是ProductFlavor型別。它共享給其他ProductFlavor使用
sourceSets{ } 原始檔目錄設定,是AndroidSourceSet型別。
buildTypes{ } BuildType型別
signingConfigs{ } 簽名配置,SigningConfig型別
productFlavors{ } 產品風格配置,ProductFlavor型別
testOptions{ } 測試配置,TestOptions型別
aaptOptions{ } aapt配置,AaptOptions型別
lintOptions{ } lint配置,LintOptions型別
dexOptions{ } dex配置,DexOptions型別
compileOptions{ } 編譯配置,CompileOptions型別
packagingOptions{ } PackagingOptions型別
jacoco{ } JacocoExtension型別。 用於設定 jacoco版本
splits{ } Splits型別。
android{ … }配置了用於 android 構建的所有引數。這是Android DSL的入口。