Mục Lục
1. Giới thiệu:
Tệp “build.gradle” trong Android Studio được sử dụng để cấu hình quy trình xây dựng (build) cho dự án. Một dự án thường có ít nhất hai tệp build.gradle: một ở cấp độ root (root-level) và một hoặc nhiều tệp khác ở cấp độ module (module-level). Dưới đây là sự khác biệt và chức năng của từng tệp:
2. build.gradle ở cấp độ root (root-level):
Tệp build.gradle ở cấp độ root thường chứa các cấu hình và khai báo dùng chung cho toàn bộ dự án. Nó bao gồm các thiết lập cho hệ thống build, repository, và các plugin được áp dụng cho toàn bộ dự án.
Ví dụ:
// Root-level build.gradle
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.0.0'
// Các dependency khác cho Gradle build script
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Các thành phần chính:
buildscript:
- repositories: Định nghĩa các kho lưu trữ nơi Gradle sẽ tìm kiếm các plugin và dependency.
- dependencies: Định nghĩa các plugin cần thiết cho việc xây dựng dự án, chẳng hạn như plugin Android Gradle.
allprojects:
- repositories: Định nghĩa các kho lưu trữ được sử dụng bởi tất cả các module trong dự án.
task clean: Định nghĩa một task tùy chỉnh để xóa thư mục build.
3. build.gradle ở cấp độ module (module-level):
Tệp build.gradle ở cấp độ module chứa các cấu hình xây dựng cụ thể cho từng module riêng lẻ (chẳng hạn như ứng dụng hoặc thư viện). Nó bao gồm các thiết lập về SDK, dependency, build types, và các cấu hình đặc thù khác cho module đó.
Ví dụ:
// Module-level build.gradle (app module)
apply plugin: 'com.android.application'
android {
compileSdkVersion 30
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 21
targetSdkVersion 30
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'com.google.android.material:material:1.3.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}
4. Các thành phần chính:
- apply plugin: Áp dụng plugin Android application để chỉ định đây là module ứng dụng.
- android:
- compileSdkVersion: Phiên bản SDK dùng để biên dịch ứng dụng.
- defaultConfig: Các cấu hình mặc định như applicationId, minSdkVersion, targetSdkVersion, versionCode, và versionName.
- buildTypes: Định nghĩa các kiểu build như release, bao gồm các thiết lập như minifyEnabled và proguardFiles.
- dependencies: Định nghĩa các dependency cụ thể cho module này, bao gồm các thư viện cần thiết cho quá trình phát triển, kiểm thử, và chạy ứng dụng.
5. So sánh:
- Phạm vi (Scope):
build.gradle
root-level: Cấu hình chung cho toàn bộ dự án, bao gồm các repository và plugin sử dụng bởi tất cả các module.build.gradle
module-level: Cấu hình riêng cho từng module, bao gồm các thiết lập cụ thể về build, dependency và các kiểu build.
- Mục đích (Purpose):
build.gradle
root-level: Quản lý các plugin, repository chung và các task build tùy chỉnh dùng cho toàn bộ dự án.build.gradle
module-level: Định nghĩa chi tiết về cách module cụ thể được build, bao gồm cấu hình SDK, applicationId, và dependency cụ thể cho module đó.
- Nội dung chính (Main Content):
build.gradle
root-level:buildscript
,allprojects
, các task build tùy chỉnh.build.gradle
module-level:apply plugin
,android {}
,dependencies {}
, các cấu hình build types.
6. Kết luận:
Tệp build.gradle
ở cấp độ root và module đều cần thiết cho việc xây dựng dự án Android. Tệp ở cấp độ root cung cấp các thiết lập và plugin chung, trong khi tệp ở cấp độ module cung cấp các cấu hình chi tiết cho từng module cụ thể. Sự phân chia này giúp quản lý dự án trở nên rõ ràng và dễ dàng hơn, đặc biệt là khi làm việc với các dự án lớn và phức tạp có nhiều module.
Xin chào,
99,99% bài viết tại website là kết quả của khai thác dữ liệu từ AI ChatGPT sau đó được lựa chọn, biên tập lại nội dung, chỉ vài bài là không dùng AI. Tôi lưu tại website này để tra cứu khi cần, để học và để chia sẻ cho bạn bè tôi. Nếu bạn tìm thấy nội dung nào đó khi tìm kiếm thì cứ đọc thoải mái, nó miễn phí, không quảng cáo.
Các bạn có thể tải app của tôi trên App Store hoặc Google Play:
QuestionBank-Ôn thi vào 10: phiên bản iOS, phiên bản Android
TypingTest by QuestionBank: phiên bản iOS, phiên bản Android
Xin cảm ơn,
Minh