Thư viện hỗ trợ

Lưu ý: Với bản phát hành Android 9.0 (API cấp 28), có một phiên bản thư viện hỗ trợ mới có tên là AndroidX, một phần của Jetpack. Thư viện AndroidX chứa thư viện hỗ trợ hiện có và cũng bao gồm các thành phần Jetpack mới nhất.

Bạn có thể tiếp tục sử dụng thư viện hỗ trợ. Các cấu phần phần mềm cũ (những phiên bản 27 trở về trước và được đóng gói dưới dạng android.support.*) sẽ vẫn có trên Google Maven. Tuy nhiên, toàn bộ quá trình phát triển thư viện mới sẽ diễn ra trong thư viện AndroidX.

Bạn nên sử dụng thư viện AndroidX trong tất cả các dự án mới. Bạn cũng nên cân nhắc việc di chuyển các dự án hiện có sang AndroidX.

Khi phát triển các ứng dụng hỗ trợ nhiều phiên bản API, có thể bạn muốn có một cách thức tiêu chuẩn để cung cấp các tính năng mới hơn trên các phiên bản Android cũ hoặc dễ dàng quay lại chức năng tương đương. Thay vì tạo mã để xử lý các phiên bản nền tảng cũ, bạn có thể tận dụng các thư viện này để cung cấp lớp tương thích đó. Ngoài ra, Thư viện hỗ trợ cung cấp thêm các lớp và tính năng tiện lợi không có trong API Khung tiêu chuẩn để phát triển và hỗ trợ dễ dàng hơn trên nhiều thiết bị hơn.

Ban đầu là một thư viện nhị phân duy nhất cho ứng dụng, nhưng Thư viện hỗ trợ Android đã phát triển thành một bộ thư viện để phát triển ứng dụng. Hiện nay, nhiều thư viện trong số này là một phần mà bạn nên dùng (nếu không cần thiết) trong quá trình phát triển ứng dụng.

Tài liệu này cung cấp thông tin tổng quan về thư viện hỗ trợ để giúp bạn hiểu rõ các thành phần của thư viện này và cách sử dụng thư viện này sao cho hiệu quả trong ứng dụng.

Thận trọng: Kể từ bản phát hành Thư viện hỗ trợ 26.0.0 (tháng 7 năm 2017), cấp độ API tối thiểu được hỗ trợ trên hầu hết các thư viện hỗ trợ đã tăng lên Android 4.0 (API cấp 14) đối với hầu hết các gói thư viện. Để biết thêm thông tin, hãy xem phần Hỗ trợ phiên bản và tên gói trên trang này.

Cách dùng Thư viện hỗ trợ

Có một vài mục đích sử dụng riêng biệt cho thư viện hỗ trợ. Các lớp tương thích ngược cho các phiên bản cũ của nền tảng chỉ là một trong số đó. Dưới đây là danh sách đầy đủ hơn về cách bạn có thể dùng thư viện hỗ trợ trong ứng dụng:

  • Khả năng tương thích ngược cho các API mới hơn – Nhiều thư viện hỗ trợ cung cấp khả năng tương thích ngược cho các lớp và phương thức khung mới hơn. Ví dụ: lớp hỗ trợ Fragment sẽ hỗ trợ các mảnh trên thiết bị chạy phiên bản trước Android 3.0 (API cấp 11).
  • Lớp tiện lợi và lớp trợ giúp – Các thư viện hỗ trợ cung cấp một số lớp trợ giúp, đặc biệt là để phát triển giao diện người dùng. Ví dụ: lớp RecyclerView cung cấp một tiện ích giao diện người dùng để hiển thị và quản lý các danh sách rất dài, có thể sử dụng trên các phiên bản Android từ API cấp 7 trở lên.
  • Gỡ lỗi và tiện ích – Có một số tính năng cung cấp tiện ích ngoài mã bạn kết hợp vào ứng dụng, trong đó có thư viện support-annotations để cải thiện khả năng kiểm tra tìm lỗi mã nguồn mã trên dữ liệu đầu vào của phương thức và hỗ trợ Multidex để định cấu hình và phân phối ứng dụng với hơn 65.536 phương thức.

Sử dụng API Hỗ trợ so với API Khung

Thư viện hỗ trợ cung cấp các lớp và phương thức gần giống với các API trong Khung Android. Sau khi phát hiện vấn đề này, có thể bạn sẽ thắc mắc rằng nên sử dụng phiên bản khung của API hay thư viện hỗ trợ tương đương. Dưới đây là nguyên tắc về thời điểm bạn nên sử dụng các lớp thư viện hỗ trợ thay cho API khung:

  • Khả năng tương thích cho một tính năng cụ thể – Nếu bạn muốn hỗ trợ một tính năng mới đây của nền tảng trên các thiết bị đang chạy những phiên bản cũ của nền tảng, hãy sử dụng các lớp và phương thức tương đương trong thư viện hỗ trợ.
  • Khả năng tương thích cho các tính năng của thư viện liên quan – Các lớp thư viện hỗ trợ tinh vi hơn có thể phụ thuộc vào một hoặc nhiều lớp thư viện hỗ trợ bổ sung. Vì vậy, bạn nên sử dụng các lớp thư viện hỗ trợ cho các phần phụ thuộc đó. Ví dụ: bạn nên sử dụng lớp hỗ trợ ViewPager với các lớp hỗ trợ FragmentPagerAdapter hoặc FragmentStatePagerAdapter.
  • Khả năng tương thích chung của thiết bị – Nếu không có một tính năng cụ thể trên nền tảng mà bạn dự định dùng với ứng dụng theo cách tương thích ngược, bạn vẫn nên sử dụng các lớp thư viện hỗ trợ trong ứng dụng. Ví dụ: bạn nên sử dụng ActivityCompat thay cho lớp Activity khung để có thể tận dụng các tính năng mới hơn sau này, chẳng hạn như kết hợp mô hình quản lý quyền mới ra mắt trong Android 230 (API cấp 6.0).

Do các hạn chế của phiên bản nền tảng thiết bị lưu trữ, các lớp Thư viện hỗ trợ cung cấp cách triển khai tương thích cho các lớp API nền tảng có thể không cung cấp được bộ chức năng đầy đủ có trong bản phát hành mới nhất. Trong những trường hợp này, các lớp Thư viện hỗ trợ được thiết kế để xuống cấp nhẹ và có thể không cung cấp tất cả chức năng hoặc dữ liệu của API nền tảng hiện tại. Vì lý do này, bạn nên xem lại tài liệu tham khảo về các lớp và phương thức thư viện mà bạn sử dụng, đồng thời kiểm thử kỹ lưỡng trên các thiết bị chạy phiên bản cũ nhất của nền tảng mà ứng dụng của bạn hỗ trợ.

Lưu ý: Thư viện hỗ trợ không cung cấp các lớp và phương thức tương đương cho từng API khung. Trong một số trường hợp, bạn có thể cần gói lệnh gọi phương thức khung bằng hoạt động kiểm tra phiên bản SDK rõ ràng và cung cấp mã thay thế để xử lý các phương thức không có trên thiết bị. Để biết thêm thông tin về cách sử dụng tính năng kiểm tra phiên bản trong mã của bạn, hãy xem phần Hỗ trợ nhiều phiên bản nền tảng.

Hỗ trợ phiên bản và tên gói

Một số gói Thư viện hỗ trợ có tên gói để cho biết cấp độ tối thiểu của API mà ban đầu chúng hỗ trợ bằng cách dùng ký hiệu v#, chẳng hạn như gói support-v4. Kể từ Thư viện hỗ trợ phiên bản 26.0.0 (phát hành vào tháng 7 năm 2017), cấp độ API tối thiểu được hỗ trợ đã thay đổi thành Android 4.0 (API cấp 14) đối với tất cả các gói thư viện hỗ trợ. Vì lý do này, khi làm việc với bất kỳ bản phát hành thư viện hỗ trợ nào gần đây, bạn không nên giả định rằng ký hiệu gói v# cho biết mức hỗ trợ API tối thiểu. Thay đổi này trong các bản phát hành gần đây cũng có nghĩa là các gói thư viện có phiên bản 4 và v7 về cơ bản là tương đương về cấp độ API tối thiểu mà các gói này hỗ trợ. Ví dụ: cả gói support-v4 và gói support-v7 đều hỗ trợ cấp độ API tối thiểu là 14 cho các bản phát hành của Thư viện hỗ trợ từ 26.0.0 trở lên.

Phiên bản phát hành thư viện hỗ trợ

Phiên bản phát hành của Thư viện hỗ trợ (chẳng hạn như 24.2.0 hoặc 25.0.1) khác với cấp độ API tối thiểu mà mọi thư viện trong bản phát hành đó hỗ trợ.Số phiên bản phát hành cho biết phiên bản API nền tảng mà thư viện dùng để tạo bản phát hành và do đó, những API mới nhất có thể được đưa vào trong phiên bản thư viện này.

Cụ thể, phần đầu tiên của số phiên bản phát hành (ví dụ: phần 24 trong phiên bản 24.2.0) thường tương ứng với phiên bản API nền tảng có sẵn tại thời điểm phát hành. Cấp độ phiên bản phát hành của thư viện hỗ trợ cho biết thư viện tích hợp một số tính năng của cấp độ API đó. Tuy nhiên, bạn không nên giả định rằng thư viện này cung cấp khả năng tương thích với tất cả tính năng được phát hành trong phiên bản API nền tảng mới.

Phần phụ thuộc của thư viện

Hầu hết các thư viện trong bộ Thư viện hỗ trợ Android đều có một số phần phụ thuộc trên một hoặc nhiều thư viện. Ví dụ: gần như mọi thư viện hỗ trợ đều có phần phụ thuộc vào gói support-compat. Nhìn chung, bạn không cần lo lắng về các phần phụ thuộc của thư viện hỗ trợ, vì công cụ bản dựng gradle sẽ quản lý các phần phụ thuộc của thư viện cho bạn bằng cách tự động thêm các thư viện phụ thuộc.

Nếu bạn muốn xem những thư viện và phần phụ thuộc của thư viện nào có trong ứng dụng của mình, hãy chạy lệnh sau tại thư mục gốc của bản dựng của dự án phát triển ứng dụng để nhận báo cáo về các phần phụ thuộc cho dự án đó, bao gồm cả Thư viện hỗ trợ Android và các thư viện khác:

gradle -q dependencies your-app-project:dependencies

Để biết thêm thông tin về cách thêm thư viện hỗ trợ vào dự án phát triển của bạn bằng Gradle, hãy xem phần Thiết lập thư viện hỗ trợ. Để biết thêm thông tin về cách làm việc với Gradle, hãy xem phần Định cấu hình bản dựng.

Xin lưu ý rằng tất cả Thư viện hỗ trợ Android cũng phụ thuộc vào một số cấp độ cơ sở của nền tảng (đối với các bản phát hành gần đây) là Android 4.0 (API cấp 14) trở lên.