Để lập trình Android hiệu quả, bên cạnh nắm vững kiến thức về ngôn ngữ lập trình, về môi trường Android Studio, chúng ta cần nắm kiến thức tổng quát về kiến trúc của Android.

Android Software Stack

Android được cấu trúc theo hình thức một hàng đợi phần mềm (software stack) bao gồm các ứng dụng (applications), hệ điều hành (operating system), môi trường thực thi (run-time environment), middleware, các dịch vụ (services), các thư viện (libraries). Hình sau minh họa kiến trúc của Android với các tầng (layer) và các thành phần tương ứng trong mỗi tầng trong một Android software stack:

Linux Kernel

Cung cấp một mức trừu tượng giữa các thiết bị phần cứng và các tầng trên của stack. Dựa trên Linux phiên bản 2.6, kernel cung cấp đa nhiệm, các dịch vụ hệ thống mức thấp như bộ nhớ, tiến trình, các drivers như wifi, audio, v.v.

Android Runtime (ART)

Khi chúng ta thực thi một ứng dụng trong Android Studio, nó sẽ được biên dịch thành một mã bytecode trung gian (định dạng DEX). Khi ứng dụng được tải lên thiết bị, ART sẽ sử dụng một tiến trình gọi là Ahead-of-Time (AOT) để chuyển mã bytecode thành định dạng mã để bộ xử lý có thể hiểu được. Định dạng mã này được gọi là Executable and Linkable Format (ELF). Mỗi lần ứng dụng Android tải lên thiết bị, phiên bản thực thi ELF đã tạo lần đầu sẽ chạy mà không cần phải chuyển sang mã bytecode, do đó, ứng dụng thực thi nhanh hơn và làm tăng tuổi thọ pin của các thiết bị.

Cách tiếp cận AOT ngược với cách biên dịch Just-in-Time (JIT) trong các phiên bản Andorid cũ hơn. Biên dịch JIT sẽ chuyển mã bytecode sang máy ảo mỗi lần ứng dụng Android được tải lên thiết bị, do đó, sẽ xử lý chậm hơn rất nhiều so với cách biên dịch AOT.

Libraries (thư viện Android)

Android cung cấp một tập các thư viện rất đa dạng dùng trong đồ họa, cơ sở dữ liệu, giao tiếp mạng, v.v. Các thư viện chủ yếu dự trên JavaC/C++. Một số thư viện chủ yếu gồm: android.app, android.database, android.net, android.opengl, v.v. Chúng ta sẽ làm quen với các thư viện Android qua các bài sau.

Application Framework

Application Framework là một tập các dịch vụ định hình nên môi trường trong đó các ứng dụng Android thực thi và được quản lý. Một số framework chủ yếu trong Android như Activity Manager, Content Providers, Resource Manager, v.v. Chúng ta sẽ được tiếp cận các framework trong các bài sau.

Applications

Là tầng cao nhất trong stack gồm các ứng dụng Android và các ứng dụng bên thứ ba do người dùng cài đặt trên thiết bị.

Lời cuối

Trong bài này chúng ta đã tìm hiểu một cách tổng quát về kiến trúc Android. Trong bài kế tiếp chúng ta sẽ tìm hiểu chuy kỳ sống của một ứng dụng Android.