Gradle -> Gradle项目的生命周期

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阶段是实际执行任务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值