Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Kiến trúc Android

Kiến trúc hệ thống Android chứa các thành phần sau:

Tổng quan về kiến ​​trúc hệ thống Android
Hình 1. Kiến trúc hệ thống Android
  • Khung ứng dụng . Khung ứng dụng được các nhà phát triển ứng dụng sử dụng thường xuyên nhất. Là một nhà phát triển phần cứng, bạn nên biết các API của nhà phát triển vì nhiều API ánh xạ trực tiếp đến các giao diện HAL bên dưới và có thể cung cấp thông tin hữu ích về việc triển khai các trình điều khiển.
  • Chất kết dính IPC . Cơ chế Binder Inter-Process Communication (IPC) cho phép khuôn khổ ứng dụng vượt qua ranh giới quy trình và gọi vào mã dịch vụ hệ thống Android. Điều này cho phép các API khung cấp cao tương tác với các dịch vụ hệ thống Android. Ở cấp khung ứng dụng, giao tiếp này bị ẩn khỏi nhà phát triển và mọi thứ dường như "chỉ hoạt động".
  • Các dịch vụ hệ thống . Dịch vụ hệ thống là các thành phần tập trung, theo mô-đun như Trình quản lý cửa sổ, Dịch vụ tìm kiếm hoặc Trình quản lý thông báo. Chức năng được thể hiện bởi khung ứng dụng API giao tiếp với các dịch vụ hệ thống để truy cập vào phần cứng bên dưới. Android bao gồm hai nhóm dịch vụ: hệ thống (chẳng hạn như Trình quản lý cửa sổ và Trình quản lý thông báo) và phương tiện (các dịch vụ liên quan đến phát và ghi phương tiện).
  • Lớp trừu tượng phần cứng (HAL) . HAL xác định một giao diện tiêu chuẩn để các nhà cung cấp phần cứng triển khai, điều này cho phép Android không có khả năng triển khai trình điều khiển cấp thấp hơn. Sử dụng HAL cho phép bạn triển khai chức năng mà không ảnh hưởng hoặc sửa đổi hệ thống cấp cao hơn. Các triển khai HAL được đóng gói thành các mô-đun và được tải bởi hệ thống Android vào thời điểm thích hợp. Để biết chi tiết, hãy xem Lớp trừu tượng phần cứng (HAL) .
  • Nhân Linux . Phát triển trình điều khiển thiết bị của bạn tương tự như phát triển trình điều khiển thiết bị Linux điển hình. Android sử dụng phiên bản của nhân Linux với một số bổ sung đặc biệt như Low Memory Killer (hệ thống quản lý bộ nhớ tích cực hơn trong việc bảo tồn bộ nhớ), khóa đánh thức (một dịch vụ hệ thống PowerManager ), trình điều khiển IPC Binder và các tính năng quan trọng khác. cho một nền tảng nhúng di động. Những bổ sung này chủ yếu dành cho chức năng hệ thống và không ảnh hưởng đến việc phát triển trình điều khiển. Bạn có thể sử dụng bất kỳ phiên bản nào của hạt nhân miễn là nó hỗ trợ các tính năng cần thiết (chẳng hạn như trình điều khiển chất kết dính). Tuy nhiên, chúng tôi khuyên bạn nên sử dụng phiên bản mới nhất của nhân Android. Để biết chi tiết, hãy xem Hạt nhân xây dựng .

Ngôn ngữ định nghĩa giao diện HAL (AIDL / HIDL)

Android 8.0 đã tái cấu trúc lại khung hệ điều hành Android (trong một dự án được gọi là Treble ) để giúp các nhà sản xuất cập nhật thiết bị lên phiên bản Android mới dễ dàng hơn, nhanh hơn và ít tốn kém hơn. Trong kiến ​​trúc mới này, ngôn ngữ định nghĩa giao diện HAL (HIDL, phát âm là "hide-l") chỉ định giao diện giữa HAL và người dùng của nó, cho phép thay thế khung Android mà không cần xây dựng lại HAL. Trong Android 10, các tính năng HIDL đã được tích hợp vào AIDL. Kể từ đó, HIDL không được dùng nữa và chỉ được sử dụng bởi các hệ thống con chưa chuyển đổi thành AIDL.

Treble tách việc triển khai của nhà cung cấp (phần mềm cấp thấp hơn dành riêng cho thiết bị do các nhà sản xuất silicon viết) khỏi khung hệ điều hành Android thông qua giao diện nhà cung cấp mới. Các nhà cung cấp hoặc nhà sản xuất SOC xây dựng HAL một lần và đặt chúng vào phân vùng /vendor trên thiết bị; khung, trong phân vùng riêng của nó, sau đó có thể được thay thế bằng bản cập nhật qua mạng (OTA) mà không cần biên dịch lại HAL.

Sự khác biệt giữa kiến ​​trúc Android cũ và kiến ​​trúc dựa trên IDL hiện tại là ở việc sử dụng giao diện của nhà cung cấp:

  • Trong Android 7.x trở về trước, không có giao diện nhà cung cấp chính thức nào tồn tại, vì vậy các nhà sản xuất thiết bị phải cập nhật một phần lớn mã Android để chuyển thiết bị sang phiên bản Android mới hơn:

    Hình 2. Môi trường cập nhật Android cũ
  • Trong Android 8.0 trở lên, giao diện nhà cung cấp ổn định mới cung cấp quyền truy cập vào các bộ phận dành riêng cho phần cứng của Android, vì vậy, các nhà sản xuất thiết bị có thể cung cấp các bản phát hành Android mới chỉ đơn giản bằng cách cập nhật khung hệ điều hành Android — mà không cần các nhà sản xuất silicon bổ sung:

    Hình 3. Môi trường cập nhật Android hiện tại

Tất cả các thiết bị mới chạy Android 8.0 trở lên đều có thể tận dụng lợi thế của kiến ​​trúc mới. Để đảm bảo khả năng tương thích chuyển tiếp của các triển khai của nhà cung cấp, giao diện của nhà cung cấp được xác thực bởi Bộ thử nghiệm của nhà cung cấp (VTS) , tương tự như Bộ thử nghiệm tương thích (CTS) . Bạn có thể sử dụng VTS để tự động kiểm tra hạt nhân HAL và OS trong cả kiến ​​trúc Android cũ và hiện tại.

Tài nguyên kiến ​​trúc

Để biết chi tiết về kiến ​​trúc Android, hãy xem các phần sau:

  • Các loại HAL . Mô tả các liên kết, chuyển qua, cùng một quy trình (SP) và HAL kế thừa.
  • AIDL . Tài liệu về AIDL, cho dù nó được sử dụng thông thường hay như một giao diện HAL.
  • HIDL (Tổng hợp) . Chứa thông tin chung về giao diện giữa HAL và người dùng của nó.
  • HIDL (C ++) . Chứa các chi tiết để tạo các triển khai C ++ của các giao diện HIDL.
  • HIDL (Java) . Chứa thông tin chi tiết về giao diện người dùng Java cho giao diện HIDL.
  • ConfigStore HAL . Mô tả các API để truy cập các mục cấu hình chỉ đọc được sử dụng để định cấu hình khung Android.
  • Lớp phủ cây thiết bị . Cung cấp thông tin chi tiết về cách sử dụng lớp phủ cây thiết bị (DTO) trong Android.
  • Bộ công cụ phát triển bản địa của nhà cung cấp (VNDK) . Mô tả tập hợp các thư viện dành riêng cho nhà cung cấp để triển khai HAL của nhà cung cấp.
  • Đối tượng giao diện nhà cung cấp (VINTF) . Mô tả các đối tượng tổng hợp thông tin có liên quan về một thiết bị và cung cấp thông tin đó thông qua một API có thể truy vấn.
  • SELinux dành cho Android 8.0 . Chi tiết các thay đổi và tùy chỉnh của SELinux.

Ngoài các tài nguyên trên trang web này, các thành viên của nhóm Treble đã xuất bản Treble: Cập nhật phần mềm nhanh bằng cách tạo trạng thái cân bằng trong hệ sinh thái phần mềm đang hoạt động của các bên liên quan được phân phối trên toàn cầu . Bài báo này miễn phí cho các thành viên ACM và những người không phải là thành viên có thể mua hoặc đọc phần tóm tắt.