Android

Thư viện framework và thư viện support trong Android (Bài 3)

Chúng ta lại tiếp tục với loạt bài so sánh giữa thư viện framework và thư viện support. Ở các bài viết trước, chúng ta đã tìm hiểu về nguồn gốc và tầm quan trọng của thư viện support. Trong bài viết cuối cùng trong loạt bài về thư viện support, chúng tôi sẽ trình bày về cách hiểu về từng thư viện cụ thể.

android-design-support-library

Đầu tiên, bạn có thể hiểu được đâu là một class thuộc thư viện framework, đâu là một class tương ứng nằm trong thư viện support chỉ với việc nhìn qua tên của chúng. Rất dễ dàng: Mọi class thuộc thư viện support luôn nằm trong package android.support., nghĩa là ngay sau từ android là từ support. Trong khi đó, các class trong thư viện framework không chứa từ support trong package name. Chẳng hạn, chúng ta có class android.support.v7.app.AlertDialog là class nằm trong thư viện support, nó được resemble theo class android.app.AlertDialog trong thư viện framework.

Thứ hai, bạn có thể thấy sau cụm từ android.support. là từ v4, v7, thậm chí là v14, chẳng hạn như android.support.v4.ContextCompat, android.support.v14.CheckBoxPreference. Vậy các từ đó, hay đúng hơn là các con số 4, 7, 14 kia có nghĩa là gì?

Rất đơn giản, đó – trước đây – là các minAPI mà các thư viện support đó bắt đầu support. Nghĩa là các thư viện v4 bắt đầu hỗ trợ các API level 4 trở về sau, các thư viện v7 bắt đầu hỗ trợ các API level 7 trở về sau, tương tự cho API level 14 cho thư viện v14. Tuy nhiên, kể từ vesion 23.0.0, các thư viện v4v7 đã nâng mức yêu cầu minAPI lên mức 9. Nghĩa là nếu các bạn muốn dùng thư viện ContextCompat trong package android.support.v4.*, bạn cần nâng minAPI lên mức 9, tức Android 2.3 Gingerbread. Tuy nhiên – một lần nữa – cá nhân tôi không cho là điều này quá quan trọng, bởi lẽ đã không còn nhiều thiết bị vẫn đang chạy các phiên bản Android thấp hơn hơn phiên bản “Bánh gừng” kia nữa.

Tiếp theo là sub-package sau minimal required API, tức là từ đứng sau v4, v7, v14 kia là đến từ chỉ gói mà class xuất hiện sau nó được nhìn theo để resemble lại hoặc extends. Chẳng hạn, các class trong sub-package android.support.v7.widget sẽ được resemble các class trong android.widget, chẳng hạn class Toolbar; các class trong android.support.v7.app được resemble lại hoặc extends các class trong android.app.

Cuối cùng là phần tên class. Và tôi hoàn toàn tin rằng mình không cần giải thích gì thêm ở đây nữa.

Và để thông báo với Android Studio rằng bạn đang cần các thư viện support, và nhiệm vụ của Gradle là phải tự thêm các class kia vào project của bạn, bạn luôn cần dòng yêu cầu compile khá quen thuộc trong tập tin build.gradle (module app):

Trong đó, support-library-name chính là tên gói thư viện support mà bạn cần. Ở đây chúng tôi sẽ chỉ trình bày một số libs thường gặp ở người mới bắt đầu với việc lập trình Android. Nếu bạn đã có đầy đủ các kiến thức cơ bản và kinh nghiệm vận dụng, bạn có thể tham khảo danh sách đầy đủ trên trang Android Developer chính thức, ở đây.

v4 fragment library (com.android.support:support-fragment):

Các thư viện trong gói này sẽ cho phép các bạn sử dụng Fragments và các thao tác liên quan vốn xuất hiện trong Android 3.0 API 10 trở về sau, lên các phiên bản Android 2.3 (trước đây là 1.6).

v7 appcompat library (com.android.support:appcompat-v7):

Các thư viện trong gói này sẽ cho phép các bạn đem giao diện Material và Holo cùng các thao tác liên quan vốn xuất hiện trong Android 5.0 API 21 đối với Material và 4.0 API 14 đối với Holo trở về sau, lên các phiên bản Android 2.3 (trước đây là 2.1) trở về sau. Khi bạn yêu cầu thư viện này, toàn bộ thư viện v4 fragment sẽ được thêm vào vì bộ thư viện này đã bao hàm thư viện v4 fragment.

v7 cardview library (com.android.support:cardview-v7) và v7 recyclerview library (com.android.support:recyclerview-v7):

Các thư viện trong các gói này sẽ cho phép các bạn áp dụng CardView và RecyclerView vào project của mình. Và việc thực hiện yêu cầu compile bằng tay là điều cần thiết vì không có các class CardView và RecyclerView trong bất kì thư viện framework nào. Do đó, nếu bạn muốn sử dụng RecyclerView hoặc CardView, bạn cần yêu cầu compile.

v7 Preference Support Library (com.android.support:preference-v7) hoặc v14 Preference Support Library (com.android.support:preference-v14):

Các thư viện trong các gói này sẽ support cho việc bạn thiết kế về các Preferences trên các phiên bản Android 2.3 hoặc 3.0 API 11 trở về sau.

Design Support Library (com.android.support:design):

Gói này gồm toàn bộ các thư viện support về mặt thiết kế giao diện kể cả CardView và RecyclerView cũng như ViewPager. Do đó bạn không cần thiết phải yêu cầu compile bất kì thư viện hỗ trợ về việc thiết kế nào khác.

Và cuối cùng là phần revision.

Đây là số phiên bản revision của một thư viện support, chẳng hạn tại thời điểm này, tất cả các phiên bản revision mới nhất của các thư viện support là 25.1.0. Bạn chỉ cần lưu ý ở con số đầu tiên, con số major release, là đủ. Con số mới nhất luôn là tương ứng chính xác với mức API cao nhất tại thời điểm mà nó được phát hành. Chẳng hạn tại thời điểm bài viết này, mức API cao nhất hiện là 25, và do đó mọi thư viện support đều có phiên bản mới nhất bắt đầu từ con số 25, và ý nghĩa, chính là việc chúng được tạo dựng dựa trên API 25. Và mục tiêu của việc này là để đảm bảo các thư viện support sẽ hỗ trợ ít nhiều các hàm mới nhất vừa được thêm vào các thư viện framework tại mức API đó, cụ thể là 25 ở hiện tại.

Lời kết:

Như vậy là các bạn đã được hướng dẫn một cách khái quát về hệ thống thư viện support qua việc so sánh tương quan giữa chúng và các thư viện framework. Vẫn còn khá nhiều vấn đề mà các bạn cần phải nghiên cứu thêm để có thêm kiến thức và kinh nghiệm trong việc sử dụng linh hoạt nhất các thư viện support. Tất nhiên, mọi sự vật, sự việc, hiện tượng đều có tính hai mặt. Việc quá lạm dụng các thư viện support đôi khi không làm quá trình viết code dễ dàng hơn, trái lại, còn có thể tạo thêm các tình huống khó khăn mà bạn có thể mất rất nhiều thời gian để định vị vấn đề ở dòng nào, lí do tại sao code chạy không đúng để tìm ra cách khắc phục. Và hơn nữa, ứng dụng của bạn có thể có kích thước quá lớn một cách không đáng có (vui lòng nhớ lại ví dụ “hậu cần mà tôi đã nói trong phần đầu, bạn sẽ chọn chuẩn bị theo hướng đem theo sẵn thức ăn). Vì vậy, hãy linh hoạt trong việc chọn hướng đi tối ưu nhất.

Hẹn gặp lại các bạn trong các bài viết sau. Happy coding.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.