Android là một hệ điều hành mã nguồn mở, được xây dựng dựa trên Linux và có thể sử dụng cho nhiều thiết bị khác nhau.
Bao gồm các thành phần chính theo sơ đồ bên dưới:
Nhân Linux là nền tảng của nền tảng Android. Nó giúp Android trong các dịch vụ và chức năng hệ thống cốt lõi như phân luồng, cấp thấp quản lý bộ nhớ, bảo mật, quản lý quy trình, mạng và trình điều khiển phần cứng.
Nhân Linux cũng hoạt động như một lớp trừu tượng (abstraction layer) giữa phần cứng và phần mềm của nền tảng.
Hardware Abstraction Layer (HAL) cung cấp các giao diện tiêu chuẩn thể hiện các khả năng của phần cứng thiết bị với framework API Java cấp cao hơn (higher-level Java API framework). HAL bao gồm nhiều mô-đun thư viện, mỗi mô-đun thực hiện 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 một framework API thực hiện cuộc gọi để truy cập 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 đó.
Đố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 trong 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 DEX, một định dạng bytecode được thiết kế đặc biệt cho Android được tối ưu hóa cho bộ nhớ tối thiểu. Xây dựng các công cụ, chẳng hạn như d8, biên dịch các mã nguồn Java thành DEX bytecode, có thể chạy trên nền tảng Android.
Một số tính năng chính của ART bao gồm:
Trước phiên bản Android 5.0 (API cấp 21), Dalvik là Android runtime. Nếu ứng dụng của bạn chạy tốt trên ART, thì ứng dụng đó cũng sẽ hoạt động trên Dalvik, nhưng điều ngược lại có thể không đúng.
Android cũng bao gồm một bộ thư viện thời gian chạy cốt lõi cung cấp hầu hết các chức năng của ngôn ngữ lập trình Java, bao gồm một số tính năng của ngôn ngữ Java 8, mà framework API Java sử dụng.
Nhiều thành phần và dịch vụ hệ thống cốt lõi của Android, chẳng hạn như ART và HAL, được xây dựng từ mã gốc (native code) yêu cầu thư viện gốc đượ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 này cho các ứng dụng. Ví dụ: bạn có thể truy cập OpenGL ES thông qua API Java OpenGL của Android framework để thêm hỗ trợ vẽ và thao tác đồ họa 2D và 3D trong ứng dụng của bạn.
Nếu bạn đang phát triển một ứng dụng yêu cầu mã C hoặc C ++, bạn có thể sử dụng Android NDK để truy cập trực tiếp vào một số thư viện nền tảng gốc (native platform libraries) này từ mã gốc của mình.
Toàn bộ tập hợp tính năng của Hệ điều hành Android có sẵn cho bạn thông qua các API được viết bằng ngôn ngữ Java. Các API này tạo thành các khối xây dựng mà bạn cần để tạo ứng dụng Android bằng cách đơn giản hóa việc sử dụng lại các thành phần (components) và dịch vụ (services) hệ thống mô-đun, cốt lõi, bao gồm những nội dung sau:
Các Developer có toàn quyền truy cập vào các framework API giống nhau mà các ứng dụng hệ thống Android sử dụng.
Android đi kèm với một tập hợp các ứng dụng cốt lõi (core apps) ví dụ như Email, Nhắn tin SMS, Lịch, Duyệt Internet, Danh bạ và hơn thế nữa. Các ứng dụng đi kèm với nền tảng không có trạng thái đặc biệt trong số các ứng dụng mà người dùng chọn cài đặt. Vì vậy, ứng dụng của bên thứ ba có thể trở thành trình duyệt web mặc định của người dùng, trình nhắn tin SMS hoặc thậm chí là bàn phím mặc định của người dùng (áp dụng một số ngoại lệ, chẳng hạn như ứng dụng Cài đặt của hệ thống).
Các ứng dụng hệ thống hoạt động như ứng dụng cho người dùng và cung cấp các khả năng chính mà nhà phát triển có thể truy cập từ ứng dụng của riêng họ. Ví dụ: nếu ứng dụng của bạn muốn 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 đến người nhận mà bạn chỉ định.
Nguồn: viblo.asia