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

不一樣於Eclipse,Android Studio是採用Gradle來構建項目的。Gradle是一個很是先進的項目構建工具,它使用了一種基於Groovy的領域特定語言(DSL)來聲明項目設置。
首先看項目最外層目錄下的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並非專門爲構建Android項目而開發的,所以若是咱們要想使用它來構建Android項目,則須要聲明com.android.tools.build:gradle:3.1.3這個插件。其中最後面的部分是版本號。android

下面咱們來看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🏃1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}app

第一行應用了一個插件,通常有兩種值可選:
* com.android.application 表示這是一個應用程序模塊,
* com.android.library 表示這是一個庫模塊。
應用程序模塊和庫模塊的最大區別在於,一個是能夠直接運行的,一個只能做爲代碼庫依附於別的應用程序模塊來運行。

* * * * *

**android閉包**:在這個閉包中咱們能夠配置項目構建的各類屬性。
* **compileSdkVersion**:用於指定項目構建的版本,這裏指定成28標示使用Android 9.0系統的SDK編譯。
* **buildToolsVersion**:用於指定項目構建工具的版本,目前最新的28.0.0,若是有更新的版本時,Android Studio會進行提示。修改buildToolsVersion有兩種方法,
第一種直接在app中的build.gradle裏添加

android {
compileSdkVersion 28
buildToolsVersion '28.0.0'
defaultConfig {}
buildTypes {}
}
~~~工具

第二種方法是選中項目,而後點鼠標右鍵,Open Module Settings,進入裏面直接更改 buildTools的版本,如圖測試

file

file

也能夠點右上角的這個圖片,如圖gradle

file

  • defultConfig閉包:能夠對項目的更多細節進行配置。其中:
    applicationId:用於指定項目的包名;
    minSdkVersion:用於指定項目最低兼容的Android系統版本,這裏設置成15標示最低兼容到Android 4.0系統;
    targetSdkVersion:指定的值標示你在該項目版本上已經作過了充分的測試,系統將會爲你的應用程序啓用一些最新的功能和特性;
    versionCode:用於指定項目的版本號;
    versionName:用於指定項目的版本名;
    API Level 與Android版本的對應關係
    | 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閉包:用於指定生成安裝文件的相關配置,一般只會有兩個自閉包,一個是debug,一個是release。ui

  • debug閉包:用於指定生成測試版安裝文件的配置;
  • release閉包:用於指定生成正式版安裝文件的配置;
    minifyEnabled:用於指定是否對項目的代碼進行混淆,true表示混淆,false表示不混淆;
    proguardFiles:用於指定混淆時使用的規則文件,這裏指定了兩個文件,第一個proguard-android.txt是Android SDK 目錄下的,裏面是全部項目通用的混淆規則,第二個proguard-rules.pro是在當前項目的根目錄下的,裏面能夠編寫當前項目特有的混淆規則。
    注:經過Andorid Studio直接運行項目生成的都是測試版安裝文件;
    注:debug閉包是能夠忽略不寫的;

  • dependencies閉包:它能夠指定向前項目全部的依賴關係。
    一般Android Studio項目一共有3種依賴方式:本地依賴、庫依賴、遠程依賴;
    • 本地依賴:能夠對本地的Jar包或目錄添加依賴關係;
    • 庫依賴:能夠對項目中的庫模塊添加依賴關係;
    • 遠程依賴:能夠對jcenter庫上的開源項目添加依賴關係;
      注:2018開始用implementation代替compile
  • 第一行implementation fileTree就是一個本地依賴聲明,它表示將libs目錄下的全部.jar後綴的文件都添加到項目的構建路徑當中。
  • 第二行implementation則是遠程依賴聲明,com.android.support:appcompat-v7:28.0.0-alpha3就是一個標準的遠程依賴庫格式,其中com.android.support是域名部分,用於和其餘公司庫作區分:appcompat-v7是組名稱,用於和同一個公司中不一樣的庫作區分;28.0.0-alpha3是版本號,用於和同一個庫不一樣的版本作區分。加上這句聲明後,Gradle在構建項目時會首先檢查一下本地是否已經有這個庫的緩存,若是沒有的話則去自動聯網下載,而後再添加到項目的構建路徑當中。
  • 第三行代碼implementation 'com.android.support.constraint:constraint-layout:1.1.2'聲明,爲了ConstraintLayout的使用(瞭解更多請移步這裏
  • 第四行代碼testImplementation是用於聲明測試用例庫的;google

    本文由博客一文多發平臺 OpenWrite 發佈!spa

相關文章
相關標籤/搜索