1. 程式人生 > >build.gradle配置說明

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的入口。