Phần 1 - Tìm hiểu hệ thống file gradle trong một ứng dụng Android
Bài đăng này đã không được cập nhật trong 3 năm
Gradle là một hệ thống build
mã nguồn mở được sử dụng cho Android từ khi Android Studio được ra mắt. Đây là một công cụ bổ sung nhiều tính năng cụ thể cho một ứng dụng Android như build types, flavors, signing configurations, library projects,...
Trong bài viết lần này mình và các bạn sẽ tìm hiểu cơ bản về các file gradle
trong một ứng dụng Android.
Để dễ hiểu chúng ta hãy tạo một project Android bằng Android Studio, cái này khá đơn giản nên mình không hướng dẫn nữa Khi khởi tạo xong project, chúng ta sẽ thấy có 3 file .gradle
chính: build.gradle, settings.gradle
và app/build.gradle
Sau đây chúng ta sẽ tìm hiểu về chức năng của từng file trên trong ứng dụng Android.
File settings.gradle
Mở file này chúng ta sẽ thấy
include ':app'
Câu lệnh include
trên thể hiện các module
mà ứng dụng sẽ sử dụng trong dự án. Ở đây lúc khởi tạo thì project của chúng ta sẽ có một module chính là app
. Nếu sau khi bạn thêm một module thì cũng cần khai báo ở file này để có thể sử dụng được cho dự án. Ví dụ:
include ':app', ':permission'
File build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Mặc định Gradle không bao gồm các tính năng của Android. Do đó, Google đã cung cấp một Android plugin cho Gradle để có thể dễ dàng cấu hình một Android project. Khối lệnh trong từ khóa buildscript thể hiện nơi mà Gradle có thể download plugin trên.
Như chúng ta thấy, mặc định plugin được download từ jcenter
(Bintray JCenter Artifactory repository). Một repository
khác mà được hỗ trợ và hay dùng nhất khác là mavenCentral (Maven Repository). Tất cả các plugin từ JCenter đều được sử dụng thông qua CDN với phương thức kết nối HTTPS. Điều này tăng khả năng bảo mật và tốc độ download nhanh hơn.
Gradle cho phép chúng ta tạo các task của riêng chúng ta. Mặc định ở trên, khi khởi tạo project, một task clean
đã được thêm vào build.gradle. Dòng type: Delete
chỉ ra rằng task clean
là một loạt task Delete
của Gradle. Trong trường hợp trên, clean
task sẽ xóa bỏ thư mục build
từ thư mục root
của project.
File app/build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion "26.0.0"
defaultConfig {
applicationId "tuannt.myapplication"
minSdkVersion 14
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
compile 'com.android.support:cardview-v7:26.0.0-alpha1'
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
}
File app/build.gradle được sử dụng cho riêng module app
, mỗi module sẽ có một file build.gradle riêng.
Dòng đầu tiên thể hiện đây là một Android Application module (module chính để chạy project Android), ngoài ra nếu chúng ta sử dụng java module thì sẽ là
apply plugin: 'java'
hoặc android module
apply plugin: 'com.android.library'
Khối lệnh nằm trong android
thể hiện các cấu hình cho module app, chi tiết chúng ta sẽ tìm hiểu trong phần 2 nhé
Cuối cùng là khối lệnh nằm trong dependencies
, đây là nơi khai báo các thư viện, các module mà chúng ta sẽ sử dụng trong project:
fileTree dependency
có nghĩa là tất cả các file.jar
nằm trong thư mụclibs
sẽ được thêm vàocompile classpath
.androidTestCompile
vàtestCompile
thể hiện các thư viện được sử dụng đểtest
trong project.compile
thể hiện các module, các thư viện (kèm các version) mà chúng ta sẽ sử dụng trong project.
Kết luận
Trên đây là cơ bản về các tệp tin gradle trong Android project và chức năng của chúng. Ở phần 2 chúng ta sẽ tiếp tục tìm hiểu chi tiết hơn về cách cấu hình trong app/build.gradle cho project của chúng ta.
Cảm ơn các bạn đã đọc bài viết. Happy Coding!
All rights reserved