Kiến trúc nền tảng Android

(ZmikiSoft.com) – Kiến trúc nền tảng Android
Chúng ta đã biết Android là một hệ điều hành nguồn mở dựa trên nhân Linux, được xây dựng theo ngăn xếp ( stack ) cho nhiều mảng rộng của thiết bị và các yếu tố hình thức nhất định. Nhìn vào hình ảnh minh họa ở trên chúng ta sẽ dễ nhìn nhận và hiểu hơn về kiểu thiết kế này. Mỗi ngăn xếp ( System Apps, Java API Framework .. ) sẽ chứa một mảng các thành phần bên trong.

Chúng ta sẽ đi tìm hiểu về một vài stack trong sơ đồ trên (từ mức thấp đến mức cao):

  • The Linux Kernel

Đây chính là nền tảng  của Android, hệ điều hành được phát triển dựa trên nhân của hệ điều hành Linux. Việc sử dụng nhân Linux cho phép Android có nhiều đặc tính bảo mật và cho phép các nhà sản xuất thiết bị phát triển các bộ điều khiển ( driver ) cho thiết bị tốt nhất.

  • Hardware Abstraction Layer (HAL)

Đây là ngăn có chức năng cung cấp các chuẩn giao tiếp phần mềm với phần cứng của thiết bị, giúp các ứng dụng trên Android có thể sử dụng được các phần cứng như camera, bluetooth… HAL chứa nhiều thư viện, nhiều module khác nhau, các thư viện này có chức năng điều khiển một phần cứng cụ thể. Ví dụ: module camera sẽ chịu trách nhiệm điều khiển các tác vụ liên quan đến camera gắn trên điện thoại/ máy tính bảng, khi ứng dụng chúng ta viết cần camera thì module camera sẽ được gọi để giúp ứng dụng của chúng ta thực hiện chức năng đó.

  • Android Runtime

Với những thiết bị chạy hệ điều hành Android phiên bản 5.0 trở lên, thì mỗi ứng dụng sẽ chạy riêng một tiến trình với một instance (cụ thể) của Android Run Time. ART được viết để chạy được trên nhiều máy ảo ở cấp độ thấp bằng việc thực thi các file DEX. ART sẽ giúp các ứng dụng trên Android chạy nhanh hơn ( chúng ta sẽ thấy rõ điều này khi sử dụng Android 5.0 trở lên và Android phiên bản nhỏ hơn, cùng cấu hình phần cứng ). Đặc biệt khi bạn viết các ứng dụng yêu cầu nhiều hỗ trợ từ phần cứng như xử lý ảnh cần bộ nhớ, camera, tốc độ CPU thì bạn sẽ thấy sự khác biệt đáng kể cở nào.

Ngoài ra ART còn nhiều hỗ trợ rất tốt khác như: tối ưu hóa việc gom rác, giúp hệ thống giải phóng nhanh các phần nhớ không cần thiết. Hỗ trợ debug phần mềm tốt hơn các phiên bản cũ, báo chi tiết các lỗi crash ứng dụng …

  • Native C/C++ Libararies

Nhiều thành phần hệ thống nhân Android và các dịch vụ như ART và HAL như nêu ở trên được xây dựng từ native code, những dịch vụ này được viết bằng ngôn ngữ C/C++. Android cung cấp các Java Framework API để giúp ứng dụng viết bằng Java có thể sử dụng được nhưng thư viện/ dịch vụ Native này. Ví dụ: bạn có thể truy cập vào OpenGL ES nhờ vào Java OpenGL API để hỗ trợ việc vẽ và đa hình các chức năng đồ họa 2D/3D trong ứng dụng của bạn.

Nếu viết một ứng dụng bằng ngôn ngữ C/C++ bạn có thể sử dụng Android NDK thay vì Android SDK để truy cập một số thư viện native này một cách trực tiếp. Việc này sẽ giúp ứng dụng tận dụng được tối đa sức mạnh phần cứng, giúp ứng dụng chạy nhanh hơn như các ứng dụng vể xử lý camera, xử lý video, truyển nhận video…

  • Java API Framework

Đây là ngăn chứa các tính năng của Android mà bạn có thể sử dụng bằng các API viết bằng ngôn ngữ Java. Những API này được xây dựng thành các khối (block) cần thiết cho việc xây dựng ứng dụng của bạn, giúp bạn tạo ứng dụng một cách đơn giản và đơn giản trong việc sử dụng lại code. Cụ thể như:

  1.  Bộ quản lý tài nguyên: cung cấp cách để truy cập vào vị trí của strings, graphics, các file layout bạn viết bằng XML…
  2. Quản lý notification: giúp các ứng dụng có thể hiện thị các màn hình thông báo trên thanh statuc bar của thiết bị.
  3. Bộ quản lý Activity: quản lý các vòng đời của Activity trong các ứng dụng và cung cấp những chuyển đổi màn hình trong ngăn xếp ( stack – khi tạo 1 activity nó sẽ được chứa vào ngăn xếp, mỗi ứng dụng khi chạy sẽ có một ngăn xếp để chứa các Activity của nó ).
  4. Content provider: cung cấp các cách chia sẽ dữ liệu, lưa trữ và xử lý dữ liệu…
  • System Apps

Đây là tầng chứa các ứng dụng cho người dùng cuối sử dụng, như các ứng dụng gọi điện, các ứng dụng của bạn khi xây dựng xong và cài đặt lên thiết bị nó sẽ nằm ở tầng này để người dùng sử dụng.

Ứng dụng cần chức năng nào, cần yêu cầu phần cứng nào sẽ gọi các tầng dưới hơn để yêu cầu và thực hiện.

 

 

Khóa học lập trình Android
Khóa học lập trình Java
Khóa học lập trình iOS
Khóa học lập trình Objective-C/Swift