Tổng quan về giáo trình

Giáo trình Android Application Development (tác giả: Rick Rogers, John Lombardo, Zigurd Mednieks, Blake Meike; biên tập: Andy Oram; Nhà xuất bản: O'Reilly Media) là tài liệu học thuật chuyên sâu phục vụ học phần Phát triển ứng dụng trên thiết bị di động trong chương trình đào tạo Cử nhân và Kỹ sư các ngành Công nghệ Thông tin, Khoa học Máy tính và Kỹ thuật Phần mềm.

Mục tiêu học tập của giáo trình tập trung vào việc trang bị cho người học:

  • Hiểu biết toàn diện về kiến trúc hệ điều hành Android, môi trường thực thi Dalvik Virtual Machine và cơ chế hoạt động của liên minh Open Handset Alliance (OHA).
  • Năng lực thiết kế, xây dựng và hoàn thiện ứng dụng di động dựa trên 4 khối thành phần kiến trúc cốt lõi: Activity, Service, Broadcast Receiver và Content Provider.
  • Kỹ năng quản lý chu trình vòng đời của tiến trình, xử lý dữ liệu bền vững với hệ quản trị cơ sở dữ liệu SQLite, tích hợp hệ thống thông tin địa lý và dịch vụ định vị (Location-Based Services/Google Maps API).
  • Khả năng làm chủ cơ chế truyền thông liên tiến trình (IPC), giao diện định nghĩa dịch vụ Android (AIDL), cũng như quy trình kiểm thử, gỡ lỗi, ký số chứng chỉ và đóng gói phát hành phần mềm lên Android Market.

Về cấu trúc và phương pháp tiếp cận, giáo trình được thiết kế thành hai phần mạch lạc: Phần I (Chương 1 đến 7) hướng dẫn tiếp cận bộ công cụ phát triển (Development Kit Walk-Through) và Phần II (Chương 8 đến 15 cùng Phụ lục) đi sâu vào các chủ đề lập trình nâng cao (Programming Topics). Điểm đặc sắc mang tính sư phạm của tài liệu là phương pháp dẫn dắt dựa trên dự án thực tế xuyên suốt mang tên MJAndroid (MicroJobs) kết hợp phân tích tập mẫu mã nguồn chuẩn ApiDemos được tích hợp sẵn trong Android SDK.


Nội dung kiến thức cốt lõi

+-------------------------------------------------------------------------------+
|                       KIẾN TRÚC ỨNG DỤNG ANDROID                              |
+-------------------------------------------------------------------------------+
|  [Activities]        [Services]        [Broadcast Receivers]  [Content Prov.] |
|  - Giao diện &       - Tác vụ nền      - Xử lý thông điệp     - Chia sẻ dữ    |
|    Tương tác           không giao diện   hệ thống               liệu qua URI  |
+-------------------------------------------------------------------------------+
|                      LIÊN KẾT LỎNG & TRUYỀN THÔNG (Intents / IPC)             |
+-------------------------------------------------------------------------------+
|               MÔI TRƯỜNG THỰC THI DALVIK & CƠ CHẾ QUẢN TRỊ TÀI NGUYÊN         |
+-------------------------------------------------------------------------------+
|                 NHÂN HỆ ĐIỀU HÀNH LINUX & CÁC TRÌNH ĐIỀU KHIỂN                |
+-------------------------------------------------------------------------------+

Các chương/chủ đề chính

Cấu trúc nội dung giáo trình được triển khai tuần tự theo tiến trình logic từ cơ bản đến chuyên sâu:

  1. Tổng quan nền tảng và môi trường thực thi (Chương 1 - 2): Phân tích bối cảnh ra đời của Android, vai trò của liên minh Open Handset Alliance (OHA) và giấy phép Apache v2.0 trong việc giải quyết vấn đề phân mảnh phần mềm di động. Trình bày chi tiết 4 thành phần ứng dụng, chu trình vòng đời Activity và Service. Hướng dẫn thiết lập môi trường phát triển với Sun JDK, Eclipse IDE, bộ công cụ Android SDK và plugin Android Development Tools (ADT), kết thúc bằng ứng dụng nhập môn HelloWorld.
  2. Khảo sát ứng dụng thực tế và cấu trúc dự án (Chương 3 - 4): Phân tích dự án mẫu MJAndroid (ứng dụng mạng xã hội tìm kiếm việc làm ngắn hạn). Khảo sát cấu trúc thư mục chuẩn bao gồm src (chứa các lớp mã nguồn Java như MicroJobs.java, MicroJobsDatabase.java, MicroJobsList.java), res (drawable, layout, values/strings.xml), tệp cấu hình hệ thống AndroidManifest.xml và tệp chỉ mục tài nguyên tự động sinh R.java.
  3. Công cụ chẩn đoán, phân tích và phát hành (Chương 5 - 7): Hướng dẫn vận hành các công cụ kiểm thử gồm Eclipse Java Debugger, Logcat, Android Debug Bridge (adb), Dalvik Debug Monitor Service (DDMS) và công cụ phân tích hiệu năng Traceview. Khảo sát cấu trúc mã nguồn trong ứng dụng mẫu ApiDemos. Hướng dẫn hoàn thiện quy trình ký số chứng chỉ (Signing Certificate), cấu hình thỏa thuận người dùng cuối (EULA) và đăng tải ứng dụng lên Android Market.
  4. Lưu trữ dữ liệu và dịch vụ vị trí (Chương 8 - 9): Lập trình cơ sở dữ liệu nhúng SQLite, tạo lớp bao đóng truy xuất dữ liệu, định nghĩa và tiêu thụ Content Provider qua lược đồ định danh chuẩn (như content://contacts/people). Triển khai dịch vụ dựa trên vị trí (LBS), tích hợp bản đồ với MapView, MapActivity và lớp phủ vị trí người dùng MyLocationOverlay.
  5. Kiến trúc giao diện và đồ họa (Chương 10 - 12): Thiết lập giao diện theo mô hình MVC (Model-View-Controller). Phân loại và lập trình hệ thống Views/ViewGroups (TextView, EditText, Button, ListView, AdapterView, TabHost) cùng các bộ quản lý bố cục (LinearLayout, FrameLayout, TableLayout, RelativeLayout). Kỹ thuật vẽ đồ họa 2D thông qua Canvas, Drawable, Bitmap, xử lý hoạt họa (Animation) và đồ họa 3D với thư viện OpenGL ES.
  6. Giao tiếp liên tiến trình và hệ thống viễn thông (Chương 13 - 15 & Phụ lục): Cơ chế truyền thông liên tiến trình (IPC) thông qua đối tượng Intent, dịch vụ Binder và ngôn ngữ định nghĩa giao diện AIDL. Khảo sát gói viễn thông android.telephony, android.internal.telephony, thiết lập cuộc gọi tự động, truy xuất trạng thái mạng và tổng quan các giao thức không dây (Wireless Protocols).

Kiến thức nền tảng được xây dựng

Giáo trình hình thành nền tảng lý thuyết và kiến trúc hệ thống vững chắc cho người học thông qua các nguyên lý:

  • Mô hình kiến trúc phân lớp di động: Tách bạch giữa tầng nhân hệ điều hành Linux, tầng thư viện thực thi/máy ảo Dalvik, tầng khung ứng dụng (Application Framework) và tầng ứng dụng người dùng.
  • Mô hình liên kết lỏng (Loose Coupling): Khái niệm Intent như một thông điệp trừu tượng cho phép kết nối linh hoạt giữa các thành phần độc lập mà không cần phụ thuộc cứng vào mã nguồn của ứng dụng đích, tạo nền tảng cho mô hình "Mobile Mashups".
  • Cơ chế quản lý trạng thái tài nguyên hạn chế: Khái niệm vòng đời tiến trình di động, nơi hệ điều hành có quyền đơn phương giải phóng tài nguyên của các Activity hoặc Service ở trạng thái nền để ưu tiên cho tiến trình đang tương tác trực tiếp với người dùng.
Activity Lifecycle State Flow:
[onCreate()] -> [onStart()] -> [onResume()] <--> (Activity Running / Foreground)
                     ^              |
                     |         [onPause()] -> (Process killed if memory low)
                     |              |
                [onRestart()] <- [onStop()]
                                    |
                              [onDestroy()] -> (Activity Exits)

Kỹ năng phát triển

Sau khi hoàn thành chương trình học theo giáo trình, sinh viên đạt được các chuẩn kỹ năng:

  • Kỹ năng kỹ thuật (Technical Skills): Khả năng cài đặt cấu hình chuỗi công cụ SDK/ADT/Eclipse; viết mã Java kết hợp định nghĩa giao diện người dùng bằng XML; thiết kế cấu trúc lưu trữ cơ sở dữ liệu SQLite; viết các interface AIDL cho cơ chế RPC (Remote Procedure Call).
  • Kỹ năng phân tích và chẩn đoán (Analytical Skills): Phân tích call stack khi ứng dụng phát sinh ngoại lệ; theo dõi và lọc thông điệp vết hệ thống bằng Logcat; đánh giá mức độ chiếm dụng CPU và bộ nhớ bằng Traceview và DDMS.
  • Kỹ năng thực tiễn (Practical Competencies): Đóng gói ứng dụng (.apk), phân quyền bảo mật trên AndroidManifest.xml, quốc tế hóa ứng dụng thông qua tệp strings.xml, tạo khóa số và hoàn thiện quy trình phát hành phần mềm thương mại.

Phương pháp giảng dạy và học tập

Giáo trình được biên soạn phục vụ mô hình giảng dạy kết hợp giữa thuyết giảng lý thuyết kiến trúc và thực hành lập trình theo dự án (Project-Based Learning).

Phương pháp tiếp cận sư phạm (Pedagogical Approach)

Nội dung bài học được tổ chức theo quy trình tuyến tính có kiểm soát độ phức tạp:

  1. Tiếp cận lý thuyết và nguyên lý hoạt động của thành phần hệ thống.
  2. Thiết lập cấu hình và tệp khai báo XML.
  3. Cài đặt mã nguồn xử lý Java tương ứng.
  4. Chạy thử nghiệm trên máy ảo giả lập (Android Emulator) và kiểm thử thực tế trên thiết bị phần cứng.

Bài tập và đồ án tình huống (Case Studies & Practical Exercises)

  • Đồ án mẫu MJAndroid (MicroJobs): Đóng vai trò là case study xương sống. Sinh viên được trực tiếp tham gia xây dựng một ứng dụng đa chức năng bao gồm: hiển thị bản đồ địa phương qua GPS, truy vấn dữ liệu công việc lưu trữ trong SQLite, xử lý danh bạ, trao đổi tin nhắn SMS và kích hoạt cuộc gọi điện thoại tự động.
  • Khai thác kho mẫu ApiDemos: Giảng viên sử dụng hệ thống ví dụ chuẩn trong ApiDemos để phân tích các kỹ thuật chuyên biệt như tùy biến tiêu đề cửa sổ (CustomTitle), liên kết văn bản động (Linkify), hoặc vẽ giao diện tùy biến (Custom Widgets).

Phương pháp đánh giá (Assessment Methods)

  • Đánh giá quá trình: Kiểm tra việc thực hành từng module thành phần (thiết kế Layout XML, viết trình xử lý sự kiện cảm ứng/bàn phím, cấu hình quyền hạn uses-permission).
  • Đánh giá kết thúc học phần: Xây dựng một ứng dụng hoàn chỉnh có khả năng lưu trữ dữ liệu bền vững, kết nối định vị, xử lý vòng đời không bị rò rỉ bộ nhớ và thực hiện ký số đóng gói đúng quy chuẩn.

Hướng dẫn tự học (Self-Study Guidelines)

Người học cần chủ động khai thác các chế độ hiển thị (Perspectives) trong Eclipse (Java Perspective, Debug Perspective, DDMS Perspective), tự tạo các kịch bản kiểm thử giả lập trên Emulator Control (như mô phỏng mất kết nối mạng, thay đổi tọa độ GPS, cuộc gọi đến bất ngờ) để quan sát sự chuyển dịch trạng thái vòng đời của ứng dụng.


Điểm nổi bật và cập nhật

  • Giải quyết bài toán phân mảnh nền tảng di động: Khác với các hệ điều hành đóng như Symbian OS (Nokia Series 60) hay Windows Mobile, giáo trình phân tích giải pháp mã nguồn mở thống nhất của Android dựa trên giấy phép Apache v2.0, cho phép các nhà sản xuất phần cứng và lập trình viên dễ dàng tích hợp, tùy biến mà không bị phụ thuộc độc quyền.
  • Khảo sát chuyên sâu mã nguồn nội bộ: Các tác giả đã dành nhiều tháng phân tích mã nguồn trực tiếp của hệ thống qua nhiều phiên bản phát triển, mang lại các kiến giải kỹ thuật sâu sắc vượt khỏi phạm vi tài liệu hướng dẫn cơ bản trực tuyến.
  • Mô hình lập trình hướng dịch vụ và Mashup di động: Giáo trình chuẩn hóa phương pháp xây dựng ứng dụng lai ghép (Mobile Mashups), cho phép tái sử dụng trực tiếp các dịch vụ sẵn có trên thiết bị (bản đồ, danh bạ, trình quay số, tin nhắn) thông qua Intent và Content Provider thay vì lập trình lặp lại từ đầu.
  • Chuẩn hóa công cụ phát triển chuyên nghiệp: Giới thiệu đầy đủ quy trình làm việc chuẩn công nghiệp trên môi trường tích hợp Eclipse kết hợp ADT plugin, thiết lập nền tảng kỹ thuật kiểm thử tự động với DDMS và Traceview.

Đối tượng sử dụng giáo trình

Đối tượng sử dụng Mục đích và Phạm vi ứng dụng Điều kiện tiên quyết cần có
Sinh viên Đại học / Cao học Giáo trình học phần chính khóa: Lập trình thiết bị di động, Phát triển phần mềm hướng dịch vụ, Đồ án chuyên ngành Kỹ thuật phần mềm. Đã hoàn thành các học phần: Ngôn ngữ lập trình Java, Lập trình hướng đối tượng, Cơ sở dữ liệu, Cấu trúc dữ liệu & Giải thuật.
Giảng viên chuyên ngành Sử dụng làm đề cương bài giảng, tài liệu tham khảo chuẩn để biên soạn slide, giáo án thực hành phòng máy và xây dựng ngân hàng đề tài đồ án môn học. Hiểu rõ kiến trúc máy tính, hệ điều hành Linux và mô hình phát triển phần mềm di động.
Kỹ sư phần mềm / Lập trình viên Tài liệu tham khảo kỹ thuật để chuyển đổi kỹ năng từ lập trình ứng dụng Desktop/Web sang môi trường hệ điều hành Android. Kinh nghiệm lập trình Java, hiểu biết về cú pháp XML, truy vấn cơ sở dữ liệu SQL và kiến trúc mạng HTTP/REST.

Câu hỏi thường gặp

1. Giáo trình này phù hợp với trình độ người học nào?

Giáo trình được thiết kế dành cho sinh viên năm 3, năm 4 chuyên ngành Công nghệ thông tin, học viên sau đại học và các kỹ sư phần mềm đã có nền tảng vững chắc về ngôn ngữ lập trình Java muốn tiếp cận hệ thống phát triển ứng dụng di động Android.

2. Cần chuẩn bị những kiến thức nền tảng nào trước khi học?

Người học bắt buộc phải có kiến thức về ngôn ngữ Java (cú pháp, mô hình hướng đối tượng, xử lý ngoại lệ, luồng/threading), định dạng dữ liệu XML, ngôn ngữ truy vấn cơ sở dữ liệu SQL, giao thức mạng HTTP và kiến thức cơ bản về lập trình giao diện người dùng.

3. Điểm khác biệt căn bản giữa lập trình Android trong giáo trình này và lập trình ứng dụng Desktop truyền thống là gì?

Khác biệt cốt lõi nằm ở môi trường phần cứng giới hạn (CPU xung nhịp thấp hơn, bộ nhớ RAM giới hạn, dung lượng pin hạn chế). Do đó, lập trình viên Android phải kiểm soát chặt chẽ chu trình vòng đời của Activity/Service nhằm giải phóng tài nguyên kịp thời khi ứng dụng chuyển về trạng thái nền, thay vì duy trì tiến trình liên tục như trên máy tính để bàn.

4. Làm thế nào để tự học và thực hành hiệu quả các nội dung trong sách?

Người học nên tải toàn bộ mã nguồn dự án mẫu MJAndroid từ danh mục trực tuyến của O'Reilly, thiết lập môi trường Eclipse cùng ADT, thực hành biên dịch từng lớp mã nguồn, đồng thời kết hợp sử dụng công cụ DDMS và Logcat để theo dõi luồng thực thi và kiểm tra các trạng thái vòng đời khi chạy ứng dụng trên máy ảo Emulator.

5. Có những tài liệu và mã nguồn bổ trợ nào đi kèm theo giáo trình?

Đi kèm giáo trình là toàn bộ mã nguồn của dự án mẫu MJAndroid, kho mã nguồn mẫu ApiDemos được tích hợp sẵn trong bộ Android SDK, hệ thống tài liệu tham khảo chính thức tại cổng thông tin developer.android.com và thư viện số Safari Books Online.


Kết luận

Giáo trình Android Application Development là tài liệu kỹ thuật có cấu trúc sư phạm chặt chẽ, kết hợp hài hòa giữa cơ sở lý thuyết kiến trúc hệ thống và kỹ năng thực hành lập trình thực tế. Giá trị cốt lõi của tài liệu nằm ở việc chuẩn hóa tư duy phát triển phần mềm di động trên nền tảng mở, làm rõ cơ chế quản trị tài nguyên thông qua vòng đời thành phần và xây dựng ứng dụng liên kết lỏng.

Lộ trình học tập khuyến nghị cho người học là đi tuần tự từ việc làm quen môi trường và cấu trúc dự án ở Phần I (Chương 1 đến 7), sau đó thực hành chuyên sâu các phân hệ lưu trữ, định vị, giao diện đồ họa và truyền thông liên tiến trình ở Phần II (Chương 8 đến 15). Toàn bộ hệ thống bài giảng được củng cố bằng việc phân tích mã nguồn thực tế từ dự án MJAndroid và kho ví dụ chuẩn ApiDemos.