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
Kiến trúc hệ thống Hình 1. 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.
  • Binder IPC. Cơ chế Binder Inter-Process Communication (IPC) cho phép khung ứ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".
  • Dịch vụ hệ thống. Dịch vụ hệ thống là các thành phần tập trung, 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 (ví dụ như Window Manager và Notification Manager) và phương tiện truyền thông (các dịch vụ liên quan đến việc thi đấu và ghi lại phương tiện truyền thông).
  • Lớp phần cứng trừu tượ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, xem Hardware Abstraction Layer (HAL) .
  • Linux kernel. 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. Sử dụng Android phiên bản của kernel Linux với một vài bổ sung đặc biệt như Low Memory killer (một hệ thống quản lý bộ nhớ đó là tích cực hơn trong việc giữ gìn bộ nhớ), khóa chế độ thức (một PowerManager dịch vụ hệ thống), người lái xe Binder IPC, và các tính năng khác quan trọng 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, xem Building Kernels .

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

Android 8.0 tái kiến trúc khuôn khổ hệ điều hành Android (trong một dự án được gọi là Treble) để làm cho nó dễ dàng hơn, nhanh hơn và ít tốn kém cho các nhà sản xuất với các thiết bị cập nhật lên phiên bản mới của Android. 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 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 các nhà sản xuất SOC xây dựng Hals một lần và đặt chúng trong một /vendor phân vùng trên thiết bị; khuôn khổ, trong phân vùng riêng của mình, có thể sau đó được thay thế bằng một bản cập nhật over-the-air (OTA) mà không cần biên dịch lại Hals.

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:

    Môi trường cập nhật Hình 2. Legacy Android
  • 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:

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

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 tính tương thích của việc triển khai cung cấp, giao diện nhà cung cấp được xác nhận bởi các nhà cung cấp thử nghiệm Suite (VTS) , mà là tương tự như Compatibility Test Suite (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 (Đại Cương) . 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 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.
  • Device Tree Overlays . 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.
  • Nhà cung cấp phát triển Native Kit (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.
  • Nhà cung cấp giao diện đối tượng (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 nguồn tài nguyên trên trang web này, các thành viên của nhóm nghiên cứu được công bố Treble Treble: Nhanh Software Updates bởi Tạo một cân bằng trong một hệ sinh thái phần mềm tích cực của toàn cầu Distributed Các bên liên quan . 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.