Skip to Content
Android📚 Học lập trình AndroidGradle và DependenciesTổng quan về Gradle Build

Tổng quan về Gradle Build

Gradle là gì?

Gradle là hệ thống build (build system) mà Android sử dụng để biên dịch, đóng gói và quản lý các dự án. Khi bạn nhấn nút “Run” trong Android Studio, Gradle sẽ thực hiện hàng loạt công việc phía sau để tạo ra file APK hoặc AAB có thể cài đặt trên thiết bị.

📝 Lưu ý: Build system là công cụ chuyển đổi source code thành ứng dụng có thể chạy được. Quá trình này bao gồm: phân tích, biên dịch, liên kết và đóng gói ứng dụng.

Tại sao Android sử dụng Gradle?

Gradle cung cấp nhiều ưu điểm quan trọng cho việc phát triển Android:

Tính năngMô tả
Quản lý DependenciesTự động tải và quản lý các thư viện từ Maven repositories
Build VariantsTạo nhiều phiên bản ứng dụng (debug, release, flavors) từ một codebase
Incremental BuildsChỉ build lại những phần thay đổi, tiết kiệm thời gian
Convention over ConfigurationCung cấp cấu hình mặc định hợp lý, giảm thiểu boilerplate
ExtensibilityDễ dàng mở rộng thông qua plugins và custom tasks

Tasks và Plugins

Tasks

Task là đơn vị công việc cơ bản trong Gradle. Mỗi task thực hiện một công việc cụ thể như:

  • Biên dịch Kotlin code
  • Xử lý resources
  • Tạo file APK
  • Chạy tests

Các tasks được kết nối với nhau thông qua inputs và outputs, tạo thành một đồ thị có hướng không tuần hoàn (Directed Acyclic Graph - DAG).

# Xem danh sách tasks ./gradlew tasks # Chạy một task cụ thể ./gradlew assembleDebug

Plugins

Plugin đăng ký các tasks và cấu hình cần thiết cho một loại project cụ thể:

PluginMục đích
com.android.applicationBuild Android app (APK/AAB)
com.android.libraryBuild Android library (AAR)
org.jetbrains.kotlin.androidHỗ trợ Kotlin cho Android
org.jetbrains.kotlin.plugin.composeHỗ trợ Jetpack Compose compiler
// Khai báo plugins trong build.gradle.kts plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.compose) }

3 Phases của Gradle Build

Khi chạy một Gradle build, quá trình diễn ra qua 3 phases tuần tự:

1. Initialization Phase

Gradle xác định những projects và subprojects nào sẽ được build:

  • Đọc file settings.gradle.kts
  • Xác định root project và các modules
  • Thiết lập classpath cho plugins
// settings.gradle.kts rootProject.name = "MyApp" include(":app") include(":core:network") include(":feature:home")

2. Configuration Phase

Gradle đọc và thực thi các build scripts để cấu hình project:

  • Áp dụng plugins
  • Đăng ký tasks
  • Cấu hình dependencies
  • Chưa thực hiện bất kỳ build nào

⚠️ Quan trọng: Configuration phase chạy mỗi khi build, kể cả khi chỉ chạy task đơn giản như ./gradlew tasks. Vì vậy, tránh đặt logic nặng trong build scripts!

3. Execution Phase

Gradle thực hiện các tasks theo thứ tự đã xác định:

  • Xây dựng task graph từ dependencies
  • Chạy các tasks cần thiết
  • Bỏ qua tasks up-to-date (inputs chưa thay đổi)
# Xem task graph ./gradlew assembleDebug --dry-run

Configuration DSL

Gradle sử dụng Domain-Specific Language (DSL) để cấu hình builds. DSL cho phép bạn khai báo cái gì cần build thay vì cách build như thế nào.

Kotlin DSL vs Groovy DSL

Android hỗ trợ cả hai ngôn ngữ, nhưng khuyến nghị sử dụng Kotlin DSL vì:

So sánhKotlin DSL (.kts)Groovy DSL (.gradle)
Type safety✅ Có❌ Không
IDE support✅ Tốt hơn⚠️ Hạn chế
Auto-complete✅ Chính xác⚠️ Không đầy đủ
Error detection✅ Compile-time❌ Runtime
SyntaxKotlinGroovy

Ví dụ cấu hình Android block

// Kotlin DSL (build.gradle.kts) android { namespace = "com.example.app" compileSdk = 35 defaultConfig { applicationId = "com.example.app" minSdk = 24 targetSdk = 35 versionCode = 1 versionName = "1.0" } buildTypes { release { isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } }

Phía sau, DSL code tương đương với việc gọi các hàm Kotlin:

// Simplified internal representation fun Project.android(configure: ApplicationExtension.() -> Unit) { ... } interface ApplicationExtension { var namespace: String? var compileSdk: Int val defaultConfig: DefaultConfig fun defaultConfig(configure: DefaultConfig.() -> Unit) }

Android Gradle Plugin (AGP)

Android Gradle Plugin (AGP) là plugin chính mà Google cung cấp để build Android apps. AGP đăng ký tất cả các tasks cần thiết như:

  • compileDebugKotlin - Biên dịch Kotlin code
  • processDebugResources - Xử lý resources
  • assembleDebug - Tạo APK debug
  • bundleRelease - Tạo AAB release
// AGP được khai báo trong libs.versions.toml [versions] agp = "8.7.0" [plugins] android-application = { id = "com.android.application", version.ref = "agp" }

💡 Mẹo: Sử dụng AGP Upgrade Assistant trong Android Studio để nâng cấp AGP một cách an toàn: Tools → AGP Upgrade Assistant

Lệnh Gradle thường dùng

# Sync project (sau khi thay đổi build files) ./gradlew --refresh-dependencies # Build APK debug ./gradlew assembleDebug # Build APK release ./gradlew assembleRelease # Build AAB (Android App Bundle) ./gradlew bundleRelease # Clean build ./gradlew clean # Chạy tests ./gradlew test ./gradlew connectedAndroidTest # Xem dependencies ./gradlew :app:dependencies # Build với thông tin chi tiết ./gradlew assembleDebug --info

Bài viết tiếp theo

Trong các bài viết tiếp theo, chúng ta sẽ đi sâu vào từng khía cạnh của Gradle:

  1. Cấu trúc Build Files - Chi tiết các file build trong project
  2. Version Catalog - Quản lý versions tập trung
  3. Build Variants - Tạo nhiều phiên bản app
  4. Dependencies - Quản lý thư viện và dependencies

📚 Tham khảo

Last updated on