自学内容网 自学内容网

Android开发实战班 - Gradle 构建系统入门

Gradle 构建系统入门

Gradle 是一个基于 Groovy 和 Kotlin 的自动化构建工具,广泛应用于 Android 项目的构建、依赖管理和构建自动化。Gradle 以其灵活性和高性能,成为 Android Studio 默认的构建系统。本章节将带领学员了解 Gradle 的基本概念、构建脚本的编写以及在 Android 项目中的应用,为后续深入学习 Gradle 高级功能打下基础。

3.1 Gradle 简介

  • Gradle 的历史与发展

    • Gradle 由 Hans Dockter 等人于 2007 年创建,最初用于 Java 项目构建。
    • 2013 年,Google 宣布 Android Studio 默认使用 Gradle 作为构建系统。
    • Gradle 支持多语言、多平台,广泛应用于 Android、Java、Kotlin、Groovy 等项目。
  • Gradle 的优势

    • 基于 Groovy/Kotlin 的 DSL: 构建脚本使用 Groovy 或 Kotlin 编写,语法简洁灵活。
    • 插件化架构: Gradle 提供了丰富的插件,可以扩展构建功能。
    • 依赖管理: 内置强大的依赖管理功能,支持 Maven、Ivy 等仓库。
    • 增量构建: 只构建发生变化的部分,提高构建速度。
    • 构建缓存: 缓存构建结果,避免重复构建。

3.2 Gradle 基本概念

  • 项目 (Project)

    • Gradle 构建的基本单元,一个项目可以包含多个任务。
    • 在 Android 项目中,每个模块 (module) 就是一个 Gradle 项目。
  • 任务 (Task)

    • 任务的最小执行单元,例如编译代码、打包 APK 等。
    • 任务之间可以存在依赖关系。
  • 插件 (Plugin)

    • Gradle 插件用于扩展构建功能,例如 Android 插件提供了 Android 项目构建所需的配置和任务。
  • 构建脚本 (Build Script)

    • 使用 Groovy 或 Kotlin 编写的脚本文件,用于配置项目和任务。
    • Android 项目中常见的构建脚本文件有 build.gradlesettings.gradle

3.3 Gradle 构建脚本

3.3.1 项目级 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:8.0.2"
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    
    allprojects {
        repositories {
            google()
            mavenCentral()
        }
    }
    
  • 配置仓库 (Repositories)

    • Gradle 从仓库中下载依赖包,常见的仓库有 Maven Central 和 Google Maven Repository。
  • 配置依赖 (Dependencies)

    • 项目级依赖通常用于插件,例如 Android Gradle 插件。
3.3.2 模块级 build.gradle
  • 应用 Android 插件

    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 33
    
        defaultConfig {
            applicationId "com.example.myapp"
            minSdkVersion 21
            targetSdkVersion 33
            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 'androidx.appcompat:appcompat:1.6.1'
        implementation 'com.google.android.material:material:1.9.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'
    }
    
  • 配置 Android 项目

    • compileSdkVersion: 编译 SDK 版本。
    • defaultConfig: 配置应用 ID、最小 SDK 版本、目标 SDK 版本等。
    • buildTypes: 配置构建类型,例如 releasedebug
  • 配置依赖

    • implementation: 编译时依赖,运行时也依赖。
    • testImplementation: 测试依赖。
    • androidTestImplementation: Android 测试依赖。
3.3.3 settings.gradle
  • 配置项目结构

    include ':app'
    
  • 配置仓库

    dependencyResolutionManagement {
        repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
        repositories {
            google()
            mavenCentral()
        }
    }
    

3.4 Gradle 常用命令

  • ./gradlew build: 编译项目并打包 APK。
  • ./gradlew clean: 清理构建输出。
  • ./gradlew assembleDebug: 编译并打包 Debug 版本的 APK。
  • ./gradlew assembleRelease: 编译并打包 Release 版本的 APK。
  • ./gradlew dependencies: 查看项目依赖树。
  • ./gradlew tasks: 查看所有可用的 Gradle 任务。

3.5 Gradle 依赖管理

  • 依赖类型

    • implementation: 编译时依赖,运行时也依赖。
    • api: 编译时依赖,运行时也依赖,并且依赖传递。
    • compileOnly: 仅编译时依赖,运行时不依赖。
    • runtimeOnly: 仅运行时依赖,编译时不依赖。
  • 依赖冲突解决

    • Gradle 会自动解决依赖冲突,优先使用最新版本的依赖。
    • 可以使用 exclude 排除特定依赖。
      implementation('com.example:library:1.0') {
          exclude group: 'com.example', module: 'conflict'
      }
      

3.6 Gradle 插件

  • 插件的作用

    • 扩展 Gradle 构建功能,例如 Android 插件提供了 Android 项目构建所需的配置和任务。
  • 插件的应用

    • 使用 apply plugin 应用插件。
      apply plugin: 'com.android.application'
      
  • 常用插件

    • com.android.application: Android 应用插件。
    • com.android.library: Android 库插件。
    • kotlin-android: Kotlin Android 插件。

3.7 课后作业

  1. 任务一:创建一个新的 Android 项目

    • 使用 Android Studio 创建一个新的 Android 项目。
    • 配置 build.gradle 文件,添加常用依赖,例如 AppCompat, Material Design, ConstraintLayout 等。
    • 运行项目,确保依赖正确下载和配置。
  2. 任务二:配置 Gradle 构建类型

    • build.gradle 文件中,配置 releasedebug 构建类型。
    • release 构建类型启用代码混淆和资源压缩。
    • 使用 ./gradlew assembleRelease 命令打包 Release 版本的 APK。
  3. 任务三:管理项目依赖

    • build.gradle 文件中,添加一个新的依赖,例如 Retrofit。
    • 使用 ./gradlew dependencies 命令查看项目依赖树。
    • 解决依赖冲突,例如排除特定版本的依赖。
  4. 任务四:自定义 Gradle 任务

    • build.gradle 文件中,定义一个新的 Gradle 任务,例如 cleanCache,用于清理 Gradle 缓存。
    • 使用 ./gradlew cleanCache 命令执行自定义任务。

通过本章节的学习,学员将能够理解 Gradle 构建系统的基础概念,掌握 Gradle 构建脚本的编写方法,并能够配置和管理 Android 项目的构建过程。

作者简介

前腾讯电子签的前端负责人,现 whentimes tech CTO,专注于前端技术的大咖一枚!一路走来,从小屏到大屏,从 Web 到移动,什么前端难题都见过。热衷于用技术打磨产品,带领团队把复杂的事情做到极简,体验做到极致。喜欢探索新技术,也爱分享一些实战经验,帮助大家少走弯路!

温馨提示:可搜老码小张公号联系导师


原文地址:https://blog.csdn.net/bravekingzhang/article/details/143893162

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!