Android là một ngăn xếp phần mềm, bao gồm các tầng như hình 3.5 được trích từ trang http://kebomix.wordpress.com/2010/08/17/android-system- architecture/ sau đây, trong đó các hàm thực thi các ứng dụng trong hai tầng Applications và Applications framework được viết bằng ngôn ngữ lập trình Java. Còn các hàm thực thi các ứng dụng ở các tầng dưới: Libraries, Android runtime, Linux kernel được viết bằng mã gốc hay native code được viết bằng ngôn ngữ C/C++.
Hình 3.5 Kiến trúc Android
Sau đây ta sẽ tìm hiểu qua về chức năng của từng tầng:
- Tầng applications: Android được tích hợp sẵn một số ứng dụng cần thiết cơ bản như: calendar, maps, contacts, brower, camera, phone, … Tất cả các ứng dụng này đều được viết bằng ngôn ngữ Java.
- Tầng Application Framework: giúp phát triển các ứng ụng một cách phong phú và sáng tạo. Nhà phát triển có thể truy cập vào các API cùng một framework được xây dựng bởi các ứng dụng lõi, giúp đơn giản hóa việc sử dụng lại các thành phần, thừa kế các giao diện, quản lý các hoạt động và tài nguyên…
- Tầng Libraries: Android bao gồm một tập hợp các thư viện C/C++ được sử dụng bởi nhiều thành phần khác nhau trong hệ thống Android. Điều này được thể hiện thông qua nền tảng ứng dụng Android. Một số thư việc cơ bản: System C library, Media Libararies, SQLite.
- Tầng Android runtime: Tầng này bao gồm các thư viện lõi và máy ảo Dalvik (Dalvik Virtual Machine - DVM). Các thư viện lõi bao gồm các thư viện lớp cơ bản nhất như: cấu trúc dữ liệu, mạng, các tiện ích, hệ thống file. DVM được thiết kế để đạt được các chức năng quản lý chu kỳ sống của đối tượng, quản lý ngăn xếp, quản lý luồng, bảo mật.
- Linux kernel: Android được xây dựng trên nhân Linux, nhưng Android không phải là Linux. Android dựa trên Linux phiên bản 2.6 cho các hệ thống dịch vụ cốt lõi như an ninh, quản lý bộ nhớ, quản lý quá trình, ngăn xếp mạng, và mô hình điều khiển. Hạt nhân cũng hoạt động như một lớp trừu tượng giữa phần cứng và phần còn lại của ngăn xếp phần mềm. Linux kernel hỗ trợ các thư viện chia sẻ (shared libraries) và nó còn là một mã nguồn mở