当咱们在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用来当作惟一标识.