Dự án nguồn mở Android (AOSP) là mã nguồn Android có thể sửa đổi và được cung cấp công khai. Bất kỳ ai cũng có thể tải xuống và sửa đổi AOSP cho thiết bị của mình. AOSP cung cấp một quy trình 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 kiểm thử như trong Bộ kiểm thử của nhà cung cấp (VTS) và Bộ kiểm thử 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 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:
Hình 1. Cấu trúc ngăn xếp phần mềm AOSP.
Sau đây là danh sách đị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 Android API. Cửa hàng Google Play được sử dụng rộng rãi để tìm và tải các ứ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 một ứ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ó đặ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. Bạn phải cài đặt trước các ứng dụng này 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ập nhật khi phần mềm hệ thống của thiết bị được cập nhật.
- System API
- System API là API Android chỉ dành cho các đối tác và OEM để đưa vào các ứng dụng đi kèm. Các API này được đánh dấu là @SystemApi trong mã nguồn.
- API Android
- Android API là API công khai dành cho nhà phát triển ứng dụng Android bên thứ ba. Để biết thông tin về Android API, hãy tham khảo Tài liệu tham khảo Android API.
- Khung Android
- Một nhóm các lớp, giao diện Java 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 đó. Một số phần của khung này có thể truy cập công khai thông qua việc sử dụng Android API. Các phần khác của khung chỉ được cung cấp cho OEM thông qua việc sử dụng API hệ thống. Mã khung Android chạy trong quy trình của một ứng dụng.
- Dịch vụ hệ thống
- Dịch vụ hệ thống là các thành phần theo mô-đun, tập trung như
system_server
, SurfaceFlinger và MediaService. Chức năng do API khung Android cung cấp sẽ 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 chỉ dẫn dành riêng cho bộ xử lý do môi trường thời gian chạy của thiết bị thực thi.
- 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 để các 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 cách triển khai trình điều khiển cấp thấp. 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à chương trình nền gốc
Các chương trình nền gốc trong lớp này bao gồm
init
,healthd
,logd
vàstoraged
. Các chương trình này tương tác trực tiếp với nhân 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.Các thư viện gốc trong lớp này bao gồm
libc
,liblog
,libutils
,libbinder
vàlibselinux
. Các thư viện gốc này tương tác trực tiếp với nhân 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
Nhân 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ị. Nếu có thể, nhân AOSP sẽ được chia thành các mô-đun độc lập với 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 của nhân AOSP, hãy tham khảo bài viết Tổng quan về nhân.
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 trình đơn điều hướng bên trái và bắt đầu bằng thông tin tổng quan về phần đó.