Gradle是一个构建系统(开源),用于自动化构建,测试,部署等。“ Build.gradle”是可以使任务自动化的脚本。例如,在实际构建过程发生之前,可由Gradle构建脚本执行将某些文件从一个目录复制到另一个目录的简单任务。
为什么需要Gradle?
每个Android项目都需要gradle才能从中生成apk 。Java和.xml文件。简而言之,gradle获取所有源文件(Java和XML)并应用适当的工具,例如,将Java文件转换为dex文件,然后将它们全部压缩为一个实际使用的称为apk的文件。
有两种类型的build.gradle脚本
- 顶级build.gradle
- 模块级build.gradle
顶级build.gradle
它位于项目根目录中,其主要函数是定义将应用于项目中所有模块的构建配置。它实现为:
// Top-level build file where you can add configuration
// options common to all sub-projects/modules.
buildscript
{
repositories
{
google()
jcenter()
}
dependencies
{
classpath 'com.android.tools.build:gradle:3.0.1'
// Do not place the application dependencies here;
// they belong to individual module build.gradle files
}
}
allprojects
{
repositories
{
google()
jcenter()
}
}
task clean(type
: Delete)
{
delete rootProject.buildDir
}
顶级build.gradle支持各种构建配置,例如:
- buildscript:此块用于配置Gradle的存储库和依赖项。
[注意:此处不包括依赖项。(这些将包含在模块级别的build.gradle中)]- 依赖关系: buildscript中的此块用于配置Gradle在项目过程中需要构建的依赖关系。
classpath 'com.android.tools.build:gradle:3.0.1'
此行将插件添加为gradle 3.0.1的类路径依赖项。
- 依赖关系: buildscript中的此块用于配置Gradle在项目过程中需要构建的依赖关系。
- allprojects:这是可以配置第三方插件或库的块。对于新创建的项目,默认情况下android studio包括JCenter和Google的maven存储库。
- 任务clean(type:Delete):每次运行项目时,此块都用于删除目录。这样,当有人修改某些配置文件(例如,需要完全清理的settings.gradle期间)时,项目将保持干净。
模块级build.gradle
Gradle脚本位于项目的project / module目录中,是定义所有依赖项和声明sdk版本的位置。该脚本在项目中具有许多功能,其中包括其他构建类型,以及在main / app清单或顶级build.gradle文件中的替代设置。它实现为:
// The first line in this file indicates
// the Android plugin is applied for Gradle to
// this build
apply plugin : 'com.android.application'
android
{
compileSdkVersion 26 defaultConfig
{
applicationId "example.mehakmeet.geeksforgeeks"
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
}
buildTypes
{
release
{
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies
{
implementation fileTree(include
: [ '*.jar' ], dir
: 'libs')
implementation 'com.android.support:appcompat-v7:26.1.0'
}
模块级别的build.gradle支持各种构建配置,例如:
- android:此块用于配置特定的android构建选项。
- compileSdkVersion –用于定义应用程序的API级别,并且应用程序可以使用此级别和较低级别的功能。
- defaultConfig:
- applicationId –用于标识发布应用程序的唯一ID。
- minSdkVersion –这定义了运行应用程序所需的最低API级别。
- targetSdkVersion –这定义了用于测试应用程序的API级别。
- versionCode –定义应用程序的版本代码。每次需要对应用程序进行更新时,都需要将版本代码增加1或更多。
- versionName –定义应用程序的版本名称。创建更新时,可以增加任何数量。
- buildTypes(发布):
- minifyEnabled –这将启用代码缩减以进行版本构建。
- proguardFiles –这将指定progaurd设置文件。
- 依赖项–此选项指定构建项目所需的依赖项。
顶层build.gradle文件和模块级build.gradle文件都是用于自动化android项目中任务的主要脚本文件,并且由Gradle用来从源文件生成APK。
参考: https : //developer.android.com/studio/build/