Bài 3.01. Giới thiệu về nền tảng Android
Nội dung bài học
Kiến trúc nền tảng Android
- Android là hệ điều hành mã nguồn mở được tạo ra trên nền tảng hệ điều hành Linux.
- Android hỗ trợ nhiều loại thiết bị với kích thước và kiểu dáng khác nhau: smartphone, tablet, TV, smartwatch,…
- Các thành phần chính của nền tảng Android cho trong hình sau:
- Trong đó ta thấy Android gồm các phần chính:
- Nhân Linux.
- Lớp phần cứng trừu tượng(HAL).
- Android Runtime.
- Native C/C++ Libraries.
- Java API Framework.
- System Apps.
- Ta sẽ tìm hiểu sơ lược các thành phần trên.
- Nhân Linux: nền tảng của Android là nhân Linux.Ví dụ Android Runtime(ART) nằm trên nhân Linux để thực hiện các chức năng xử lý luồng và quản lý bộ nhớ cấp thấp. Sử dụng nhân Linux cho phép Android thừa hưởng các tính năng bảo mật quan trọng và cho phép các nhà sản xuất thiết bị phát triển các trình điều khiển dựa trên nhân hệ điều hành phổ biến.
- Lớp phần cứng trừu tượng(HAL): HAL cung cấp các chuẩn giao tiếp thể hiện khả năng của phần cứng cho thư viện Java ở bậc cao hơn. HAL gồm nhiều module thư viện khác nhau. Mỗi thư viện triển khai một giao diện cho thành phần phần cứng cụ thể ví dụ camera, micro, bluetooth. Khi một lời gọi được thực hiện bởi API framework xuống yêu cầu truy cập phần cứng, hệ điều hành Android sẽ nạp module thư viện tương ứng với thành phần phần cứng được yêu cầu.
- Android Runtime(ART): với các thiết bị chạy Android 5.0 trở lên, mỗi ứng dụng sẽ chạy trên tiến trình độc lập của riêng nó với đối tượng ART riêng. ART được viết ra để chạy nhiều máy ảo trên thiết bị có ít bộ nhớ bằng cách chạy file DEX, một bytecode đặc biệt được viết cho Android làm nhiệm vụ tối ưu hóa lượng bộ nhớ nhỏ nhất cần dùng. File DEX được build bằng công cụ như d8, biến code Java thành bytecode DEX có thể chạy trên nền tảng Android.
- Một số tính năng chính của ART gồm:
- Biên dịch trước thời điểm chạy(AOT) và vào thời điểm chạy chương trình(JIT).
- Tối ưu hóa trình dọn rác(GC).
- Trên Android 9+, nó làm nhiệm vụ chuyển đổi từ một app package DEX file sang mã máy gọn nhẹ hơn.
- Hỗ trợ gỡ lỗi tốt hơn, bao gồm trình biên dịch lấy mẫu chuyên dụng, các chẩn đoán ngoại lệ chi tiết và báo cáo lỗi; khả năng thiết lập các watchpoint để giám sát các trường thuộc tính cụ thể.
- Trước Android 5.0, Dalvik được sử dụng làm Android runtime. Nếu ứng dụng của bạn chạy tốt trên ART thì nó cũng sẽ chạy được trên Dalvik nhưng có thể điều ngược lại không đúng.
- Android còn chứa một tập các lõi thư viện runtime cung cấp hầu hết các chức năng của ngôn ngữ Java, bao gồm một số tính năng của Java 8 mà thư viện API của Java framework sử dụng.
- Thư viện nguyên thủy C/C++: Nhiều thành phần cốt lõi của hệ điều hành và dịch vụ của Android như ART, HAL được xây dựng từ mã nguồn nguyên thủy sử dụng ngôn ngữ lập trình C/C++. Nền tảng Android sử dụng Java API framework để thể hiện khả năng của một vài thư viện nguyên thủy này đến ứng dụng. Ví dụ bạn có thể truy cập OpenGL ES qua thư viện Java Open GL API để hỗ trợ việc vẽ và quản lý đồ họa 2D, 3D trong ứng dụng của bạn. Nếu bạn phát triển một ứng dụng yêu cầu code C/C++, bạn có thể sử dụng Android NDK để truy cập một trong các thư viện nguyên thủy của nền tảng một cách trực tiếp từ trong code native của bạn.
- Java API Framework: tập các tính năng còn lại của hệ điều hành Android được cung cấp tới bạn qua các API viết bằng ngôn ngữ lập trình Java. Các API này tạo thành các khối bạn cần để tạo ứng dụng Android bằng cách tái sử dụng các thành phần module, lõi, và dịch vụ:
- Các View System phong phú và có thể mở rộng hỗ trợ bạn tạo giao diện ứng dụng: list, grid, text box, button…
- Resource Manager cung cấp truy cập tới các tài nguyên không phải mã nguồn như đồ họa, các file bố cục, string bản địa hóa.
- Notification Manager cho phép tất cả ứng dụng hiển thị cảnh bảo cá nhân hóa trên thanh trạng thái.
- Activity Manager quản lý vòng đời của các ứng dụng và cung cấp navigation back stack chung.
- Content Providers cho phép ứng dụng truy cập dữ liệu từ các ứng dụng khác, ví dụ ứng dụng Danh bạ, hoặc để chia sẻ dữ liệu của riêng ứng dụng.
- System App: Android đi kèm một loạt các ứng dụng lõi cho email, SMS, lịch, trình duyệt, danh bạ,… Bạn có thể thiết lập các app bên thứ 3 làm ứng dụng mặc định để truy cập web, gửi SMS, bàn phím mặc định,…Các ứng dụng hệ thống hoạt động như ứng dụng của lập trình viên tạo ra, cung cấp khả năng cho phép lập trình viên truy cập vào các tính năng đã có từ trong ứng dụng của bản thân đang phát triển.
Cách tạo project mới trong Android Studio
- Bạn mở Android Studio lên. Nếu bạn đã tạo project trước đó thì thực hiện theo các bước sau:
- B1: trên giao diện chính, chọn File->New->Project
- B2: trên giao diện mới hiện lên chọn mẫu Activity sau đó chọn Next. Mặc định ta chọn Empty Activity.
- B3: đặt tên cho project. Lưu ý không nên đặt tên tiếng Việt có dấu. Sau đó chọn tên package, nơi lưu trữ project, ngôn ngữ lập trình, SDK tối thiểu được support và nhấn nút Finish.
- Thành quả: một giao diện project mới hiện ra, nếu công cụ hỏi bạn tạo trong cửa sổ mới hay tạo trên cửa sổ hiện thời thì bạn chọn tạo trên cửa sổ mới. Chờ một chút là ta đã có thể bắt tay vào lập trình Android được rồi!