官方文档:
https://developer.android.com/studio/build
Gradle 是一个构建系统(开源),用于自动化构建、测试、部署等。“build.gradle”是可以自动化任务的脚本。例如,将一些文件从一个目录复制到另一个目录的简单任务可以在实际构建过程发生之前由 Gradle 构建脚本执行。
为什么需要 Gradle?
每个 Android 项目都需要一个 Gradle,用于从项目中的.java和.xml文件生成 apk。简单地说,一个 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()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.3'
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
顶层 build.gradle 支持各种构建配置,例如:
buildscript:此块用于配置 Gradle 的存储库和依赖项。
注意:不要在此处包含依赖项。(这些将包含在模块级 build.gradle 中)
dependencies: buildscript 中的这个块用于配置 Gradle 在项目期间需要构建的依赖项。
classpath 'com.android.tools.build:gradle:3.0.1'
此行将插件添加为 gradle 3.0.1 的类路径依赖项。
- allprojects:这是可以配置第三方插件或库的块。对于新创建的项目,android studio 默认包含 mavenCentral() 和 Google 的 maven 存储库。
- task clean(type:Delete):此块用于每次项目运行时删除目录。这样,当有人修改一些配置文件时,项目会保持干净,例如在 settings.gradle 期间需要完全清洁。
模块级 build.gradle:
这个 Gradle 脚本位于项目的项目/模块目录中,是定义所有依赖项和声明 SDK 版本的地方。该脚本在项目中有许多功能,包括额外的构建类型和主/应用清单或顶级 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 30
buildToolsVersion "30.0.3"
{
applicationId "example.mehakmeet.geeksforgeeks"
minSdkVersion 19
targetSdkVersion 30
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 级别,应用程序可以使用此级别及更低级别的功能。
- 默认配置:
- applicationId – 这用于标识发布应用程序的唯一 ID。
- minSdkVersion – 这定义了运行应用程序所需的最低 API 级别。
- targetSdkVersion – 这定义了用于测试应用程序的 API 级别。
- versionCode – 这定义了应用程序的版本代码。每次需要更新应用程序时,版本代码都需要增加 1 或更多。
- versionName – 这定义了应用程序的版本名称。在创建更新时,这可能会增加很多。
- 构建类型(发布):
- minifyEnabled – 这将为发布构建启用代码收缩。
- proguardFiles – 这将指定progaurd设置文件。
- 依赖项:这指定了构建项目所需的依赖项。
顶级和模块级 build.gradle 文件都是用于在 android 项目中自动执行任务的主要脚本文件,Gradle 使用它们从源文件生成 APK。