Android Architecture Components là một đóng gói tất cả các thư viện hữu ích, mạnh mẽ giúp các lập trình viên thiết kế các ứng dụng android theo đúng mô hình kiến trúc dễ bảo trì, tăng khả năng kiểm thử lỗi giúp các module trong ứng dụng được tách biệt minh bạch giữa các thành phần giao diện và xử lý dữ liệu trong quá trình phát triển cũng như mở rộng và thêm tính năng cho ứng dụng.

Chuẩn kiến trúc thiết kế được Google gợi ý.

Như các bạn đã biết từ lúc ra  năm 2008 đến nay trên thế giới đã có hàng tỷ thiết bị chạy trên hệ điều hành Android. Tuy nhiên có lẽ do vấn đề gấp rút cần phải có một hệ điều hành cạnh tranh vói IOS của Apple mà Google chưa đưa ra được một chuẩn kiến trúc nào trong quá trình phát triển các ứng dụng cho nền tảng này dành cho các developers. Tuy nhiên vào sự kiện Google Io/2017 cùng với việc công bố Kotlin là ngôn ngữ chính thức dành cho Android, Google cũng đã tung ra Android Architecture Components một bộ tập hợp các thư viện giúp chuẩn hóa kiến trúc phát triển các ứng dụng Android.

Thêm Android Architecture Components vào ứng dụng của bạn

Theo mặc định khi tạo một project bằng Android Studio thì các tính năng của Android Architecture Components chưa được add vào project của bạn, để có thể sử dụng bạn cần kích hoạt theo các bước sau:

Tìm đến file cấu hình build.gradle của project (lưu ý build.gradle có 2 file, 1 dành cho project và 1 dành cho app)  thêm vào cấu trúc đoạn code màu đỏ như sau:

allprojects {
    repositories {
        jcenter()
        google()
    }
}

Trong file cấu hình build.gradle của app thêm vào các thư viện phù hợp với dụng đang phát triển. Theo Google công bố Android Architecture Components bao gồm 4 thành phần chính:

  1. LifeCycle
  2. Room
  3. LiveData
  4. ViewModel
  5. Paging

Bạn chỉ việc thêm các thư viện cần thiết cho ứng dụng của mình bằng cách khai báo sau:

dependencies {
    // ViewModel and LiveData
    implementation "android.arch.lifecycle:extensions:1.1.1"
    // alternatively, just ViewModel
    implementation "android.arch.lifecycle:viewmodel:1.1.1"
    // alternatively, just LiveData
    implementation "android.arch.lifecycle:livedata:1.1.1"

    annotationProcessor "android.arch.lifecycle:compiler:1.1.1"

    // Room (use 1.1.0-beta3 for latest beta)
    implementation "android.arch.persistence.room:runtime:1.0.0"
    annotationProcessor "android.arch.persistence.room:compiler:1.0.0"

    // Paging
    implementation "android.arch.paging:runtime:1.0.0-rc1"

    // Test helpers for LiveData
    testImplementation "android.arch.core:core-testing:1.1.1"

    // Test helpers for Room
    testImplementation "android.arch.persistence.room:testing:1.0.0"
}

Lưu ý:

  • Sử dụng kaptthay vì annotationProcessor, nên thêm kotlin-kaptplugin nếu sử dụng Kotlin.
  • Nếu ứng dụng bạn đang phát triển dựa trên Java 8, thay thế android.arch.lifecycle:compiler bằng:
dependencies {
    // Java8 support for Lifecycles
    implementation "android.arch.lifecycle:common-java8:1.1.1"
}

Thêm hỗ trợ RxJava và ReactiveStreams cho Room

dependencies {
    // RxJava support for Room (use 1.1.0-beta3 for latest beta)
    implementation "android.arch.persistence.room:rxjava2:1.0.0"

    // ReactiveStreams support for LiveData
    implementation "android.arch.lifecycle:reactivestreams:1.1.1"

    // RxJava support for Paging
    implementation "android.arch.paging:rxjava2:1.0.0-alpha1"
}

Thêm hỗ trợ Guava cho Room

dependencies {
    // Guava support for Room
    implementation "android.arch.persistence.room:guava:1.1.0-beta3"
}

Chỉ thêm bộ thư viện hỗ trợ Lifecycles

dependencies {
    // Lifecycles only (no ViewModel or LiveData)
    implementation "android.arch.lifecycle:runtime:1.1.1"
    annotationProcessor "android.arch.lifecycle:compiler:1.1.1"
}

 

About the author

Kevin Dang

Hey there! My name is Kevin Dang, I am website, software, mobile app develop, web admin system. Expert living in Hồ Chí Minh (Việt Nam). I am very interested in digital marketing with: SEO, Facebook, Google Ads ... This blog is where I will share the experiences, techniques and knowledge I have learned.