- vừa được xem lúc

Cấu trúc của Android (Android Platform Architecture)

0 0 37

Người đăng: Lê Công Trực

Theo Viblo Asia

Android là một hệ điều hành mã nguồn mở, được xây dựng dựa trên Linux và có thể sử dụng cho nhiều thiết bị khác nhau.
Bao gồm các thành phần chính theo sơ đồ bên dưới:

Hình 1. Ngăn xếp các thành phần trong cấu trúc hệ điều hành của Android.

Nhân Lunix (The Linux Kernel )

Nền tảng của nền tảng Android là nhân Linux. Ví dụ: Android Runtime (ART) dựa trên nhân Linux cho các chức năng cơ bản như phân luồng ( threading) và quản lý bộ nhớ cấp thấp (low-level memory).

Sử dụng nhân Linux cho phép Android tận dụng các tính năng bảo mật chính (key security features) và cho phép các nhà sản xuất thiết bị phát triển trình điều khiển phần cứng cho một nhân nổi tiếng (a well-known kernel).

Hardware Abstraction Layer (HAL)

Hardware Abstraction Layer (HAL) cung cấp các giao diện tiêu chuẩn thể hiện các khả năng của phần cứng thiết bị với framework API Java cấp cao hơn (higher-level Java API framework). HAL bao gồm nhiều mô-đun thư viện, mỗi mô-đun thực hiện một giao diện cho một loại thành phần phần cứng cụ thể, chẳng hạn như mô-đun Camera hoặc Bluetooth. Khi một framework API thực hiện cuộc gọi để truy cập phần cứng của thiết bị, hệ thống Android sẽ tải mô-đun thư viện cho thành phần phần cứng đó.

Android Runtime

Đối với các thiết bị chạy Android phiên bản 5.0 (API cấp 21) trở lên, mỗi ứng dụng chạy trong quy trình riêng và với phiên bản Android Runtime (ART) riêng. ART được viết để chạy nhiều máy ảo trên các thiết bị có bộ nhớ thấp bằng cách thực thi các tệp DEX, một định dạng bytecode được thiết kế đặc biệt cho Android được tối ưu hóa cho bộ nhớ tối thiểu. Xây dựng các công cụ, chẳng hạn như d8, biên dịch các mã nguồn Java thành DEX bytecode, có thể chạy trên nền tảng Android.

Một số tính năng chính của ART bao gồm:

  • Biên dịch trước thời gian (AOT) và đúng lúc (JIT)
  • Thu gom rác tối ưu hóa (GC)
  • Trên Android 9 (API cấp 28) trở lên, chuyển đổi tệp định dạng Dalvik Executable (DEX) của gói ứng dụng thành mã máy nhỏ gọn hơn.
  • Hỗ trợ debug tốt hơn, bao gồm trình biên dịch lấy mẫu chuyên dụng (profiler), các ngoại lệ chẩn đoán chi tiết và báo cáo sự cố cũng như khả năng thiết lập các điểm theo dõi để giám sát các trường cụ thể

Trước phiên bản Android 5.0 (API cấp 21), Dalvik là Android runtime. Nếu ứng dụng của bạn chạy tốt trên ART, thì ứng dụng đó cũng sẽ hoạt động trên Dalvik, nhưng điều ngược lại có thể không đúng.

Android cũng bao gồm một bộ thư viện thời gian chạy cốt lõi cung cấp hầu hết các chức năng của ngôn ngữ lập trình Java, bao gồm một số tính năng của ngôn ngữ Java 8, mà framework API Java sử dụng.

Native C/C++ Libraries

Nhiều thành phần và dịch vụ hệ thống cốt lõi của Android, chẳng hạn như ART và HAL, được xây dựng từ mã gốc (native code) yêu cầu thư viện gốc được viết bằng CC ++. Nền tảng Android cung cấp các API khung Java để hiển thị chức năng của một số thư viện gốc này cho các ứng dụng. Ví dụ: bạn có thể truy cập OpenGL ES thông qua API Java OpenGL của Android framework để thêm hỗ trợ vẽ và thao tác đồ họa 2D và 3D trong ứng dụng của bạn.

Nếu bạn đang phát triển một ứng dụng yêu cầu mã C hoặc C ++, bạn có thể sử dụng Android NDK để truy cập trực tiếp vào một số thư viện nền tảng gốc (native platform libraries) này từ mã gốc của mình.

Java API Framework

Toàn bộ tập hợp tính năng của Hệ điều hành Android có sẵn cho bạn thông qua các API được viết bằng ngôn ngữ Java. Các API này tạo thành các khối xây dựng mà bạn cần để tạo ứng dụng Android bằng cách đơn giản hóa việc sử dụng lại các thành phần (components) và dịch vụ (services) hệ thống mô-đun, cốt lõi, bao gồm những nội dung sau:

  • View System đa đạng và có thể mở rộng, bạn có thể sử dụng để xây dựng giao diện người dùng (UI) của ứng dụng. Bao gồm lists, grids, text boxes, buttons,... và thậm chí cả trình duyệt web có thể nhúng (embeddable web browser)
  • Resource Manager, cung cấp quyền truy cập vào các tài nguyên không phải mã như chuỗi, đồ họa và tệp bố cục được bản địa hóa
  • Notification Manager cho phép tất cả các ứng dụng hiển thị cảnh báo tùy chỉnh trên thanh trạng thái
  • Activity Manager quản lý vòng đời của ứng dụng và cung cấp ngăn xếp điều hướng chung
  • Content Providers cho phép ứng dụng truy cập dữ liệu từ các ứng dụng khác, chẳng hạn như ứng dụng Danh bạ hoặc chia sẻ dữ liệu của riêng họ

Các Developer có toàn quyền truy cập vào các framework API giống nhau mà các ứng dụng hệ thống Android sử dụng.

System Apps

Android đi kèm với một tập hợp các ứng dụng cốt lõi cho email, nhắn tin SMS, lịch, duyệt internet, danh bạ và hơn thế nữa. Các ứng dụng đi kèm với nền tảng không có trạng thái đặc biệt trong số các ứng dụng mà người dùng chọn cài đặt. Vì vậy, ứng dụng của bên thứ ba có thể trở thành trình duyệt web mặc định của người dùng, trình nhắn tin SMS hoặc thậm chí là bàn phím mặc định của người dùng (áp dụng một số ngoại lệ, chẳng hạn như ứng dụng Cài đặt của hệ thống).

Các ứng dụng hệ thống hoạt động như ứng dụng cho người dùng và cung cấp các khả năng chính mà nhà phát triển có thể truy cập từ ứng dụng của riêng họ. Ví dụ: nếu ứng dụng của bạn muốn gửi tin nhắn SMS, bạn không cần phải tự xây dựng chức năng đó — thay vào đó, bạn có thể gọi bất kỳ ứng dụng SMS nào đã được cài đặt để gửi tin nhắn đến người nhận mà bạn chỉ định.

Bài viết được tham khảo từ https://developer.android.com/guide/platform

Bình luận

Bài viết tương tự

- vừa được xem lúc

Một số thủ thuật hay ho với Linux (1).

1. Ctrl + x + e. Giữ CTRL, nhấn phím x rồi nhấn phím e. Thao tác này sẽ mở ra editor mặc định (echo $EDITOR | $VISUAL để kiểm tra) chứa sẵn.

0 0 45

- vừa được xem lúc

How to deploy Amplication app to DigitalOcean

This article shows you the way to deploy an app generated by Amplication to DigitalOcean. Amplication provides the dockerfile to use containers for deployment, but this blog explains how to do it manu

0 0 53

- vừa được xem lúc

Có gì mới trong Laravel 9.0?

Laravel v9 là phiên bản LTS tiếp theo của Laravel và ra mắt vào tháng 2 năm 2022. Trong bài viết này, mình xin giới thiệu một vài tính năng mới trong Laravel trong Laravel 9.

0 0 78

- vừa được xem lúc

Xây dựng trang web tra cứu ảnh sử dụng phân cụm Spectral Clustering

1. Tổng quan tra cứu ảnh. 1.1.

0 0 45

- vừa được xem lúc

Scanning network 1 - quét mạng như một hacker

Chào mọi người mình là Tuntun. Một năm qua là một năm khá bận rộn nhỉ.

0 0 46

- vừa được xem lúc

Interpreter Design Pattern - Trợ thủ đắc lực của Developers

1. Giới thiệu. . Interpreter là một mẫu thiết kế thuộc nhóm hành vi (Behavioral Pattern).

0 0 43