在Gradle
中,构建生命周期分为三个主要阶段:初始化(Initialization
)、配置(Configuration
)和执行(Execution
)。每个阶段涉及不同的文件和任务处理方式,项目工程文件树
gradleProject/
|-- app/
| |-- src/
| | |-- main/
| | | |-- AndroidManifest.xml
| | | |-- java/
| | | | `-- com.yang.gradleDemo/
| | | | `-- MainActivity.java
| | | `-- res/
| | | `-- layout/
| | | `-- activity_main.xml
| |-- build.gradle
|-- build.gradle
|-- settings.gradle
初始化(Initialization
)
- 作用:
- 确定参与构建的项目
- 相关文件:
settings.gradle
pluginManagement { // 配置插件管理,包括插件仓库 repositories { // 指定用于解析插件的仓库 google() // Google 的 Maven 仓库,常用于 Android 相关插件 mavenCentral() // Maven 中央仓库,广泛用于各种 Java 和 Kotlin 插件 gradlePluginPortal() // Gradle 官方的插件门户,包含各种 Gradle 插件 } } dependencyResolutionManagement { // 配置依赖解析管理,包括依赖项仓库 repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) // 设置仓库模式为 FAIL_ON_PROJECT_REPOS,防止在项目级别配置仓库 repositories { // 指定用于解析依赖项的仓库 google() // Google 的 Maven 仓库,常用于 Android 相关库 mavenCentral() // Maven 中央仓库,广泛用于各种 Java 和 Kotlin 库 } } rootProject.name = "gradleDemo" // 设置根项目的名称为 "gradleDemo" include ':app' // 包含名为 ":app" 的子项目或模块
配置(Configuration
)
- 作用:
- 执行构建脚本中的所有配置代码,创建和配置任务,但不执行,设置项目属性、依赖管理
- 定义了全局的构建配置和依赖项管理,包括各个模块的构建依赖和构建配置。
plugins
块用于声明项目或模块所需的插件及其版本,apply false
来延迟应用提高项目的构建管理效率
- 相关文件:
build.gradle(项目级别)
:plugins { id 'com.android.application' version '8.1.3' apply false id 'org.jetbrains.kotlin.android' version '1.9.0' apply false }
build.gradle(app级别)
:plugins { id 'com.android.application' // 应用 Android 应用程序插件,用于构建 Android 应用 id 'org.jetbrains.kotlin.android' // 应用 Kotlin Android 插件,用于支持在 Android 项目中使用 Kotlin 编程语言 } android { namespace 'com.yang.gradleDemo' // 定义应用程序的命名空间,用于生成 R 类和其他资源 compileSdk 33 defaultConfig { applicationId "com.yang.gradleDemo" // 应用程序的唯一标识符 minSdk 24 targetSdk 33 versionCode 1 // 应用程序的版本代码,用于内部版本管理 versionName "1.0" // 应用程序的版本名称,显示给用户 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" // 指定用于运行仪器测试的测试运行器 } buildTypes { release { // 定义发布版本的构建类型 minifyEnabled false // 是否启用代码缩减(ProGuard/R8),这里设置为不启用 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // 指定 ProGuard 配置文件,用于代码混淆和优化 } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 // 指定 Java 源代码的兼容性版本 targetCompatibility JavaVersion.VERSION_1_8 // 指定编译后的字节码的兼容性版本 } kotlinOptions { jvmTarget = '1.8' // 指定 Kotlin 编译器生成与 Java 8 兼容的字节码 } } // 各种依赖 dependencies { implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.8.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' }
执行(Execution
)
- 作用:
- 执行已配置的任务,根据任务的依赖关系按顺序执行,如编译Java/Kotlin代码、处理资源、打包APK
- 具体任务包括
assembleDebug、assembleRelease、clean
- 相关文件:
build.gradle(项目级别)定义的Task部分
build.gradle(app级别定义的Task部分)
Android Studio中的Terminal中的gradle指令
./gradlew assembleRelease
:构建release
版本./gradlew assembleDebug
:构建debug
版本./gradlew clean
:删除项目的构建目录,确保从一个干净的状态开始./gradlew build
:执行完整的构建流程,包括编译代码、运行测试和打包等
Gradle
生命周期总结
Initialization
阶段主要是识别项目结构。Configuration
阶段是设置和准备任务。Execution
阶段是实际执行任务