Tổng quan về cấu trúc

Dự án nguồn mở Android (AOSP) là mã nguồn Android có thể sửa đổi và được công khai. Bất kỳ ai cũng có thể tải và sửa đổi AOSP cho thiết bị của mình. AOSP cung cấp một hoạt động triển khai hoàn chỉnh và đầy đủ chức năng của nền tảng di động Android.

Có 2 cấp độ tương thích cho các thiết bị triển khai AOSP: khả năng tương thích với AOSP và khả năng tương thích với Android. Thiết bị tương thích với AOSP phải tuân thủ danh sách các yêu cầu trong Tài liệu định nghĩa về khả năng tương thích (CDD). Thiết bị tương thích với Android phải tuân thủ danh sách các yêu cầu trong CDD và Yêu cầu về phần mềm của nhà cung cấp (VSR) cũng như các bài kiểm tra như trong Bộ kiểm thử của nhà cung cấp (VTS)Bộ kiểm tra tính tương thích (CTS). Để biết thêm thông tin về khả năng tương thích với Android, hãy tham khảo chương trình khả năng tương thích với Android.

Cấu trúc AOSP

Ngăn xếp phần mềm cho AOSP chứa các lớp sau:

Cấu trúc ngăn xếp phần mềm AOSP.

Hình 1. Cấu trúc ngăn xếp phần mềm AOSP.

Sau đây là danh sách các định nghĩa cho các thuật ngữ được dùng trong Hình 1:

Ứng dụng Android
Một ứng dụng chỉ được tạo bằng API Android. Cửa hàng Google Play được dùng rộng rãi để tìm và tải ứng dụng Android xuống, mặc dù có nhiều lựa chọn thay thế khác. Trong một số trường hợp, nhà sản xuất thiết bị có thể muốn cài đặt sẵn ứng dụng Android để hỗ trợ chức năng cốt lõi của thiết bị. Nếu bạn quan tâm đến việc phát triển ứng dụng Android, hãy tham khảo developers.android.com.
Ứng dụng đặc quyền
Một ứng dụng được tạo bằng cách kết hợp API Android và API hệ thống. Các ứng dụng này phải được cài đặt sẵn dưới dạng ứng dụng đặc quyền trên thiết bị.
Ứng dụng của nhà sản xuất thiết bị
Một ứng dụng được tạo bằng cách kết hợp API Android, API hệ thống và quyền truy cập trực tiếp vào quá trình triển khai khung Android. Vì nhà sản xuất thiết bị có thể truy cập trực tiếp vào các API không ổn định trong khung Android, nên các ứng dụng này phải được cài đặt sẵn trên thiết bị và chỉ có thể được cập nhật khi phần mềm hệ thống của thiết bị được cập nhật.
API hệ thống
API hệ thống đại diện cho các API Android chỉ dành cho đối tác và OEM để đưa vào các ứng dụng được đóng gói. Các API này được đánh dấu là @SystemApi trong mã nguồn.
API Android
API Android là API được công khai cho nhà phát triển ứng dụng Android bên thứ ba. Để biết thông tin về API Android, hãy tham khảo Tài liệu tham khảo API Android.
Khung Android
Một nhóm các lớp Java, giao diện và mã được biên dịch sẵn khác mà các ứng dụng được xây dựng dựa trên đó. Các phần của khung có thể truy cập công khai thông qua việc sử dụng API Android. Các phần khác của khung chỉ dành cho OEM thông qua việc sử dụng API hệ thống. Mã khung Android chạy bên trong quy trình của ứng dụng.
Dịch vụ hệ thống
Dịch vụ hệ thống là các thành phần mô-đun, tập trung như system_server, SurfaceFlinger và MediaService. Chức năng được API khung Android hiển thị giao tiếp với các dịch vụ hệ thống để truy cập vào phần cứng cơ bản.
Thời gian chạy Android (ART)
Môi trường thời gian chạy Java do AOSP cung cấp. ART thực hiện việc dịch mã byte của ứng dụng thành các lệnh dành riêng cho bộ xử lý được thực thi bởi môi trường thời gian chạy của thiết bị.
Lớp trừu tượng phần cứng (HAL)
HAL là một lớp trừu tượng có giao diện tiêu chuẩn để nhà cung cấp phần cứng triển khai. HAL cho phép Android không phụ thuộc vào các hoạt động triển khai trình điều khiển cấp thấp hơn. Việc 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. Để biết thêm thông tin, hãy xem bài viết Tổng quan về HAL.
Thư viện và trình nền gốc

Trình nền gốc trong lớp này bao gồm init, healthd, logdstoraged. Các trình nền này tương tác trực tiếp với kernel hoặc các giao diện khác và không phụ thuộc vào việc triển khai HAL dựa trên không gian người dùng.

Thư viện gốc trong lớp này bao gồm libc, liblog, libutils, libbinderlibselinux. Các thư viện gốc này tương tác trực tiếp với kernel hoặc các giao diện khác và không phụ thuộc vào việc triển khai HAL dựa trên không gian người dùng.

Kernel

Kernel là phần trung tâm của mọi hệ điều hành và giao tiếp với phần cứng cơ bản trên thiết bị. Trong trường hợp có thể, kernel AOSP được chia thành các mô-đun không phụ thuộc vào phần cứng và các mô-đun dành riêng cho nhà cung cấp. Để biết nội dung mô tả, bao gồm cả định nghĩa về các thành phần kernel AOSP, hãy tham khảo bài viết Tổng quan về kernel.

Tiếp theo là gì?

  • Nếu bạn mới sử dụng AOSP và muốn bắt đầu phát triển, hãy tham khảo phần Bắt đầu.
  • Nếu bạn muốn tìm hiểu thêm về một lớp cụ thể của AOSP, hãy nhấp vào tên của phần đó trong thanh điều hướng bên trái và bắt đầu với phần tổng quan cho phần đó.