Bài 1. Tổng quan về Android


Android là một hệ điều hành dựa trên nền tảng Linux ,được chạy trên các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng. Ban đầu, được phát triển bởi Tổng công ty Android, với nguồn vốn từ Google và sau này được chính Google mua lại vào năm 2005. Năm 2007 Android ra mắt  cùng với tuyên bố thành lập Liên minh thiết bị cầm tay mở: một hiệp hội gồm các công ty phần mềm, phần cứng, và viễn thông với mục tiêu đẩy mạnh các tiêu chuẩn cho các thiết bị di động. Tháng 10 năm 2008 chiếc điện thoại đầu tiên chạy Android được bán trên thị trường

Kiến trúc hệ điều hành Android có 4 tầng từ dưới lên trên là tầng hạt nhân Linux (phiên bản 2.6), tầng Libraries & Android runtime, tầng Application Framework và trên cùng là tầng Application.


1. Tầng hạt nhân Linux

Hệ điều hành Android được phát triển dựa trên hạt nhân Linux, cụ thể là hạt nhân Linux phiên bản 2.6, điều đó được thể hiện ở lớp dưới cùng này. Tất cả mọi hoạt động của điện thoại muốn thi hành được thì đều thực hiện ở mức cấp thấp. Ở lớp này bao gồm quản lý bộ nhớ (memory management), giao tiếp với phần cứng (driver model), thực hiện bảo mật (security), quản lý tiến trình (process).

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à chỉnh sửa 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ầu kết nối mạng không dây.

Tầng này có các thành phần chủ yếu:

  • Display Driver: Điều khiển việc hiển thị lên màn hình cũng như thu nhận những điều khiển của người dùng trên màn hình (di chuyển, cảm ứng…).
  • Camera Driver: Điều khiển hoạt động của camera, nhận luồng dữ liệu từ camera trả về.
  • Bluetooth Driver: Điều khiển thiết bị thu và phát sóng Bluetooth.
  • USB driver: Quản lý hoạt động của các cổng giao tiếp USB.
  • Keypad driver: Điều khiển bàn phím.
  • Wifi driver: Chịu trách nhiệm về việc thu phát sóng wifi.
  • Audio Driver: Điều khiển các bộ thu phát âm thanh, giải mã các tín hiệu dạng audio thành tín hiệu số và ngược lại.
  • Binder IPC Driver: Chịu trách nhiệm về việc kết nối và liên lạc với mạng vô tuyến như CDMA, GSM, 3G, 4G, E để đảm bảo những chức năng truyền thông được thực hiện.
  • M-System Driver: Quản lý việc đọc ghi…lên các thiết bị như thẻ nhớ SD, flash
  • Power Management: Giám sát việc tiêu thụ điện năng.

2. Tầng Library

Phần này có nhiều thư viện được viết bằng C/C++ để các phần mềm có thể sử dụng, các thư viện đó được tập hợp thành một số nhóm như:

  • Thư viện hệ thống (System C library): thư viện dựa trên chuẩn C, được sử dụng chỉ bởi hệ điều hành.
  • Thư viện Media (Media Libraries): Có nhiều codec để hỗ trợ việc phát và ghi các loại định dạng âm thanh, hình ảnh, video thông dụng.
  • Thư viện web (LibWebCore): đây là thành phần để xem nội dung trên web, được sử dụng để xây dựng phần mềm duyệt web (Android Browse) cũng như để các ứng dụng khác có thể nhúng vào. Nó cực kỳ mạnh, hỗ trợ được nhiều công nghệ mạnh mẽ như HTML5, JavaScript, CSS, DOM, AJAX…
  • Thư viện SQLite: Hệ cơ sở dữ liệu để các ứng dụng có thể sử dụng

3. Phần Android runtime

Phần này chứa các thư viện mà một chương trình viết bằng ngôn ngữ Java có thể hoạt động. Runtime có 2 bộ phận tương tự như mô hình chạy Java trên máy tính thường. Thứ nhất là các thư viện lõi (Core Library), chứa các lớp như Java IO, Collection, File Access. Thứ hai là một máy ảo Java (Dalvik Virtual Machine). Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng dụng Java của Android không được chạy trên JRE của Sun mà là chạy bằng máy ảo Dalvik do Google phát triển.


4. Tầng Application Framework

Tầng này xây dựng bộ công cụ – các phần tử ở mức cao để các lập trình viên có thể nhanh chóng xây dựng ứng dụng. Nó được viết bằng Java, có khả năng sử dụng chung để tiết kiệm tài nguyên.

Đây là một nền tảng mở, điều đó có 2 điều lợi:

  • Với các hãng điện thoại: Có thể tùy biến để phù hợp với cấu hình điện thoại mà họ sản xuất cũng như để có thể có nhiều mẫu mã, style hợp thị hiếu người dùng. Vì thế nên tuy cùng chung nền tảng Android mà điện thoại của Google có thể khác với Motorola, HTC, T-Mobile, Samsung…
  • Với lập trình viên: Cho phép lập trình viên có thể sử dụng các API ở tầng trên mà không cần phải hiểu rõ cấu trúc bên dưới, tạo điều kiện cho lập trình viên tự do sáng tạo bởi vì chỉ cần quan tâm đến nội dung mà ứng dụng họ làm việc. Một tập hợp API rất hữu ích được xây dựng sẵn như hệ thống định vị, các dịch vụ chạy nền, liên lạc giữa các ứng dụng, các thành phần giao diện cấp cao…

5. Tầng Application

Đây là tầng ứng dụng giao tiếp với người sử dụng, bao gồm các ứng dụng như:

  • Các ứng dụng cơ bản, được cài đặt đi liền với hệ điều hành: gọi điện, quản lý danh bạ, duyệt web, nhắn tin, lịch làm việc, đọc email, bản đồ, quay phim chụp ảnh…
  • Các ứng dụng được cài thêm như các phần mềm học tiếng Anh, các trò chơi, từ điển…
  • Các chương trình có đặc điểm là:
  • Viết bằng Java có phần mở rộng là apk.
  • Khi mỗi ứng dụng được chạy, nó có một phiên bản Virtual Machine được dựng lên để phục vụ cho nó.
  • Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùng một thời điểm, có thể có nhiều chương trình cùng chạy một lúc, tuy nhiên với mỗi ứng dụng thì có duy nhất một thực thể (instance) được phép chạy mà thôi. Đ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 gán số ID của người sử dụng nhằm phân định quyền hạn khi sử dụng tài nguyên, cấu hình phần cứng và hệ thống.
  • 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ứ 3 chạy nền. Các ứng dụng đó chỉ có một hạn chế là không được phép sử dụng quá 5% công suất CPU. Điều đó nhằm để tránh độc quyền trong sử dụng CPU.
  • Ứng dụng không có điểm vào cố định, không có phương thức main để bắt đầu.