Android là một ngăn xếp phần mềm nguồn mở dựa trên Linux được tạo cho nhiều thiết bị và kiểu dáng. Hình 1 cho thấy các thành phần chính của nền tảng Android.
![Ngăn xếp phần mềm Android](https://developer.android.com/static/guide/platform/images/android-stack_2x.png?authuser=6&hl=vi)
Hình 1. Ngăn xếp phần mềm Android.
Nhân Linux
Nền tảng của nền tảng Android là nhân Linux. Ví dụ: Android Runtime (ART) dựa vào nhân hệ điều hành Linux để thực hiện các chức năng cơ bản như phân luồng và quản lý bộ nhớ cấp thấp.
Việc sử dụng nhân hệ điều hành Linux cho phép Android tận dụng các tính năng bảo mật chính và cho phép nhà sản xuất thiết bị phát triển trình điều khiển phần cứng cho một nhân hệ điều hành đã biết.
Lớp trừu tượng phần cứng (HAL)
Tầng trừu tượng phần cứng (HAL) cung cấp các giao diện tiêu chuẩn để cho phép các tính năng phần cứng của thiết bị tiếp cận khung API Java cấp cao hơn. HAL bao gồm nhiều mô-đun thư viện, mỗi mô-đun trong số đó triển khai một giao diện cho một loại thành phần phần cứng cụ thể, chẳng hạn như mô-đun camera hoặc Bluetooth. Khi API khung thực hiện lệnh gọi để truy cập vào phần cứng của thiết bị, hệ thống Android sẽ tải mô-đun thư viện cho thành phần phần cứng đó.
Môi trường thời gian chạy Android
Đối với các thiết bị chạy Android phiên bản 5.0 (API cấp 21) trở lên, mỗi ứng dụng chạy theo quy trình riêng và với phiên bản Android Runtime (ART) riêng. ART được viết để chạy nhiều máy ảo trên các thiết bị có bộ nhớ thấp bằng cách thực thi các tệp định dạng có thể thực thi Dalvik (DEX), một định dạng mã byte được thiết kế riêng cho Android được tối ưu hoá để đạt được mức sử dụng bộ nhớ tối thiểu. Các công cụ tạo bản dựng (chẳng hạn như d8
) biên dịch nguồn Java thành mã byte DEX, có thể chạy trên nền tảng Android.
Sau đây là một số đặc điểm chính của ART:
- Biên dịch trước khi thực thi (AOT) và đúng thời điểm (JIT)
- Thu gom rác được tối ưu hoá (GC)
- Trên Android 9 (API cấp 28) trở lên, chuyển đổi các tệp DEX của gói ứng dụng thành mã máy nhỏ gọn hơn
- Hỗ trợ gỡ lỗi hiệu quả hơn, bao gồm cả trình phân tích mẫu chuyên dụng, trường hợp ngoại lệ chẩn đoán chi tiết và báo cáo sự cố, cũng như khả năng đặt các điểm theo dõi để giám sát các trường cụ thể
Trước phiên bản Android 5.0 (API cấp 21), Dalvik là môi trường thời gian chạy của Android. Nếu ứng dụng của bạn chạy tốt trên ART, thì ứng dụng cũng có thể hoạt động trên Dalvik, nhưng điều ngược lại có thể không đúng.
Android cũng có một tập hợp các thư viện chính trong thời gian chạy, cung cấp hầu hết chức năng của ngôn ngữ lập trình Java, trong đó có một số tính năng ngôn ngữ Java 8 mà khung API Java sử dụng.
Thư viện C/C++ gốc
Nhiều thành phần và dịch vụ cốt lõi của hệ thống Android (chẳng hạn như ART và HAL) được xây dựng từ mã gốc cần có thư viện gốc viết bằng C và C++. Nền tảng Android cung cấp các API khung Java để hiển thị chức năng của một số thư viện gốc trong số này cho ứng dụng. Ví dụ: bạn có thể truy cập vào OpenGL ES thông qua Java OpenGL API của khung Android để thêm tính năng hỗ trợ vẽ và chỉnh sửa đồ hoạ 2D và 3D trong ứng dụng.
Nếu đang phát triển một ứng dụng yêu cầu mã C hoặc C++, thì bạn có thể dùng Android NDK để truy cập một số thư viện nền tảng gốc này ngay từ mã gốc của mình.
Khung API Java
Bạn có thể sử dụng toàn bộ bộ tính năng của hệ điều hành Android thông qua các API được viết bằng ngôn ngữ Java. Các API này tạo thành những thành phần cần thiết để tạo ứng dụng Android bằng cách đơn giản hoá việc sử dụng lại các thành phần và dịch vụ cốt lõi của hệ thống, theo mô-đun, bao gồm những thành phần sau:
- Một hệ thống chế độ xem phong phú và dễ mở rộng mà bạn có thể dùng để xây dựng giao diện người dùng của ứng dụng, bao gồm danh sách, lưới, hộp văn bản, nút và thậm chí là một trình duyệt web có thể nhúng
- Trình quản lý tài nguyên, cấp quyền truy cập vào các tài nguyên không phải mã, chẳng hạn như các chuỗi đã được bản địa hoá, tệp đồ hoạ và tệp bố cục
- Trình quản lý thông báo cho phép tất cả ứng dụng hiển thị cảnh báo tuỳ chỉnh trên thanh trạng thái
- Trình quản lý hoạt động quản lý vòng đời của các ứng dụng và cung cấp một ngăn xếp lui điều hướng thông thường
- Trình cung cấp nội dung cho phép ứng dụng truy cập vào dữ liệu từ các ứng dụng khác, chẳng hạn như ứng dụng Danh bạ hoặc chia sẻ dữ liệu của riêng họ
Nhà phát triển có toàn quyền truy cập vào chính API khung mà ứng dụng hệ thống Android dùng.
Ứng dụng hệ thống
Android đi kèm với một tập hợp các ứng dụng cốt lõi dành cho email, nhắn tin SMS, lịch, duyệt Internet, danh bạ và nhiều tính năng khác. Trong số các ứng dụng mà người dùng chọn cài đặt, các ứng dụng đi kèm nền tảng sẽ không có trạng thái đặc biệt nào. Vì vậy, ứng dụng bên thứ ba có thể trở thành trình duyệt web, tin nhắn SMS hoặc thậm chí là bàn phím mặc định của người dùng. Có một số trường hợp ngoại lệ, chẳng hạn như ứng dụng Cài đặt của hệ thống.
Ứng dụng hệ thống vừa có chức năng là ứng dụng cho người dùng, vừa cung cấp những chức năng chính mà nhà phát triển có thể truy cập trên ứng dụng của họ. Ví dụ: nếu muốn ứng dụng của mình gửi tin nhắn SMS, bạn không cần phải tự xây dựng chức năng đó. Thay vào đó, bạn có thể gọi bất kỳ ứng dụng SMS nào đã được cài đặt để gửi tin nhắn tới người nhận mà bạn chỉ định.