當咱們在Android Studio中建立一個新項目時,會默認生成三個Gradle文件,其中
settings.gradle
和build.gradle
文件位於項目的根目錄,另外一個build.gradle
文件則位於項目的app模塊中.html
對於只包含一個Android應用的新項目來講,settings.gradle
中是這樣的:java
include ':app'
複製代碼
settings文件在初始化階段被執行,而且其中定義了哪些模塊應該包含在構建內(單項目模塊能夠沒有settings文件,但多項目模塊必須有,不然Gradle不知道哪一個模塊應該包含在構建內)
.此時Gradle會爲每一個settings文件建立一個Settings對象,並調用該對象的相關方法.android
Settings類的官方解釋是聲明實例化和配置要參與構建的Project實例的層次結構所需的配置
,而且settings文件和Settings對象之間存在一一對應關係.
Settings對象的目的之一是容許咱們使用Settings.include(java.lang.String[])
方法將項目添加到構建中.api
build.gradle用來配置模塊的一些參數,默認狀況下包含以下代碼塊:bash
buildscript {
ext.kotlin_version = '1.3.50'
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.1'
}
}
allprojects {
repositories {
jcenter()
}
}
複製代碼
模塊目錄下的build.gradle文件的屬性只能做用於Android app模塊,其中的配置能夠覆蓋根目錄的build.gradle文件中的任何屬性.該模塊的構建文件示例以下:app
apply plugin: 'com.android.application'
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "io.sqms.study"
minSdkVersion 15
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
複製代碼
com.android.application
代碼爲Android應用插件,該插件在根目錄的構建文件中被配置成了依賴,提供構建、測試和打包應用以及依賴項目的全部任務.工具
android{}
代碼塊包含了所有的Android的特有配置,使用這些配置前提條件是應用了上面說的插件.
必須有的屬性是:測試
defaultConfig代碼塊用於配置應用的核心屬性(注:此代碼塊中的屬性可覆蓋AndroidManifest.xml文件中對應的條目,若是沒有在build.gradle文件中配置,那麼AndroidManifest.xml文件中配置的則會生效)
.gradle
AndroidManifest.xml
文件中的packagename
packagename
有兩個作用:
AndroidManifest.xml
文件中的packagename
會繼續使用在源代碼和R資源類中,applicationId用來當作惟一標識.