intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình di động android: Phần 1 - ThS. Bùi Trung Úy

Chia sẻ: Cuchoami2510 | Ngày: | Loại File: PDF | Số trang:89

360
lượt xem
54
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Lập trình di động android: Phần 1 cung cấp cho người học những kiến thức như: Tổng quan về lập trình android; xây dựng ứng dụng android; lập trình giao diện android. Mời các bạn cùng tham khảo!

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình di động android: Phần 1 - ThS. Bùi Trung Úy

  1. BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC KIẾN TRÚC ĐÀ NẴNG BỘ MÔN CÔNG NGHỆ THÔNG TIN ---    --- BÀI GIẢNG LẬP TRÌNH DI ĐỘNG ANDROID ThS.Bùi Trung Úy ĐÀ NẴNG 08/2019
  2. Bài giảng Lập Trình Di Động - Android MỤC LỤC Chương 1. TỔNG QUAN VỀ LẬP TRÌNH ANDROID ............................................................................... 4 1.1. Hệ điều hành Android ............................................................................................................. 4 1.1.1. Android là gì? ................................................................................................................... 4 1.1.2. Các phiên bản Android ..................................................................................................... 5 1.1.3. Các đặc trưng của Android ............................................................................................... 8 1.2. Kiến trúc phân tầng Android (software stack) ........................................................................ 11 1.3. Môi trường phát triển ứng dụng Android .............................................................................. 13 1.3.1. Các công cụ và thiết lập chung........................................................................................ 13 1.3.2. Android Studio IDE ......................................................................................................... 15 Chương 2. XÂY DỰNG ỨNG DỤNG ANDROID ................................................................................... 18 2.1. Cơ bản về ứng dụng Android................................................................................................. 18 2.1.1. Các thành phần chính của ứng dụng ............................................................................... 19 2.1.2. Tính tương thích thiết bị................................................................................................. 20 2.2. Tạo một ứng dụng đơn giản – HelloAndroid .......................................................................... 21 2.2.1. Tạo dự án mới ................................................................................................................ 21 2.2.2. Tổng quan về cấu trúc dự án Android ............................................................................. 25 2.3. Activity và cơ chế hoạt động ................................................................................................. 29 2.3.1. Activity là gì? .................................................................................................................. 29 2.3.2. Các trạng thái Activity .................................................................................................... 30 2.3.3. Vòng đời của Activity (Activity Lifecycle)......................................................................... 31 2.4. Intent và tương tác giữa các Activity ..................................................................................... 37 2.4.1. Intent là gì? .................................................................................................................... 37 2.4.2. Sử dụng đối tượng Intent ............................................................................................... 38 2.4.3. Truyền dữ liệu giữa các Activity ...................................................................................... 39 2.4.4. Lấy kết quả trả về từ Activity thông qua Intent ............................................................... 40 2.4.5. Bộ lọc Intent (Intent Filter) ............................................................................................. 41 2.5. Resource trong ứng dụng Android ........................................................................................ 42 2.5.1. Resource (tài nguyên) là gì?............................................................................................ 42 2.5.2. Các loại tài nguyên ......................................................................................................... 43 2.5.3. Truy cập vào tài nguyên ................................................................................................. 45 Chương 3. LẬP TRÌNH GIAO DIỆN ANDROID ..................................................................................... 47 3.1. Tổng quan về giao diện Android ............................................................................................ 47 3.2. Phương pháp tạo giao diện ................................................................................................... 49 ThS. Bùi Trung Úy 2
  3. Bài giảng Lập Trình Di Động - Android 3.2.1. Tạo view bằng mã nguồn Java ........................................................................................ 49 3.2.2. Tạo view bằng XML ........................................................................................................ 55 3.2.3. Tạo view bằng công cụ trực quan ................................................................................... 56 3.3. Bố cục giao diện (Layout) ...................................................................................................... 60 3.3.1. FrameLayout .................................................................................................................. 60 3.3.2. Linear Layout ................................................................................................................. 62 3.3.3. Relative Layout............................................................................................................... 64 3.3.4. TableLayout ................................................................................................................... 66 3.4.5. ConstraintLayout ............................................................................................................ 67 3.5. Xử lý sự kiện trên giao diện ................................................................................................... 72 3.6. Sử dụng View trên giao diện ................................................................................................. 77 3.6.1. Các view cơ bản ............................................................................................................. 77 3.6.2. Sử dụng hình ảnh trong Android..................................................................................... 83 Chương 4. FRAGMENT VÀ GIAO DIỆN NÂNG CAO ............................................................................ 90 4.1. Android Fragment ................................................................................................................. 90 4.1.1. Fragment là gì? .............................................................................................................. 90 4.1.2. Sử dụng Fragment .......................................................................................................... 91 4.1.3. Vòng đời của Fragment .................................................................................................. 93 4.2. Trình đơn (menu) và hộp thoại (dialog) ............................................................................... 105 4.2.1. Sử dụng trình đơn (menu) ............................................................................................ 105 4.2.2. Sử dụng hộp thoại (dialog) ........................................................................................... 107 4.3. Các điều khiển hiển thị dạng danh sách ............................................................................... 109 4.3.1. Sử dụng ListView .......................................................................................................... 109 4.3.2. Sử dụng SpinnerView ................................................................................................... 117 4.3.3. Sử dụng GridView ........................................................................................................ 119 Chương 5. QUẢN LÝ DỮ LIỆU TRONG ANDROID ............................................................................. 121 5.1. Dữ liệu trong Assets ............................................................................................................ 121 5.2. Dữ liệu trong SharedPreferences ........................................................................................ 122 5.3. Lưu trữ dữ liệu trên bộ nhớ SD ........................................................................................... 125 5.3.1. Sử dụng bộ nhớ trong .................................................................................................. 125 5.2.2. Sử dụng bộ nhớ ngoài .................................................................................................. 126 5.4. Sử dụng cơ sở dữ liệu SQLLite ............................................................................................. 128 ThS. Bùi Trung Úy 3
  4. Bài giảng Lập Trình Di Động - Android Chương 1. TỔNG QUAN VỀ LẬP TRÌNH ANDROID Trong chương này, chúng ta sẽ tìm hiểu các kiến thức cơ bản về hệ điều hành Android, về quá trình phát triển và trở thành một nền tảng phổ biến nhất hiện nay; kiến trúc tổng quan và nền tảng xây dựng hệ điều hành Android; cuối cùng là giới thiệu các bộ công cụ cần thiết và môi trường để phát triển một ứng dụng Android. 1.1. Hệ điều hành Android 1.1.1. Android là gì? Android là hệ điều hành mã nguồn mở, miễn phí được phát triển bởi Google. Android dựa trên nền tảng Linux được thiết kế dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng. Vào tháng 10/2003, công ty Android Inc được thành lập ở Palo Alto, California. Bốn người sáng lập là Rich Miner, Nick Sears, Chris White và Andy Rubin. Vào thời điểm thành lập, ông Rubin nói rằng Android Inc sẽ phát triển “thiết bị di động thông minh hơn hơn về vị trí và sở thích của chủ sở hữu”, Android được phát triển để cải thiện hệ điều hành của máy ảnh số. Nhóm nghiên cứu tại Android đã không nghĩ ngay từ đầu về việc tạo ra một hệ điều hành có thể phục vụ như phần cốt lõi của một hệ thống di động hoàn chỉnh. Nhưng sau đó, thị trường máy ảnh kỹ thuật số giảm sút, Android Inc đã quyết định chuyển sang hệ điều hành trên điện thoại di động. Năm 2005, chương lớn tiếp theo trong lịch sử của Android khi được Google mua lại công ty gốc. Ông Andy Rubin và các thành viên sáng lập khác vẫn tiếp tục phát triển hệ điều hành dưới quyền chủ sở hữu mới của họ. Quyết định này được đưa ra để sử dụng Linux làm nền tảng cho hệ điều hành Android và điều đó cũng có nghĩa là Android sẽ được cung cấp miễn phí cho các nhà sản xuất điện thoại di động của bên thứ ba. Google và nhóm Android cảm thấy công ty có thể kiếm tiền với các dịch vụ khác sử dụng hệ điều hành, bao gồm cả ứng dụng. Hệ điều hành Android được chính thức ra mắt từ năm 2007 cùng với tuyên bố thành lập Liên minh thiết bị cầm tay mở (OHA) - một hiệp hội bao gồm nhiều công ty trong đó có Texas Instruments, Google, Intel, Qualcomm, Samsung Electronics, T- Mobile,… được thành lập với mục đích phát triển các chuẩn mở cho thiết bị di động. Chiếc điện thoại Android đầu tiên được bán ra là HTC Dream phát hành vào năm 2008. Hình ảnh quen thuộc hiện nay của hệ điều hành Android giống như sự kết hợp của một con robot và một lõi màu xanh lá cây do Irina Blok thiết kế. Theo Blok, thiết kế cuối được lấy cảm hứng từ việc nhìn vào biểu tượng nhà vệ sinh quen thuộc đại diện cho “đàn ông” và “phụ nữ”. ThS. Bùi Trung Úy 4
  5. Bài giảng Lập Trình Di Động - Android Android có mã nguồn mở và được Google phát hành theo Giấy phép Apache. Chính mã nguồn mở cùng với một giấy phép không có nhiều ràng buộc đã cho phép các nhà phát triển thiết bị, mạng di động và công ty phần mềm được điều chỉnh và phân phối Android một cách tự do. Bản chất mở của Android cũng khích lệ một đội ngũ đông đảo lập trình viên và những người đam mê sử dụng mã nguồn mở để tạo ra những dự án do cộng đồng quản lý. Những dự án này bổ sung các tính năng cao cấp cho những người dùng thích tìm tòi hoặc đưa Android vào các thiết bị ban đầu chạy hệ điều hành khác. Theo thống kê của Gartner, Android chiếm 75% thị phần điện thoại thông minh trên toàn thế giới vào thời điểm quý 3 năm 2012, với tổng cộng 500 triệu thiết bị đã được kích hoạt và 1,3 triệu lượt kích hoạt mỗi ngày, đến năm 2017 thị phần Android tăng lên là 86,2%. 1.1.2. Các phiên bản Android Sự đa dạng của Android là một điều không thể bàn cãi, khi nó không chỉ dừng lại ở sự phổ cập cho smartphone hay tablet, mà giờ đây từ Smart TV, tới xe hơi, hay đồng hồ thông minh,… chúng ta đều thấy sự có mặt của nền tảng này để nó có thể giao tiếp một cách trực tiếp với người dùng. Dù vậy, để đạt được một thị phần ấn tượng như vậy, Android đã phải trải qua thăng trầm trong suốt lich sử phát triển. Android 1.0 là phiên bản thương mại đầu tiên của hệ sinh thái Android được phát hành chính thức vào ngày 23/9/2008 sau một quá trình thử nghiệm kéo dài và được cài đặt trên điện thoại T-Mobile G1 (HTC Dream). Mặc dù đây chỉ là phiên bản đầu tiên của Android, thế nhưng Android 1.0 đã đặt một nền móng mạnh mẽ trong các tính năng của hệ sinh thái này khi mà chúng ta thấy một sự đa dạng trong các tính năng được tồn tại và sử dụng cho đến ngày nay, bao gồm trình duyệt web, khả năng hỗ trợ hệ thống camera tích hợp trên thiết bị di động, đồng bộ hóa dịch vụ Google Mail thông qua ứng dụng Gmail, trình phát video trên ThS. Bùi Trung Úy 5
  6. Bài giảng Lập Trình Di Động - Android YouTube, Google Maps, danh bạ Contacts, và ứng dụng lịch Calendar cũng có khả năng đồng bộ hóa. Android 1.5 Cupcake (phát hành tháng 4/2009) là bản cập nhật lớn đầu tiên của Android. Cupcake đã thêm các tiện ích cho màn hình chính, bàn phím ảo, quay video trong máy ảnh, chức năng sao chép và dán vào trình duyệt web. Android 2.0 Eclair (phát hành tháng 10/2009) hỗ trợ tài khoản Google, cho phép người dùng tìm kiếm nội dung theo từ khóa trong các tin nhắn văn bản, đồng thời bổ sung hỗ trợ đa chạm và máy ảnh được cải tiến với đèn flash, zoom số. Android 2.2 Froyo (phát hành tháng 5/2010) giới thiệu Flash Player 10.1, cho phép điện thoại phát video và phát trực tuyến âm thanh. Máy ảnh flash tương thích Bluetooth giúp người dùng có thể sử dụng điện thoại của mình làm điểm phát sóng Wi-Fi (hotspot 3G/4G). Android 2.3 Gingerbread (phát hành tháng 12/2010), Android được biết đến rộng rãi hơn nhờ tính năng giao tiếp trường gần (NFC), cho phép điện thoại thông minh kết nối với các thiết bị lân cận khác. Android 2.3 cũng cho phép gọi điện video bằng máy ảnh mặt trước và thêm trình quản lý tải xuống. Android 3.0 Honeycomb (phát hành tháng 2/2011) là bản cập nhật hầu như chỉ dành cho máy tính bảng, hỗ trợ đồ họa 3D, các tab trình duyệt cạnh nhau, trò chuyện video với Google Talk, chia sẻ kết nối Bluetooth. Android 4.0 Ice Cream Sandwich (phát hành tháng 10/2011) sáp nhập các hệ điều hành điện thoại và máy tính bảng. ICS cũng thêm tính năng nhận dạng khuôn mặt để mở khóa điện thoại, phản hồi văn bản, tự động trả lời các cuộc gọi bị từ chối và hiệu ứng video trực tiếp trong camera. ThS. Bùi Trung Úy 6
  7. Bài giảng Lập Trình Di Động - Android Android 4.1 Jelly Bean (phát hành tháng 7/2012) có hiệu suất nhanh hơn, mượt mà hơn nhờ "Project Butter", cho phép người dùng tương tác nhiều hơn, thông báo có thể mở rộng, trình duyệt Chrome mặc định... Android 4.4 KitKat (phát hành tháng 7/2013) có thêm biểu tượng cảm xúc vào bàn phím Google, bộ nhớ nhỏ hơn để hỗ trợ điện thoại cấp thấp hơn, đồng thời cho phép người dùng in văn bản khi đang di chuyển với tính năng Google Cloud Print. Android 5.0 Lollipop (phát hành tháng 6/2014) có giao diện phẳng Material Design, thông báo xuất hiện trên màn hình khóa. Hệ điều hành cũng có chế độ ưu tiên, hỗ trợ đa người dùng, ghim màn hình... Android 6.0 Marshmallow (phát hành tháng 5/2015) bắt đầu có chế độ Doze để tiết kiệm pin. Đồng thời bổ sung thêm hỗ trợ tích hợp cho đầu đọc vân tay, USB Type-C và chế độ 4K cho các ứng dụng. Android 7.0 Nougat (phát hành tháng 8/2016) người dùng có thể xóa tất cả ứng dụng của mình bằng một lần nhấn, đồng thời điều chỉnh tông màu da của biểu tượng cảm xúc và hỗ trợ VR. Android 8.0 Oreo (phát hành tháng 3/2017) bổ sung nhiều tác vụ trong ứng dụng ảnh. Ngoài ra còn mang đến trải nghiệm sao chép và dán tốt hơn, cải thiện bảo mật và quản lý pin tốt hơn. Android Pie 9.0 (phát hành tháng 8/2018) tập trung nâng cấp phần mềm giúp điện thoại Android hoạt động nhanh hơn và tiết kiệm pin hơn. Android Pie bổ sung công cụ trí tuệ nhân tạo (AI) vào các ứng dụng và lối tắt tiện lợi hơn cho người dùng. ThS. Bùi Trung Úy 7
  8. Bài giảng Lập Trình Di Động - Android 1.1.3. Các đặc trưng của Android Android được Google phát triển cho đến khi những thay đổi và cập nhật đã hoàn thiện, khi đó mã nguồn mới được công khai. Mã nguồn này, nếu không sửa đổi, chỉ chạy được trên một số thiết bị, thường là thiết bị thuộc dòng Nexus. Có nhiều thiết bị có chứa những thành phần được giữ bản quyền do nhà sản xuất đặt vào thiết bị Android của họ. Sử dụng nhân Linux Android ban đầu được xây dựng dựa trên nhân Linux phiên bản 2.6; kể từ Android 4.0 Ice Cream Sandwich trở về sau là phiên bản 3.x, với middleware, thư viện và API viết bằng C, còn phần mềm ứng dụng chạy trên một nền tảng gồm các thư viện tương thích với Java. Android sử dụng máy ảo Dalvik với một trình biên dịch động để chạy 'mã dex' (Dalvik Executable) của Dalvik, thường được biên dịch sang Java bytecode. Nền tảng phần cứng chính của Android là kiến trúc ARM. Ngoài ra, Android cũng hỗ trợ x86 thông qua dự án Android x86 (chip Intel Atom), và Google TV cũng sử dụng một phiên bản x86 đặc biệt của Android. Nhân Linux dùng cho Android đã được Google thực hiện nhiều thay đổi về kiến trúc so với nhân Linux gốc. Android không có sẵn hệ thống X-Window cũng không hỗ trợ các thư viện GNU chuẩn, nên việc chuyển các ứng dụng hoặc thư viện Linux có sẵn sang Android rất khó khăn. Các ứng dụng C/C++ và native SDL khác cũng được hỗ trợ bằng cách sử dụng giao tiếp JNI. Cơ chế quản lý bộ nhớ Vì các thiết bị Android chủ yếu chạy bằng pin, nên Android được thiết kế để quản lý bộ nhớ (RAM) giảm tối đa tiêu thụ điện năng. Khi một ứng dụng Android không còn được sử dụng, hệ thống sẽ tự động ngưng nó trong bộ nhớ - trong khi ứng dụng về mặt kỹ thuật vẫn "mở", nhưng ứng dụng này sẽ không tiêu thụ bất cứ tài nguyên nào (như năng lượng pin hay năng lượng xử lý) và nằm đó cho đến khi nó được cần đến. Cách làm như vậy có lợi kép là vừa làm tăng khả năng phản hồi nói chung của thiết bị Android, vì ứng dụng không nhất thiết phải đóng rồi mở lại từ đầu, vừa đảm bảo các ứng dụng nền không làm tiêu hao năng lượng một cách không cần thiết. Android quản lý các ứng dụng trong bộ nhớ một cách tự động: khi bộ nhớ thấp, hệ thống sẽ hủy ứng dụng và tiến trình không hoạt động trong một thời gian dài, xếp theo thời điểm cuối mà chúng được sử dụng (tức là cũ nhất sẽ bị tắt trước). Quá trình này được thiết kế trong suốt với người dùng, để người dùng không cần phải quản lý bộ nhớ hoặc tự tay tắt các ứng dụng. Để duy trì một môi trường chức năng mutil-task, Android đặt một giới hạn cứng về kích thước heap cho mỗi ứng dụng. Giới hạn kích thước heap chính xác thay đổi giữa các thiết bị dựa trên tổng RAM mà thiết bị có sẵn. Nếu ứng dụng của bạn đã đạt đến giới hạn sức chứa của nó và cố gắng để cấp phát bộ nhớ hơn, nó sẽ nhận được một lỗi OutOfMemoryError. ThS. Bùi Trung Úy 8
  9. Bài giảng Lập Trình Di Động - Android Tính bảo mật và riêng tư Các ứng dụng Android chạy trong một "hộp cát" (sandbox), là một khu vực riêng tư với hệ thống và không được tiếp cận đến phần còn lại của tài nguyên hệ thống, trừ khi nó được người dùng trao quyền truy cập một cách công khai khi cài đặt. Trước khi cài đặt một ứng dụng, Google Play sẽ hiển thị tất cả các quyền mà ứng dụng đòi hỏi, chẳng hạn như một trò chơi cần kích hoạt bộ rung hoặc lưu dữ liệu vào thẻ nhớ SD, và nó cần quyền đọc tin nhắn SMS hoặc tiếp cận danh bạ điện thoại. Sau khi xem xét các quyền này, người dùng có thể chọn đồng ý hoặc từ chối, ứng dụng chỉ được cài đặt khi người dùng đồng ý. Máy ảo Dalvik (Android < 4.4 Kitkat) Java được biết đến với khẩu hiệu "viết một lần, chạy mọi nơi" (write once, run anywhere). Tính năng này của hệ sinh thái Java có được nhờ một lớp máy ảo đứng giữa lớp ứng dụng và lớp hệ điều hành, gọi là máy ảo Java – JVM (Java Virtual Machine). Máy ảo Java chạy rất ổn định và đồng nhất trên các môi trường máy tính cá nhân (JSE) và máy chủ (JEE), tuy nhiên trong môi trường di động (JME) thì máy ảo Java bị phân mảnh tương đối nhiều với các gói (pakages), cấu hình (configurations) và các mẫu (profiles) khác nhau. Google đã chọn Java làm ngôn ngữ phát triển ứng dụng cho hệ điều hành Android, tuy nhiên lại từ bỏ cả phiên bản Java di động (JME) lẫn máy ảo Java (JVM) để phát triển một máy ảo riêng - máy ảo Dalvik và tập thư viện Java chuẩn được viết lại và thu gọn hơn. Giải pháp máy ảo Dalvik được đưa ra nhằm cân bằng giữa 2 điểm: - Mỗi ứng dụng Android được chạy trong tiến trình riêng, với một thực thể (instance) của máy ảo Dalvik riêng. Dalvik được thiết kế để hệ điều hành có thể chạy nhiều thực thể của máy ảo một cách hiệu quả với file thực thi Dalvik (.dek file) được thiết kế để tối ưu hóa sử dụng bộ nhớ. - Máy ảo Dalvik sử dụng nhân Linux cho các việc liên quan đến lớp dưới của hệ thống như quản lý tiểu trình (threading), quản lý bộ nhớ cấp thấp,... Ứng dụng Android được phát triển bằng ngôn ngữ Java, sau đó được biên dịch thành dạng mã nhị phân (Java bytecode). Các file nhị phân *.class này sẽ được chuyển đổi thành 1 file nhị phân dùng cho máy ảo Dalvik - .dex (Dalvik EXecutable) trước ThS. Bùi Trung Úy 9
  10. Bài giảng Lập Trình Di Động - Android khi được cài lên thiết bị. Các tập tin .dex được thiết kế để phù hợp hơn với các thiết bị hạn chế về bộ nhớ cũng như hiệu năng xử lý. Dalvik là một phần mềm mã nguồn mở, ban đầu được phát triển bởi Dan Bornstein, và đặt theo tên ngôi làng Dalvík của ông tại Eyjafjörður, Iceland, quê hương của ông. Máy ảo ART - Android Runtime (Android >= 4.4 Kitkat) Trong suốt quá trình phát triển, hầu như mọi thành phần của Android đều được cập nhật mới hay thậm chí là thay đổi hoàn toàn. Tuy nhiên, có một thứ cực kì quan trọng, đó là máy ảo Dalvik dùng để chạy ứng dụng Android thì vẫn được giữ nguyên gần như so với ban đầu. Chính nhờ Dalvik mà chúng ta chỉ có một app duy nhất nhưng vẫn có thể chạy trên smartphone, tablet, Smart TV, thiết bị nhúng,... với nhiều loại CPU khác nhau và từ các hãng khác nhau. Vấn đề là với việc dịch và chạy bằng Dalvik đó là tốc độ chậm! chính sự xuất hiện của nó thường làm cho hiệu năng ứng dụng Android thấp hơn so với các phần mềm dùng trực tiếp mã đã được biên dịch sẵn. Trong nhiều trường hợp, nhất là với những CPU hiện đại có sức mạnh xử lý tốt thì sự khác biệt này không đáng kể. Tuy nhiên, với những phần mềm nặng thì chúng ta sẽ thấy nó một cách rõ rệt. Android chậm cũng một phần là do Dalvik, và việc bắt vi xử lí chạy lâu hơn cũng là nguyên nhân khiến hệ thống tiêu thụ nhiều điện hơn. Đó là lý do mà Google đã phát triển một giải pháp thay thế cho máy ảo Dalvik già cỗi - máy ảo Android Runtime (ART). Một phiên bản thử nghiệm của ART đã được nhúng trong Android 4.4 và chúng ta có thể tìm thấy nó ở trong phần Settings > Developer Options > Select Runtime. ThS. Bùi Trung Úy 10
  11. Bài giảng Lập Trình Di Động - Android Từ Android 5.0, ART chính thức được thay thế Davilk là máy ảo mặc định của Android (https://developer.android.com/about/versions/android-5.0-changes) ART sử dụng một cách xử lí rất khác so với Dalvik. Đối với Davik, các ứng dụng được biên dịch ra mã máy ở thời điểm mà chúng chạy. Dalvik thực hiện điều này bằng một bộ máy gọi là "Just-In-Time" (JIT) compiler, tức là chỉ đoạn mã nào cần thiết mới được dịch và chỉ dịch khi cần. Còn với ART, nó sử dụng bộ máy "Ahead-Of-Time" (AOT) để biên dịch mã bytecode của ứng dụng thành mã máy ở thời điểm cài ứng dụng vào thiết bị. Do ART biên dịch các file thực thi, nhân của Android giờ có thể quản lý các trang của code page (tập mã hóa ký tự của 1 ngôn ngữ) một cách hiệu quả hơn. Nhờ đó, mà hệ điều hành di động của Google có thể quản lý bộ nhớ tốt hơn và ít tốn RAM hơn. Ảnh hưởng của ART tới thời lượng pin cũng là rất đáng kể, do hệ điều hành không cần phải biên dịch mã nguồn trong quá trình chạy ứng dụng nữa. Nhờ đó, quá trình chạy ứng dụng sẽ giảm được đáng kể sức ép lên CPU, giúp tiết kiệm pin tốt hơn. Hạn chế lớn nhất của ART so với Dalvik là quá trình biên dịch mã sẽ tốn nhiều thời gian hơn. Do đó, quá trình khởi động điện thoại cũng như lần chạy ứng dụng đầu tiên sẽ tốn nhiều thời gian hơn. 1.2. Kiến trúc phân tầng Android (software stack) Để đảm bảo sự đơn giản, tính dùng chung và bảo mật trong các ứng dụng trên hệ thống Android, các thư viện cho ứng dụng Android được chia ra thành các lớp từ thấp đến cao, các thành phần ở lớp trên chủ yếu sử dụng các dịch vụ do các lớp ngay bên dưới cung cấp mà ít khi phải dùng đến các API của các lớp thấp hơn. Kiến trúc này được chia ra thành các tầng chính như sau: ThS. Bùi Trung Úy 11
  12. Bài giảng Lập Trình Di Động - Android Các lớp phần mềm trong Android Trong đó, mỗi tầng đều có chức năng vai trò riêng biệt với nhau: Lớp hạt nhân Linux (Linux kernel): Đây là lớp nền tảng mà hệ điều hành Android dựa vào nó để phát triển, bao gồm các dịch vụ lõi của hệ thống như trình điều khiển phần cứng, quản lý tiến trình, quản lý bộ nhớ, mạng, nguồn điện và bảo mật.... Đây là lớp chứa tất cả các giao tiếp thiết bị ở mức thấp dùng để điều khiển các phần cứng khác trên thiết bị Android. Lớp các thư viện (libraries) - chạy bên trên lớp hạt nhân, bao gồm các các thư viện lõi viết bằng C/C++ như libc và SSL, cũng như các thư viện: - Thư viện cho việc phát các loại dữ liệu âm thanh và hình ảnh. - Bộ quản lý vẽ (surface manager) cho việc hiển thị đồ họa trên màn hình. - Các thư viện đồ họa bao gồm SGL và OpenGL cho đồ họa 2D và 3D. - SQLite cho các ứng dụng sử dụng cơ sỡ dữ liệu. - SSL và WebKit cho việc tích hợp trình duyệt và bảo mật Internet. Lớp thực thi Android (Android runtime) - đây là lớp máy ảo có thể là máy ảo Davik hoặc máy ảo ART giúp việc thực thi ứng dụng Android. Ngoài ra, Android runtime còn giúp tối ưu năng lượng pin cũng như CPU của thiết bị Android. Lớp khung ứng dụng (Application framework): cung cấp tập thư viện API để phát triển ứng dụng Android. Lớp này cung cấp khả năng giao tiếp với phần cứng thông qua các lớp bên dưới cũng như quản lý giao diện và các tài nguyên của ứng dụng. ThS. Bùi Trung Úy 12
  13. Bài giảng Lập Trình Di Động - Android Lớp ứng dụng (Application layer): hầu hết các ứng dụng (bao gồm cả ứng dụng cài sẵn trong hệ điều hành và các ứng dụng của các bên thứ 3) đều được phát triển dựa trên lớp này (dùng chung tập API). Lớp ứng dụng được chạy trong bộ thực thi Android (với các thư viện lõi và máy ảo), sử dụng các lớp và các dịch vụ cung cấp bởi lớp Application Framework. 1.3. Môi trường phát triển ứng dụng Android 1.3.1. Các công cụ và thiết lập chung Java Development Kit (JDK): là một bộ hỗ trợ phát triển ứng dụng Java. Trước khi làm việc với Android trên máy tính, chúng ta sẽ cần cài đặt và thiết lập JDK (Java Development Kit), bạn có thể cài đặt phiên bản mới nhất JDK 8 ở link sau: http://www.oracle.com/technetwork/java/javase/downloads/index.html Các thiết lập Java cần thiết: Thiết lập các biến môi trường (Enviroment variable) JAVA_HOME và Path. Vào Control Panel , mở Advanced tab > Environment Variables. ThS. Bùi Trung Úy 13
  14. Bài giảng Lập Trình Di Động - Android Chỉnh sửa giá trị của biến Path: Dùng câu lệnh java -version và javac -version để kiểm tra, nếu có kết quả tương tự hình bên dưới tức là JDK đã cài đặt và thiết lập thành công. Bộ công cụ Android SDK (Software Development Kit) Android SDK là một tập hợp các thư viện được sử dụng để phát triển và đóng gói ứng dụng Android. Bạn có thể vào trong web chính thức của Android developer để tải Android SDK và các gói đi kèm: Android SDK chia các công cụ, thư viện, … thành các gói (package) mà bạn có thể tải về khi cần thết, kể cả tải mới cũng như cập nhật cái có sẵn trong SDK. Để tải về các gói có sẵn trong Android SDK: ThS. Bùi Trung Úy 14
  15. Bài giảng Lập Trình Di Động - Android 1.3.2. Android Studio IDE Tháng 5 năm 2013, Google công bố Android Studio, một môi trường phát triển ứng dụng tích hợp (IDE) dành riêng cho Android, mã nguồn mở, dựa trên IDE Java IntelliJ của hãng JetBrains. Android Studio là một IDE mạnh mẽ, được thiết kế và phát triển đặc biệt dành cho việc xây dựng các ứng dụng Android. Nó có một lượng lớn các tính năng để đơn giản hóa tất cả các khía cạnh của việc phát triển ứng dụng Android, chẳng hạn như một trình soạn thảo code mạnh mẽ, giao diện trực quan và trình biên tập theme, vector và tài nguyên hình ảnh, và nhiều hơn nữa. Bạn có thể thiết lập một dự án Android mới cho nhiều loại ứng dụng Android khác nhau chỉ trong vòng vài giờ. Trước đây, khi Android mới được ra đời, việc phát triển ứng dụng Android được thực hiện bằng Eclipse và Android Developer Tools plugin. Tuy nhiên, điều đó đã thay đổi với việc Google phát hành Android Studio. ThS. Bùi Trung Úy 15
  16. Bài giảng Lập Trình Di Động - Android Bạn có thể download bộ cài đặt Android Studio tại trang web chính thức của Google http://developer.android.com/studio Android Studio cũng đi kèm với bộ emulator (trình giả lập) giống thiết bị thật mà bạn có thể sử dụng nếu không muốn làm việc trên thiết bị Android thật, và có thể tải về và chạy bất kỳ phiên bản Android nào. ThS. Bùi Trung Úy 16
  17. Bài giảng Lập Trình Di Động - Android Phiên bản mới nhất của Android Studio 3.x, có một số tính năng chính bao gồm: o Hỗ trợ xây dựng dự án Android dạng Gradle. o Hỗ trợ sửa lỗi nhanh và tái sử dụng cấu trúc phương thức. o Cung cấp các công cụ kiểm tra tính khả dụng, khả năng họat động của ứng dụng, tương thích nền tảng… o Hỗ trợ bảo mật mã nguồn và đóng gói ứng dụng. o Trình biên tập giao diện cung cấp tổng quan giao diện ứng dụng và các thành phần, cho phép tuỳ chỉnh trên nhiều cấu hình khác nhau. o Cho phép tương tác với nền Google Cloud Yêu cầu hệ thống để cài đặt Android Studio 3.x cho từng hệ điều hành như sau: o Microsoft® Windows® 7/8/Vista/2003/2007/2010 (32 or 64-bit). o 2 GB RAM trở lên. o Dung lượng ổ đĩa ứng còn trống ít nhất 400 MB. o Ít nhất 1 GB cho Android SDK, emulator system images và caches. o Độ phân giảm tối thiểu 1280 x 800. o Java Development Kit (JDK) 7 trở lên. o Tùy chọn thêm cho accelerated emulator: hỗ trợ bộ xử lý Intel® với các phiên bản: Intel® VT-x, Intel® EM64T (Intel® 64), và tính năng Execute Disable (XD) Bit. ThS. Bùi Trung Úy 17
  18. Bài giảng Lập Trình Di Động - Android Chương 2. XÂY DỰNG ỨNG DỤNG ANDROID Trong chương này, chúng ta sẽ tìm hiểu cấu trúc và các thành phần cơ bản của một ứng dụng Android; các bước cụ thể để xây dựng một ứng dụng Android cơ bản nhất; cách cài đặt và chạy ứng dụng trên thiết bị. 2.1. Cơ bản về ứng dụng Android Các ứng dụng Android thường được viết bằng ngôn ngữ lập trình Java. Các công cụ thuộc Android SDK sẽ biên dịch (compile) mã nguồn - kèm theo bất cứ file dữ liệu và tài nguyên - thành một gói Android (package), đó là một file lưu trữ (archive file) với hậu tố .apk. Toàn bộ nguồn trong một file .apk được coi là một ứng dụng, đây chính là file mà các thiết bị Android dùng để cài đặt ứng dụng. Hình 2.1. Quá trình biên dịch ứng dụng Android Khi đã được cài đặt trên thiết bị, mỗi ứng dụng Android đều “sống” trong vùng sandbox (môi trường ảo chạy ứng dụng) bảo mật của mình: • Hệ điều hành Android là hệ thống Linux đa người dùng (multi-user), trong mỗi ứng dụng lại là một người dùng khác. • Theo mặc định, hệ thống gán cho mỗi ứng dụng một user ID duy nhất (ID này chỉ được hệ thống dùng và ứng dụng không biết tới nó). Hệ thống thiết lập quyền cho tất cả các file trong ứng dụng, sao cho chỉ duy nhất user ID được gán cho ứng dụng đó mới có thể truy cập vào những file này. • Mỗi tiến trình đều có máy ảo (virtual machine - VM) riêng của nó, nên mã của một ứng dụng sẽ chạy độc lập với các ứng dụng khác. ThS. Bùi Trung Úy 18
  19. Bài giảng Lập Trình Di Động - Android 2.1.1. Các thành phần chính của ứng dụng Một ứng dụng Android có thể bao gồm một hoặc nhiều thành phần kết hợp với nhau, mỗi thành phần đều có thực thể riêng và đóng một vai trò cụ thể. Sau đây là một số thành phần chính của một ứng dụng Android: Activity Activity là thành phần quan trọng nhất đóng vai trò là bộ khung của ứng dụng. Trong ứng dụng Android, Activity là thành phần có hiển thị màn hình giao diện, nơi người dùng có thể tương tác với ứng dụng. Một ứng dụng có thể có một hoặc nhiều Activity, Activity được khởi chạy đầu tiên khi ứng dụng khởi động được gọi là “main activity”. Service Service là thành phần chạy ngầm (background) trong Android, service được sử dụng để thực thi các tác vụ cần nhiều thời gian, thực hiện ở chế độ ngầm và thường không cần giao diện hiển thị. Ví dụ, khi bạn đang nghe nhạc bằng ứng dụng nghe nhạc nhưng bạn vẫn nghe được kể cả khi đã tắt ứng dụng đó là vì ứng dụng đó có service đang chạy ngầm. Không chỉ thế các bạn còn có thể liên kết hoặc kết nối giữa một Activity với một service, ví dụ khi download một file từ trên mạng, việc download thực hiện ở service, sau đó sẽ trả kết quả phần trăm download lên activity để hiện thị cho người dùng biết. Notification Notification là thành phần cho phép gửi các thông báo đến người dùng mà không chiếm quá nhiều việc điều khiển của người dùng trên thiết bị. Chẳng hạn, khi nhận được một tin nhắn hay một thư điện tử, thiết bị sẽ sử dụng Notification để thông báo người dùng thông qua nhạc chuông, đèn nền, thể hiện biểu tượng trên thanh tác vụ… Notification được xây dựng cho mục đích gửi các thông báo đến người dùng thông qua thanh trạng thái. Giao diện Notification không thuộc giao diện ứng dụng, nhưng có thể tuỳ chỉnh giao diện Notification thông qua các phương thức có sẵn. ThS. Bùi Trung Úy 19
  20. Bài giảng Lập Trình Di Động - Android Content Provider Content Provider được sử dụng để quản lý và chia sẻ dữ liệu giữa các ứng dụng. Content Provider xây dựng cách thức truy xuất tập hợp các dữ liệu ứng dụng, dữ liệu có thể lưu trữ ở nhiều dạng như: SQLite, tập tin, tài nguyên Web hoặc bất kì thư mục lưu trữ nào. Có thể sử dụng Content Provider để xây dựng các ứng dụng sử dụng chung nguồn tài nguyên hoặc sử dung riêng. Trong Android, một số Content Provider được xây dựng sẵn như: Danh bạ, tài nguyên đa truyền thông, lịch,... 2.1.2. Tính tương thích thiết bị Khi xây dựng một ứng dụng Android, chúng ta cần quan tâm và đảm bảo sự tương thích chạy trên sự đa dạng của các thiết bị như: - Hỗ trợ các phiên bản Android: Mỗi phiên bản kế tiếp được bổ sung hoặc loại bỏ các phương thức API, cần thực thi khai báo các thông tin phiên bản để sử dụng đầy đủ các tính năng cho ứng dụng. - Xử lý kích thước màn hình khác nhau: Trong giai đoạn đầu, chỉ có một số ít các thiết bị có thể chạy Android và hầu như tất cả chúng là điện thoại. Tuy nhiên, trong những năm qua, với ngày càng nhiều hơn các nhà sản xuất thiết bị áp dụng nền tảng Android, thì các kích cỡ màn hình và mật độ điểm ảnh bắt đầu trở nên khác nhau. Android cũng bắt đầu hỗ trợ các thiết bị màn hình lớn, chẳng hạn như máy tính bảng, Google TV,... Do đó, các nhà phát triển phải dự kiến sử dụng nhiều kích thước hình ảnh và bố cục để hỗ trợ tất cả các màn hình khác nhau. Ứng dụng Android cần tương thích với nhiều kích cỡ thiết bị, được phân chia thành hai thuộc tính:  Kích thước vật lý màn hình (screen size)  Mật độ điểm ảnh (density). ThS. Bùi Trung Úy 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2