Tệp settings.gradle: Quản Lý Dự Án Toàn Cục
Tệp cấu hình chính tại thư mục gốc quyết định cách Gradle khởi tạo dự án. Cấu trúc điển hình bao gồm:
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
flatDir {
dirs 'third_party_libs'
}
}
}
rootProject.name = 'UngDungMau'
include ':ThanhToan'
include ':chinh'
Chi Tiết Khối pluginManagement
Khối này định nghĩa kho lưu trữ cho Gradle tìm kiếm plugin. Thứ tự khai báo quan trọng vì Gradle sẽ kiểm tra lần lượt:
pluginManagement {
repositories {
// Ưu tiên kho chính thức trước
gradlePluginPortal()
google()
maven { url 'https://internal.repo/maven2' }
}
plugins {
id 'com.android.application' version '8.0.0' apply false
id 'org.jetbrains.kotlin.jvm' version '1.8.0' apply false
}
}
Lưu ý: Khối này phải là phần đầu tiên trong tệp settings.gradle. Cấu hình này thay thế cho khối buildscript trong phiên bản Gradle cũ.
Quản Lý Phụ Thuộc Toàn Dự Án
Khối dependencyResolutionManagement kiểm soát nguồn phụ thuộc cho tất cả module:
dependencyResolutionManagement {
versionCatalogs {
libs {
version('coroutines', '1.7.3')
version('retrofit', '2.9.0')
alias('network-core').to('com.squareup.retrofit2', 'retrofit').versionRef('retrofit')
alias('coroutines-android').to('org.jetbrains.kotlinx', 'kotlinx-coroutines-android').versionRef('coroutines')
}
}
}
Tham số repositoriesMode có hai chế độ hoạt động:
RepositoriesMode.PREFER_PROJECT: Ưu tiên kho cục bộ trướcRepositoriesMode.FAIL_ON_PROJECT_REPOS: Chỉ sử dụng kho từ settings, bỏ qua cấu hình module
Tệp build.gradle tại Thư Mục Gốc
Tệp này quản lý cấu hình chung cho toàn bộ dự án. Cấu trúc tiêu chuẩn:
// Khai báo biến toàn cục
ext {
androidCompileSdk = 34
kotlinCompiler = '1.8.0'
networkVersion = '2.9.0'
}
// Đăng ký plugin chung
plugins {
id 'com.android.application' version '8.0.0' apply false
id 'org.jetbrains.kotlin.android' version kotlinCompiler apply false
}
// Xóa thư mục build
tasks.register('cleanProject', Delete) {
delete layout.buildDirectory
}
Quy Tắc Triển Khai Plugin
Trong khối plugins:
- Thuộc tính
apply falsengăn plugin tự động kích hoạt - Chỉ các plugin được khai báo ở đây mới có sẵn cho module con
- Phiên bản plugin phải tương thích với Gradle hiện tại
Cấu Hình Module Con
Ví dụ cho module ứng dụng chính:
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
}
android {
namespace 'com.example.mainapp'
compileSdk androidCompileSdk
defaultConfig {
minSdk 24
targetSdk androidCompileSdk
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled true
proguardFiles 'proguard-rules.pro'
}
}
}
dependencies {
implementation libs.network.core
implementation libs.coroutines.android
testImplementation 'junit:junit:4.13.2'
}
Các biến toàn cục (androidCompileSdk) được kế thừa từ tệp gốc, giúp thống nhất phiên bản giữa các module.
Chiến Lược Kết Hợp Cấu Hình
Hai phương án tối ưu được khuyến nghị:
Phương Án 1: Tập Trung Quản Lý Phụ Thuộc
Toàn bộ cấu hình kho và phiên bản được định nghĩa trong settings.gradle:
// settings.gradle
dependencyResolutionManagement {
versionCatalogs {
libs {
version('hilt', '2.48.1')
alias('di-core').to('com.google.dagger', 'hilt-android').versionRef('hilt')
}
}
}
// build.gradle (gốc)
plugins {
id 'com.android.application' version '8.0.0' apply false
}
Phương Án 2: Phân Tầng Cấu Hình
settings.gradle chỉ khai báo module cơ bản:
// settings.gradle
include ':core', ':feature-payment', ':feature-auth'
Trong khi build.gradle (gốc) quản lý kho phụ thuộc:
allprojects {
repositories {
google()
mavenCentral()
maven { url "https://internal.artifactory/libs" }
}
}
Phương án này phù hợp cho dự án có nhiều module với yêu cầu phụ thuộc khác biệt.