Kiến trúc Android chứa nhiều thành phần khác nhau để hỗ trợ bất kỳ nhu cầu thiết bị Android nào. Phần mềm Android chứa Linux kernel mã nguồn mở có tập hợp số lượng thư viện C / C ++ được hiển thị thông qua các dịch vụ khung ứng dụng.
Trong số tất cả các thành phần, Linux kernel cung cấp chức năng chính của các chức năng hệ điều hành cho điện thoại thông minh và Máy ảo Dalvik (DVM) cung cấp nền tảng để chạy một ứng dụng Android.
Các bài viết liên quan:
Các thành phần chính của kiến trúc android như sau:
- Applications
- Application Framework
- Android Runtime
- Platform Libraries
- Linux Kernel
Biểu diễn bằng hình ảnh của kiến trúc android với một số thành phần chính và các thành phần phụ của chúng
Applications
Applications là lớp trên cùng của kiến trúc Android. Các ứng dụng được cài đặt sẵn như danh bạ, máy ảnh, thư viện, v.v. và các ứng dụng của bên thứ ba được tải xuống từ cửa hàng Play như ứng dụng trò chuyện, trò chơi, v.v. sẽ chỉ được cài đặt trên lớp này.
Nó chạy trong thời gian chạy Android với sự trợ giúp của các lớp và dịch vụ được cung cấp bởi khung ứng dụng.
Xem thêm Lập trình Android
Application Framework
Application Framework cung cấp một số lớp quan trọng được sử dụng để tạo một ứng dụng Android. Nó cung cấp một sự trừu tượng chung cho việc truy cập phần cứng và cũng giúp quản lý giao diện người dùng với các tài nguyên ứng dụng. Nói chung, nó cung cấp các dịch vụ với sự trợ giúp mà chúng ta có thể tạo một lớp cụ thể và làm cho lớp đó hữu ích cho việc tạo Ứng dụng.
Nó bao gồm các loại khác nhau của trình quản lý hoạt động dịch vụ, trình quản lý thông báo, hệ thống xem, trình quản lý gói, v.v. giúp ích cho việc phát triển ứng dụng của chúng tôi theo điều kiện tiên quyết.
Android Runtime
Android Runtime là một trong những phần quan trọng nhất của Android. Nó chứa các thành phần như thư viện lõi và máy ảo Dalvik (DVM). Về cơ bản, nó cung cấp nền tảng cho Application Framework và cung cấp năng lượng cho ứng dụng của chúng tôi với sự trợ giúp của các thư viện lõi.
Giống như Máy ảo Java (JVM), Máy ảo Dalvik (DVM) là một máy ảo dựa trên đăng ký và được thiết kế và tối ưu hóa đặc biệt cho Android để đảm bảo rằng một thiết bị có thể chạy nhiều phiên bản một cách hiệu quả. Nó phụ thuộc vào nhân Linux lớp để phân luồng và quản lý bộ nhớ cấp thấp. Các thư viện cốt lõi cho phép chúng tôi triển khai các ứng dụng Android bằng ngôn ngữ lập trình JAVA hoặc Kotlin tiêu chuẩn.
Xem thêm Hướng dẫn sử dụng android studio
Platform Libraries
Platform Libraries bao gồm các thư viện lõi C / C ++ khác nhau và các thư viện dựa trên Java như Media, Graphics, Surface Manager, OpenGL, v.v. để hỗ trợ phát triển Android.
- Media library cung cấp hỗ trợ để phát và ghi lại các định dạng âm thanh và video.
- Surface manager chịu trách nhiệm quản lý quyền truy cập vào hệ thống con hiển thị.
- SGL và OpenGL đều là giao diện chương trình ứng dụng đa ngôn ngữ, đa nền tảng (API) được sử dụng cho đồ họa máy tính 2D và 3D.
- SQLite cung cấp hỗ trợ cơ sở dữ liệu và FreeType cung cấp hỗ trợ phông chữ.
- Web-Kit Công cụ trình duyệt web mã nguồn mở này cung cấp tất cả các chức năng để hiển thị nội dung web và đơn giản hóa việc tải trang.
- SSL (Secure Sockets Layer) là công nghệ bảo mật để thiết lập liên kết được mã hóa giữa máy chủ web và trình duyệt web.
Xem thêm KHÓA HỌC ĐÀO TẠO SEO
Linux Kernel
Linux Kernel là trái tim của kiến trúc Android. Nó quản lý tất cả các trình điều khiển có sẵn như trình điều khiển hiển thị, trình điều khiển máy ảnh, trình điều khiển Bluetooth, trình điều khiển âm thanh, trình điều khiển bộ nhớ, v.v. được yêu cầu trong thời gian chạy.
Linux Kernel sẽ cung cấp một lớp trừu tượng giữa phần cứng thiết bị và các thành phần khác của kiến trúc android. Nó chịu trách nhiệm quản lý bộ nhớ, nguồn điện, thiết bị, v.v.
Xem thêm Mã độc trên Android mobile
Các tính năng của Linux kernel là:
- Security: Nhân Linux xử lý bảo mật giữa ứng dụng và hệ thống.
- Memory Management: Nó xử lý hiệu quả việc quản lý bộ nhớ, do đó mang lại sự tự do để phát triển các ứng dụng của chúng tôi.
- Process Management: Nó quản lý quy trình tốt, phân bổ tài nguyên cho các quy trình bất cứ khi nào họ cần.
- Network Stack: Nó xử lý hiệu quả việc truyền thông mạng.
- Driver Model: Nó đảm bảo rằng ứng dụng hoạt động bình thường trên thiết bị và các nhà sản xuất phần cứng chịu trách nhiệm xây dựng trình điều khiển của họ vào bản dựng Linux.
Muốn có một môi trường cạnh tranh và nhịp độ nhanh hơn để tìm hiểu các nguyên tắc cơ bản của Android?
Nhấp vào đây để xem hướng dẫn độc đáo do các chuyên gia của chúng tôi tuyển chọn với mục đích giúp bạn sẵn sàng trong ngành ngay lập tức!
Xem thêm Cách viết App android studio đầu tiên.
Mô hình Clean architecture – App Architect
Mô hình Clean Architecture là một phương pháp thiết kế kiến trúc phần mềm được đề xuất bởi Robert C. Martin. Mục tiêu chính của Clean Architecture là tạo ra một kiến trúc dễ bảo trì, dễ mở rộng và độc lập giữa các thành phần của ứng dụng. Nó giúp tách biệt hoàn toàn các thành phần của ứng dụng và định nghĩa rõ ràng các đỉnh và ranh giới của mỗi tầng.
Mô hình Clean Architecture chia ứng dụng thành ba tầng chính:
- Tầng Giao diện người dùng (UI Layer): Tầng này chứa các thành phần liên quan đến giao diện người dùng như Activity, Fragment, View và Presenter (nếu sử dụng kiến trúc MVP). Tầng giao diện người dùng chỉ chịu trách nhiệm hiển thị dữ liệu và tương tác với người dùng, nó không chứa logic kinh doanh. Tầng này là điểm giao tiếp với người dùng và không phụ thuộc vào các tầng khác.
- Tầng Logic Kinh doanh (Domain Layer): Tầng này chứa các thành phần quan trọng của ứng dụng như Use Case (các trường hợp sử dụng), Entities (đối tượng) và các luật kinh doanh. Domain Layer không phụ thuộc vào bất kỳ thành phần nào khác trong ứng dụng và chỉ nắm giữ quy tắc logic kinh doanh của ứng dụng. Điều này giúp tạo ra một tầng độc lập có thể được tái sử dụng và kiểm thử dễ dàng.
- Tầng Dữ liệu (Data Layer): Tầng này quản lý việc truy xuất và lưu trữ dữ liệu của ứng dụng. Nó bao gồm các thành phần như Repository, Data Source và Remote Service (nếu ứng dụng yêu cầu kết nối mạng). Data Layer cung cấp dữ liệu cho Domain Layer thông qua giao diện được định nghĩa, không phụ thuộc vào bất kỳ thành phần khác của ứng dụng. Điều này giúp dễ dàng thay đổi nguồn dữ liệu mà không ảnh hưởng đến tầng Logic Kinh doanh.
Mô hình Clean Architecture giúp tách biệt hoàn toàn các thành phần và giúp dễ dàng bảo trì và phát triển lại ứng dụng. Nó cũng thúc đẩy việc kiểm thử đơn vị (unit testing) và tái sử dụng mã nguồn. Kiến trúc này thường được sử dụng trong các dự án có phạm vi lớn hoặc khi đòi hỏi tính linh hoạt và dễ mở rộng cao.
Giới thiệu Tầng Giao diện người dùng (UI Layer)
Tầng Giao diện người dùng (UI Layer) là một trong ba tầng chính của Mô hình Clean Architecture. Nó chịu trách nhiệm cho việc hiển thị giao diện người dùng và tương tác với người dùng. Tầng này là điểm giao tiếp giữa người dùng và ứng dụng, nơi mà dữ liệu và thông tin được hiển thị và nhập vào.
Các thành phần chính của Tầng Giao diện người dùng bao gồm:
- Activity và Fragment (hoặc View): Đây là các thành phần trong Android dùng để hiển thị giao diện người dùng trên màn hình điện thoại hoặc tablet. Activity thường được sử dụng để hiển thị màn hình đơn và Fragment được sử dụng để hiển thị một phần giao diện được chia nhỏ và có thể được sử dụng lại trong nhiều màn hình.
- Presenter (hoặc ViewModel): Presenter và ViewModel đóng vai trò là cầu nối giữa Activity/Fragment và Tầng Logic Kinh doanh (Domain Layer). Presenter hoặc ViewModel chịu trách nhiệm xử lý các sự kiện từ giao diện và yêu cầu dữ liệu từ Tầng Logic Kinh doanh. Nó cũng chịu trách nhiệm cập nhật giao diện với các dữ liệu mới từ Tầng Logic Kinh doanh.
- View Interfaces (Giao diện View): Giao diện View được định nghĩa như một cơ chế để tách biệt Presenter/ViewModel và Activity/Fragment. Nó cung cấp các phương thức mà Presenter/ViewModel có thể sử dụng để tương tác với giao diện người dùng. Giao diện View làm cho việc kiểm thử trở nên dễ dàng hơn vì có thể dễ dàng tạo các đối tượng giả lập để kiểm thử Presenter/ViewModel mà không cần chạy toàn bộ ứng dụng.
Tầng Giao diện người dùng chỉ chịu trách nhiệm về việc hiển thị dữ liệu và tương tác với người dùng, không chứa logic kinh doanh. Điều này giúp tách biệt hoàn toàn các thành phần và đảm bảo sự linh hoạt và dễ bảo trì trong việc phát triển ứng dụng. Tầng Giao diện người dùng cũng giúp tối ưu hóa việc kiểm thử và tái sử dụng mã nguồn.
Giới thiệu Tầng Logic Kinh doanh (Domain Layer)
Tầng Logic Kinh doanh (Domain Layer) là một trong ba tầng chính của Mô hình Clean Architecture. Nó chứa các thành phần quan trọng của ứng dụng, bao gồm các Use Case (trường hợp sử dụng), Entities (đối tượng) và các luật kinh doanh. Tầng này là trái tim của ứng dụng, chịu trách nhiệm xử lý toàn bộ logic kinh doanh của ứng dụng mà không phụ thuộc vào các tầng khác.
Các thành phần chính của Tầng Logic Kinh doanh bao gồm:
- Use Case (Trường hợp sử dụng): Use Case đại diện cho các hoạt động cụ thể mà người dùng có thể thực hiện trong ứng dụng. Mỗi Use Case thực hiện một nhiệm vụ cụ thể và liên quan đến một hoặc nhiều thao tác trong Tầng Dữ liệu để lấy hoặc lưu trữ dữ liệu. Use Case cung cấp một cách tương tác đơn giản và giới hạn với dữ liệu của ứng dụng.
- Entities (Đối tượng): Entities là các đối tượng chứa thông tin về dữ liệu quan trọng và logic kinh doanh của ứng dụng. Các đối tượng này thường tương ứng với các thực thể quan trọng trong ứng dụng và có thể là các lớp POJO (Plain Old Java Object) hoặc các lớp Kotlin data class.
- Interfaces: Tầng Logic Kinh doanh định nghĩa các giao diện để tách biệt giữa các Use Case và Tầng Dữ liệu (Data Layer). Nhờ vậy, Tầng Logic Kinh doanh không phụ thuộc vào cụ thể của Tầng Dữ liệu và dễ dàng thay đổi nguồn dữ liệu mà không ảnh hưởng đến các Use Case.
Tầng Logic Kinh doanh chịu trách nhiệm thực hiện toàn bộ logic kinh doanh của ứng dụng và không biết về chi tiết của Tầng Giao diện người dùng hoặc Tầng Dữ liệu. Điều này giúp tách biệt hoàn toàn các thành phần và tạo ra một tầng độc lập và có thể được tái sử dụng. Tầng Logic Kinh doanh cũng tập trung vào việc đảm bảo tính hợp lý và toàn vẹn của dữ liệu và quy tắc kinh doanh trong ứng dụng.
Giới thiệu Tầng Dữ liệu (Data Layer)
Tầng Dữ liệu (Data Layer) là một trong ba tầng chính của Mô hình Clean Architecture. Nó chịu trách nhiệm quản lý việc truy xuất và lưu trữ dữ liệu của ứng dụng. Tầng này tương tác với các nguồn dữ liệu bên ngoài như cơ sở dữ liệu, API, tệp, hay bất kỳ nguồn dữ liệu từ xa nào khác.
Các thành phần chính của Tầng Dữ liệu bao gồm:
- Repository: Repository là một giao diện định nghĩa các phương thức để lấy và lưu trữ dữ liệu của ứng dụng. Nó giúp tách biệt Tầng Logic Kinh doanh và các chi tiết của Tầng Dữ liệu. Tầng Logic Kinh doanh sẽ giao tiếp với Repository thông qua giao diện này mà không cần biết về các chi tiết cụ thể của Tầng Dữ liệu.
- Data Source: Tầng Dữ liệu sử dụng các Data Source (Nguồn dữ liệu) để truy xuất dữ liệu từ các nguồn bên ngoài như cơ sở dữ liệu SQL, API RESTful hoặc các tệp lưu trữ. Mỗi Data Source cung cấp các phương thức để thực hiện các thao tác cụ thể trên dữ liệu như lấy dữ liệu, thêm, sửa đổi hoặc xóa.
Ví dụ về cấu trúc Tầng Dữ liệu:
data │ ├── repository │ └── ToDoRepository.kt (Giao diện Repository) │ ├── datasource │ ├── local │ │ └── LocalToDoDataSource.kt (Giao diện Local Data Source) │ └── remote │ └── RemoteToDoDataSource.kt (Giao diện Remote Data Source) │ └── ToDoRepositoryImpl.kt (Implement Repository)
Trong ví dụ trên, ToDoRepository
là một giao diện định nghĩa các phương thức để lấy và lưu trữ danh sách công việc. LocalToDoDataSource
và RemoteToDoDataSource
là các giao diện định nghĩa các phương thức cụ thể cho việc truy xuất dữ liệu từ nguồn dữ liệu cục bộ và từ xa.
Tầng Dữ liệu giúp tách biệt hoàn toàn các thành phần và đảm bảo tính linh hoạt trong việc thay đổi nguồn dữ liệu mà không ảnh hưởng đến Tầng Logic Kinh doanh. Nó cũng giúp dễ dàng thay đổi cách truy xuất dữ liệu mà không ảnh hưởng đến phần còn lại của ứng dụng và tối ưu hóa việc quản lý dữ liệu.