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.gradle
和settings.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
: 配置构建类型,例如release
和debug
。
-
配置依赖:
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 课后作业
-
任务一:创建一个新的 Android 项目
- 使用 Android Studio 创建一个新的 Android 项目。
- 配置
build.gradle
文件,添加常用依赖,例如 AppCompat, Material Design, ConstraintLayout 等。 - 运行项目,确保依赖正确下载和配置。
-
任务二:配置 Gradle 构建类型
- 在
build.gradle
文件中,配置release
和debug
构建类型。 - 为
release
构建类型启用代码混淆和资源压缩。 - 使用
./gradlew assembleRelease
命令打包 Release 版本的 APK。
- 在
-
任务三:管理项目依赖
- 在
build.gradle
文件中,添加一个新的依赖,例如 Retrofit。 - 使用
./gradlew dependencies
命令查看项目依赖树。 - 解决依赖冲突,例如排除特定版本的依赖。
- 在
-
任务四:自定义 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)!