1.3.6 詳解build.gradle文件——Android第一行代碼(第二版)筆記

不同于Eclipse,Android Studio是采用Gradle來構(gòu)建項目的。Gradle是一個非常先進(jìn)的項目構(gòu)建工具,它使用了一種基于Groovy的領(lǐng)域特定語言(DSL)來聲明項目設(shè)置。
首先看項目最外層目錄下的build.gradle文件,代碼如下所示:

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.3'
    }
}
allprojects {
    repositories {
        google()
        jcenter()
    }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}

這些代碼是自動生成的,
首先兩處,repositories的閉包中都聲明了jcenter()這個配置。jcenter是一個代碼托管倉庫。
接下來,dependencies閉包中使用classpath聲明一個Gradle插件。因為Gradle并不是專門為構(gòu)建Android項目而開發(fā)的,因此如果我們要想使用它來構(gòu)建Android項目,則需要聲明com.android.tools.build:gradle:3.1.3這個插件。其中最后面的部分是版本號。

下面我們來看app目錄下的build.gradle文件,代碼如下所示:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    buildToolsVersion '28.0.0'
    defaultConfig {
        applicationId "com.lowthink.helloworld"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

第一行應(yīng)用了一個插件,一般有兩種值可選:

  • com.android.application 表示這是一個應(yīng)用程序模塊,
  • com.android.library 表示這是一個庫模塊。
    應(yīng)用程序模塊和庫模塊的最大區(qū)別在于,一個是可以直接運(yùn)行的,一個只能作為代碼庫依附于別的應(yīng)用程序模塊來運(yùn)行。

android閉包:在這個閉包中我們可以配置項目構(gòu)建的各種屬性。

  • compileSdkVersion:用于指定項目構(gòu)建的版本,這里指定成28標(biāo)示使用Android 9.0系統(tǒng)的SDK編譯。
  • buildToolsVersion:用于指定項目構(gòu)建工具的版本,目前最新的28.0.0,如果有更新的版本時,Android Studio會進(jìn)行提示。修改buildToolsVersion有兩種方法,
    第一種直接在app中的build.gradle里添加
android {
    compileSdkVersion 28
    buildToolsVersion '28.0.0'
    defaultConfig {}
    buildTypes {}
}

第二種方法是選中項目,然后點(diǎn)鼠標(biāo)右鍵,Open Module Settings,進(jìn)入里面直接更改 buildTools的版本,如圖

file
file

也可以點(diǎn)右上角的這個圖片,如圖

file
  • defultConfig閉包:可以對項目的更多細(xì)節(jié)進(jìn)行配置。其中:
    applicationId:用于指定項目的包名;
    minSdkVersion:用于指定項目最低兼容的Android系統(tǒng)版本,這里設(shè)置成15標(biāo)示最低兼容到Android 4.0系統(tǒng);
    targetSdkVersion:指定的值標(biāo)示你在該項目版本上已經(jīng)做過了充分的測試,系統(tǒng)將會為你的應(yīng)用程序啟用一些最新的功能和特性;
    versionCode:用于指定項目的版本號;
    versionName:用于指定項目的版本名;
    API Level 與Android版本的對應(yīng)關(guān)系
    | API Level | Android版本 |
    | --- | --- |
    | 28 | 9 |
    | 27 | 8.1 |
    | 26 | 8.0 |
    | 25 | 7.1.1 |
    | 24 | 7.0 |
    | 23 | 6.0 |
    | 22 | 5.1.1 |
    | 21 | 5.0.1 |
    | 20 | 4.4w.2 |
    | 19 | 4.4.2 |
    | 18 | 4.3.1 |
    | 17 | 4.2.2 |
    | 16 | 4.1.2 |
    | 15 | 4.0.3 |
    | 14 | 4.0 |
    | 10 | 2.3 |
    | 8 | 2.2 |

buildTypes閉包:用于指定生成安裝文件的相關(guān)配置,通常只會有兩個自閉包,一個是debug,一個是release。

  • debug閉包:用于指定生成測試版安裝文件的配置;
  • release閉包:用于指定生成正式版安裝文件的配置;
    minifyEnabled:用于指定是否對項目的代碼進(jìn)行混淆,true表示混淆,false表示不混淆;
    proguardFiles:用于指定混淆時使用的規(guī)則文件,這里指定了兩個文件,第一個proguard-android.txt是Android SDK 目錄下的,里面是所有項目通用的混淆規(guī)則,第二個proguard-rules.pro是在當(dāng)前項目的根目錄下的,里面可以編寫當(dāng)前項目特有的混淆規(guī)則。
    注:通過Andorid Studio直接運(yùn)行項目生成的都是測試版安裝文件;
    注:debug閉包是可以忽略不寫的;

  • dependencies閉包:它可以指定向前項目所有的依賴關(guān)系。
    通常Android Studio項目一共有3種依賴方式:本地依賴、庫依賴、遠(yuǎn)程依賴;
    • 本地依賴:可以對本地的Jar包或目錄添加依賴關(guān)系;
    • 庫依賴:可以對項目中的庫模塊添加依賴關(guān)系;
    • 遠(yuǎn)程依賴:可以對jcenter庫上的開源項目添加依賴關(guān)系;
      注:2018開始用implementation代替compile
  • 第一行implementation fileTree就是一個本地依賴聲明,它表示將libs目錄下的所有.jar后綴的文件都添加到項目的構(gòu)建路徑當(dāng)中。
  • 第二行implementation則是遠(yuǎn)程依賴聲明,com.android.support:appcompat-v7:28.0.0-alpha3就是一個標(biāo)準(zhǔn)的遠(yuǎn)程依賴庫格式,其中com.android.support是域名部分,用于和其他公司庫做區(qū)分:appcompat-v7是組名稱,用于和同一個公司中不同的庫做區(qū)分;28.0.0-alpha3是版本號,用于和同一個庫不同的版本做區(qū)分。加上這句聲明后,Gradle在構(gòu)建項目時會首先檢查一下本地是否已經(jīng)有這個庫的緩存,如果沒有的話則去自動聯(lián)網(wǎng)下載,然后再添加到項目的構(gòu)建路徑當(dāng)中。
  • 第三行代碼implementation 'com.android.support.constraint:constraint-layout:1.1.2'聲明,為了ConstraintLayout的使用(了解更多請移步這里
  • 第四行代碼testImplementation是用于聲明測試用例庫的;

本文由博客一文多發(fā)平臺 OpenWrite 發(fā)布!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容