settings.gradle
和
build.gradle
位於項目的根目錄。另一個
build.gradle
文件則在Android的app模塊內被建立。
對於一個只包含一個Android應用的新項目來講,settings.gradle
的內容以下,表示app模塊應該包含在構建內:android
include':app'
bash
settings.gradle
文件在初始化階段被執行,而且定義了哪些模塊應該包含在構建內。app
注意:單模塊項目並不必定須要setting文件,可是多模塊項目必需要有setting文件,不然,Gradle不知道哪一個模塊應包含在構建內。測試
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.4'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
複製代碼
Gradle
的Android
插件。每一個Android
模塊都須要有Android
插件,由於該插件中定義了執行Android
的相關任務。build.gradle
的設置與根目錄下的build.gradle
文件中的allprojects
設置衝突,則模塊中的設置覆蓋根目錄下的設置。下面是app模塊下的build.gradle
的代碼:gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 19
targetSdkVersion 27
versionCode 1
versionName "1.0"
}
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:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
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'
}
複製代碼
第一行apply plugin: 'com.android.application'
表示應用Android
插件,該插件在頂層構建文件中被配置成了依賴ui
dependencies {
classpath 'com.android.tools.build:gradle:3.1.4'
}
複製代碼
android
代碼塊包含了所有的Android
特有配置,這些特有配置之因此可被使用,是由於以前咱們使用了Android
插件。配置以下:google
compileSdkVersion
是要用來聲明編譯應用的Android API版本。spa
defaultConfig
代碼塊用於配置應用的核心屬性。此代碼塊中的屬性可覆蓋Android.Manifest.xml
文件中對應的條目操作系統
packagename
applicationId
和packagename
的區別:在應用構建以前,AndroidManifest.xml
中的package name
有兩個用途:1.做爲一個應用的惟標符,2.在R 資源類中被用做包名。在構建後定義在manifest
文件中的package
,繼續用在你的源代碼和 R 類中,而以前被用做設備惟一標識的package name
, 如今則被稱之爲applicationId
。插件
若是你在 build.gradle 中定義了它們, 就沒有必要在 manifest 文件中再去定義。 若是構建 文件不包含某個屬性, 那麼 manifest 中的該屬性就會被用做後備。
buildTypes
代碼塊可用來定義如何構建和打包不一樣構建類型的應用
依賴代碼塊是標準 Gradle 配置的部分(這就是其放在 android 代碼塊以外的緣由), 其定義了個應用或依賴項目的全部依賴包。