Tải bản đầy đủ
6 Kiến trúc của HĐH Android

6 Kiến trúc của HĐH Android

Tải bản đầy đủ

Hình 1.1 Kiến trúc HĐH Android
- Nhân Linux (Linux Kenel): Android được xây dựng dựa trên nhân Linux
phiên bản 2.6. Thành phần này chứa tất cả các dịch vụ lõi của hệ thống như: quản lý
bộ nhớ, quản lý tiến trình, giao tiếp phần cứng, bảo mật.. và điều khiển mọi hoạt
động của thiết bị. Tuy được phát triển dựa vào nhân linux nhưng thực ra nhân linux
đã được nâng cấp và sửa đổi rất nhiều để phù hợp với tính chất của những thiết bị
cầm tay như hạn chế về bộ vi xử lý, dung lượng bộ nhớ, kích thước màn hình, nhu
cần kết nối mạng không dây...
- Thành phần thư viện (Libraries): bao gồm 1 tập các thư viện được viết bằng
C/C++ cung cấp những tính năng chính cho một hệ điều hành android. Gồm một số
thư viện lõi như:
 SQLite: Hỗ trợ trong việc lưu trữ dữ liệu.
 LibWebCore: Để xây dựng trình duyệt web, hỗ trợ nhiều công nghệ
mạnh mẽ như HTML5, JavaScript, CSS, DOM, AJAX…
 FreeType: Dùng cho việc hiển thị ảnh và font chữ.

13

 Thư viện 3D: Sử dụng để tăng tốc độ phần cứng xử lý 3D hoặc tối ưu
hoá phần mềm 3D.
 Surface Manager: Quản lý việc hiển thị 2D và 3D.
 Media Libraries: Hỗ trợ phát hoặc thu lại các định dạng hình ảnh, âm
thanh, video thông dụng.
 System C: Dựa trên thư viện C chuẩn sử dụng cho HĐH hoặc nhúng
vào các thiết bị.
 SGL: Cung cấp các công cụ đồ hoạ 2D cơ bản.
- Android runtime: Thành phần này tại cùng một tầng với các thư viện, bao
gồm 1 tập các thư viên lõi cung cấp các chức năng sẵn có như trong thư viện lõi của
ngôn ngữ lập trình java, cho phép các nhà phát triển viết các ứng dụng android bằng
cách sử dụng ngôn ngữ lập trình java. Android runtime cũng bao gồm máy ảo
Dalvik, cho phép mọi ứng dụng android chạy trong tiến trình của mình. Dalvik là
một máy ảo chuyên dụng được thiết kế đặc biệt cho android và tối ưu hóa cho các
thiết bị điện thoại di động với giới hạn bộ nhớ và CPU. Dalvik thực thi file có định
dạng là .dex
- Bộ khung ứng dụng (Application framework): Bằng cách cung cấp 1 nền
tảng phát triển mở, Android cung cấp cho các nhà phát triển khả năng xây dựng các
ứng dụng phong phú và sáng tạo. Thành phần này đưa ra các khả năng khác nhau
của HĐH và người phát triển có thể tự do tận dụng ưu điểm của thiết bị phần cứng,
truy cập thông tin, chạy các dịch vụ nền, thêm thông báo trên các thanh trạng thái và
nhiều hơn nữa. Cho phép nhà phát triển truy cập đến các API dùng bởi ứng dụng lõi.
Kiến trúc các ứng dụng được thiết kế để đơn giản hoá khả năng sử dụng lại của các
thành phần.
- Thành phần ứng dụng: Nằm ở tầng trên cùng của kiến trúc Android. Tại
tầng này ta có thể tìm thấy các ứng dụng có sẵn trong thiết bị Android, cũng như các
ứng dụng mà chúng ta download và cài đặt từ Android Market hay các chương trình
được viết tại tầng này. Các ứng dụng viết Android có những đặc tính sau :

14

 Viết bằng java và có phần mở rộng là .apk.
 Khi mỗi ứng dụng được chạy thì có 1 Virtual Machine riêng vì vậy mã
nguồn của ứng dụng được chạy trong sự cô lập với mã nguồn của các
ứng dụng khác.
 Theo mặc định, mỗi ứng dụng chạy trên một tiến trình Linux riêng của
mình. Android bắt đầu tiến trình khi bất kỳ thành phần nào của ứng
dụng cần được thực thi sau đó tắt tiến trình nếu không cần thiết hoặc
khi hệ thống cần khôi phục bộ nhớ cho các ứng dụng khác.
 Hệ điều hành Android là hệ thống đa người dùng, mỗi ứng dụng thuộc
về người dùng khác nhau. Do đó, theo mặc định, mỗi ứng dụng được
gắn ID của người sử dụng nhằm phân quyền khi sử dụng tài nguyên,
cấu hình phần cứng và hệ thống.
 Android là hệ điều hành đa nhiệm, điều đó có nghĩa rằng, tại một thời
điểm có thể có nhiều ứng dụng được chạy, tuy nhiên mỗi ứng dụng chỉ
có một thực thể (instance) duy nhất được chạy. Điều đó có tác dụng
hạn chế sự lạm dụng tài nguyên, giúp hệ thống hoạt động tốt hơn. Các
ứng dụng được phân quyền và tự hệ thống sẽ hủy nếu mức ưu tiên
thấp.
 Android là một hệ điều hành có tính mở, khác với nhiều hệ điều hành
di động khác, Android cho phép một ứng dụng của bên thứ ba được
phép chạy nền. Các ứng dụng đó chỉ có một hạn chế nhỏ đó là nó
không được phép sử dung quá 5~10% công suất CPU, điều đó nhằm
để tránh độc quyền trong việc sử dụng CPU.

15

1.7 Cấu trúc của một project Android
1.7.1 File AndroidManifest.xml
- AndroidManifest.xml là file yêu cầu phải có trong tất cả các ứng dụng
Android, nó được đặt ở thư mục gốc của ứng dụng và được tự động sinh ra ngay sau
khi ta tạo 1 project mới. Nó mô tả các biến toàn cục dùng trong gói ứng dụng, bao
gồm các thành phần ứng dụng như : Services, activity…
- Mỗi khi tạo ra 1 Activiy mới ta đều phải khai báo nó trong file này. Một
điều quan trọng được đề cập đến trong file AndroidManifest.xml là IntenFilter. Các
Filter này mô tả khi nào, và ở đâu các Activiy có thể được bắt đầu. Khi 1 Activity
hay hệ điều hành muốn thực hiện 1 hành động nào đó như mở 1 trang web, hay màn
hình contact nó tạo một đối tượng Intent. Đối tượng Intent này có thể chứa vài thông
tin mô tả người dùng muốn làm gì, cần những dữ liệu gì để thực hiện và một số
thông tin khác. Android sẽ so sánh các thông tin trong 1 đối tượng Intent với các
Intent Filter được khai báo trong file AndroidManifest.xml bởi mỗi ứng dụng và tìm
ra Activity phù hợp nhất để xử lý dữ liệu hoặc thực hiện 1 hành động cụ thể. Nếu có
nhiều Activity phù hợp với Intent đó thì người dùng sẽ được hỏi thành phần nào sẽ
được thực hiện.
- Cấu trúc của file AndroidManifest.xml được biểu diễn dưới dạng các tags.
Một số tags cơ bản gồm:
: Là nút gốc của mỗi file AndroidManifest.xml, nó chứa
đựng các thuộc tính của gói ứng dụng
: Bao gồm các thuộc tính chỉ định quyền truy
xuất và sử dụng tài nguyên của ứng dụng. Khi cần sử dụng một
loại tài nguyên nào đó thì trong file AndroidManifest .xml của ứng
dụng cần phải khai báo các quyền truy xuất.
: Là phần tử gốc, chứa các khai báo, các thành phần
được định nghĩa, sử dụng trong ứng dụng Android. Nó cũng bao gồm
các thuộc tính chung hay mặc định cho ứng dụng như icon, theme,

16

: Mỗi Activity phải có 1 tag với tên tương ứng
trong file Androidmanifest.xml nếu không chúng ta sẽ không thể chạy
nó. Mỗi Activiy có thể chứa 1 hoặc nhiều Intent-Filter mô tả các hành
động mà Activity này hỗ trợ.

: Mô tả các loại Intent mà một thành phần ứng dụng có
thể hỗ trợ. Bên trong tag này có thể chứa nhiều tag khác như:
, , ,
: Một Services là một thành phần của ứng dụng và có thể
chạy ở chế độ nền trong một khoảng thời gian tùy ý. Cũng như
Activity chúng ta cũng có thể khai báo ,
cho mỗi Service.
: Một ContentProvider là một thành phần của ứng dụng
quản lý các dữ liệu liên tục và cho phép các thành phần khác truy cập
đến nó. Chúng ta có thể khai báo 1 hoặc nhiều cho một
ContentProvider.
1.7.2 File R.java
- R.java là file tự sinh khi ta tạo một project, nó tự động tạo chỉ số và quản lý
các thuộc tính được khai báo trong file xml và các tài nguyên của ứng dụng (như
hình ảnh, âm thanh…), tự động được cập nhật khi có thay đổi trong ứng dụng.
Chúng ta sử dụng lớp này trong mã lệnh như một cách nhanh nhất để tham chiếu
đến các tài nguyên đã khai báo trong ứng dụng.
1.7.3 Các tài nguyên dùng trong một ứng dụng Android
- Các file tài nguyên của một ứng dụng có liên quan rất chặt chẽ tới file
R.xml, các thay đổi trong các file tài nguyên sẽ được tự động thay đổi trong R.xml
- Các file tài nguyên của ứng dụng Android là các file ngoài (không chứa mã
lệnh) được sử dụng trong mã lệnh và biên dịch vào thời gian chạy của ứng dụng.
Android hỗ trợ nhiều loại file tài nguyên như: xml, jpg, png, mp3… Các file xml có
rất nhiều cấu trúc khác nhau tùy thuộc vào mục đích sử dụng cũng như cách thức

17