Bên cạnh đó hệ thống nhúng cũng đang rất phát triển trong công nghệ thông tin và truyền thông, ở đó các chức năng xử lý được ứng dụng cụ thể cho các thiết bị như điện thoại di động, đồ đ
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN THỊ THU HIỀN
NGHIÊN CỨU PHÁT TRIỂN PHẦM MỀM NHÚNG
CHO CÁC THIẾT BỊ CẦM TAY TRÊN
NỀN TẢNG ANDROID
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
HÀ NỘI, 2013
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN THỊ THU HIỀN
NGHIÊN CỨU PHÁT TRIỂN PHẦM MỀM NHÚNG
CHO CÁC THIẾT BỊ CẦM TAY TRÊN
NỀN TẢNG ANDROID
Ngành: Công nghệ thông tin
Chuyên ngành: Công nghệ phần mềm
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS LÊ QUANG MINH
HÀ NỘI, 2013
Trang 3MỤC LỤC
LỜI CAM ĐOAN Error! Bookmark not defined.
MỤC LỤC 3
DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT 5
DANH MỤC HÌNH VẼ, ĐỒ THỊ 6
DANH MỤC BẢNG 7
MỞ ĐẦU 8
1.1.Nghiên cứu khảo sát bài toán 10
1.2 Phân tích bài toán 11
1.3 Hệ điều hành di động 11
1.3.1 Đặc điểm của hệ điều hành di động 11
1.3.2 So sánh hệ điều hành Android với các hệ điều hành iOS 12
1.3.3 Mã nguồn mở 13
2.1.Tổng quan về Android 14
2.1.1 Android là gì? 14
2.1.2 Lịch sử phát triển Android 14
2.1.3 Các phiên bản Android 15
2.2 Kiến trúc của hệ điều hành Android 20
2.2.1 Tầng Linux Kernel 21
2.2.2 Tầng Libraries + Android Runtime 21
2.2.3 Tầng Application Framework 23
2.2.4 Tầng Application 24
2.3 Hệ thống tập tin trên Android 25
2.4 Quá trình khởi tạo Android 26
2.5 Khả năng hỗ trợ phát triển ứng dụng 28
2.5.1 Yêu cầu về phần cứng 28
2.5.2 Android SDK 28
Trang 42.5.3 Java Development Kit (JDK) 30
2.5.4 Eclipse IDE 30
2.5.5 Android Emulator 30
CHƯƠNG 3: TÍCH HỢP ANDROID VỚI THIẾT BỊ PHẦN CỨNG 32
3.1 Lựa chọn phần cứng 32
3.1.1 Chuẩn bị lựa chọn phần cứng 32
3.1.2 Lựa chọn thiết bị 36
3.2 Thiết lập môi trường phát triển 39
3.3 Quá trình tích hợp Android 40
CHƯƠNG 4: PHÁT TRIỂN PHẦN MỀM TRÊN ANDROID 47
4.1 Cấu trúc của một ứng dụng 47
4.1.1 Activity 47
4.1.2 Service 49
4.1.3 Content Provider 50
4.1.4 Intent 51
4.1.5 Broadcast Receiver 51
4.1.6 Notification 51
4.2 Xây dựng ứng dụng 51
4.2.1 Mục tiêu của ứng dụng 51
4.2.2 Yêu cầu về chức năng 52
4.2.3 Mô hình Usecase 52
4.2.4 Biểu đồ tuần tự của hệ thống 53
4.2.5 Thiết kế các thành phần 54
4.2.4 Tính năng hỗ trợ tương tác 55
4.3 Kết quả phát triển và thử nghiệm 57
KẾT LUẬN 59
TÀI LIỆU THAM KHẢO 61
Trang 5DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT
API Application Programming Interface
ARM Acorn RISC Machine
CPU Central Processing Unit
FLAC Free Lossless Audio Codec
FOSS Free and Open Source Software
GNU Gnu not unix
GPS Global Positioning System
GPU graphics processing unit
HTML HyperText Markup Language
IMAP Internet Message Access Protocol
POP3 Post Office Protocol version 3
RISC Reduced Instructions Set Computer
SDK Software Development Kit
SGL Scene Graph Library
SMTP Simple Mail Transfer Protocol
SoC System on Chip
SSL Secure Sockets Layer
XHTML Extensible HyperText Markup Language
Trang 6DANH MỤC HÌNH VẼ, ĐỒ THỊ
Hình 2.1: Kiến trúc hệ điều hành Android
Hình 2.2: Kiến trúc tầng Linux Kernel
Hình 2.3: Kiến trúc tầng Libraries + Android Runtime
Hình 2.4: Kiến trúc tầng Application Framework
Hình 2.5: Kiến trúc tầng Applications
Hình 2.6: Quá trình khởi tạo Android từ nhân Linux
Hình 2.7: Cửa sổ thiết lập máy ảo
Hình 2.8: Giao diện Android Emulator
Hình 4.4: Biểu đồ tuần tự của hệ thống
Hình 4.5 Giao diện phần mềm NotesEX
Hình 4.6 Giao diện phần mềm NotesEX sau khi lưu ghi chú
Trang 7DANH MỤC BẢNG
Bảng 1.1: So sánh hệ điều hành Android với hệ điều hành iOS Bảng 2.1 Các phiên bản của Android
Bảng 2.2: Các kiểu file trên HĐH Android
Bảng 2.3: Quyền hạn trên file
Bảng 2.4: Android SDK
Bảng 2.5: Các gói thư viện SDK
Bảng 2.5: JDK yêu cầu không gian đĩa
Bảng 3.1: Mục tiêu sử dụng của từng đối tượng
Bảng 4.1: Kịch bản kiểm tra chức năng
Trang 8Bên cạnh đó hệ thống nhúng cũng đang rất phát triển trong công nghệ thông tin
và truyền thông, ở đó các chức năng xử lý được ứng dụng cụ thể cho các thiết bị như điện thoại di động, đồ điện tử cầm tay, các thiết bị máy tính,… Phần mềm cho hệ thống nhúng hay gọi là phần mềm nhúng, là một lĩnh vực công nghệ chính của nhiều quốc gia như Mỹ, Nhật Bản, Hàn Quốc, Ấn Độ, tại các quốc gia này đều có nhiều chương trình hỗ trợ để phát triển công nghệ phần mềm nhúng Và hiện tại Việt Nam cũng là một trong những quốc gia cũng đang có các chương trình hỗ trợ Ngày 22/9/2010, Thủ tướng chính phủ ký Quyết định số 1755/QĐ-TTg phê duyệt Đề án
“Đưa Việt Nam sớm trở thành nước mạnh về công nghệ thông tin và truyền thông”
(trong Đề án nước mạnh)
Trong các hệ nhúng thì hệ điều hành hay được sử dụng nhất hiện nay là Embeded Linux, Win CE, DOS, Lynyos, Và mới đây, thì hệ thống nhúng và phần mềm nhúng đang được kêu gọi phát triển trên hệ điều hành Android Android là hệ điều hành trên điện thoại di động (và hiện nay là cả trên một số đầu phát HD, TV, ) được phát triển bởi Google và dựa trên nền tảng Linux
Đứng ở góc độ nghiên cứu và phát triển phần mềm nhúng cho các thiết bị cầm tay Android được lựa chọn bởi tính tương thích cao, hệ điều hành mở, miễn phí và có khả năng cạnh tranh tốt với các hệ điều hành khác và không phụ thuộc vào duy nhất một nhà sản xuất phần cứng nào Hơn nữa, các nhà sản xuất thiết bị có thể mở rộng hoặc thay đổi các tính năng của hệ điều hành để tạo ra sản phẩm riêng của mình
Và trong những năm gần đây, các nhà công nghệ trong nước đã nhanh chóng thành lập cộng đồng phát triển Android, nhằm giới thiệu về công nghệ và sản phẩm liên quan đến Android Với tiềm năng về thị trường tablet cùng với sự hỗ trợ của hệ điều hành Android đã tạo ra cơ hội lớn cho các nhà sản xuất công nghệ Và với lợi ích
và xu hướng công nghệ mới, thông qua đề tài “ Nghiên cứu phát triển phần mềm
nhúng cho các thiết bị cầm tay trên nền tảng Android”, tôi hướng tới việc đưa ra cách
tích hợp hệ điều hành Android cho phần cứng của nhiều nhà cung cấp thiết bị, cũng như việc phát triển ứng dụng trên hệ điều hành này
Trang 9Như chúng ta đã biết, khi một nhà sản xuất khi tạo ra bất kỳ một sản phẩm đều phải có một quy trình sản xuất ra thành phẩm Trên thực tế đối với ngành công nghệ thông tin nói riêng, ngoài sản phẩm về phầm mềm và phần cứng ra, còn có sản phẩm nhúng Sản phẩm nhúng dựa trên sự kết hợp của phần mềm và phần cứng, chúng được ứng dụng, phát triển ngày một nhiều do nhu cầu và sự phát triển của thế giới này nay
Và cũng giống như sản phẩm là phầm mềm và phần cứng, thì sản phẩm là hệ thống nhúng cũng có một quy trình thành phẩm như sau [19] :
- Giai đoạn 1: Nghiên cứu – dựa vào các công cụ đánh giá có sẵn
- Giai đoạn 2: Xác thực khái niệm – phân tích bài toán
- Giai đoạn 3: Kiểm tra hệ thống phần mềm và phần cứng
- Giai đoạn 4: Tích hợp hệ thống – emulator
- Giai đoạn 5: Tạo mẫu
- Giai đoạn 6: Thành phẩm
Dựa trên quy trình đó, trong phạm vi của đề tài tôi xin trình bày những nội dung chính như sau:
- Chương 1: Tổng quan về đề tài
- Chương 2: Tìm hiểu hệ điều hành Android
- Chương 3: Tích hợp Android với thiết bị phần cứng
- Chương 4: Phát triển phần mềm trên Android
Sau đây là nội dung trình bày chi tiết của Luận văn
Trang 10CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI
1.1.Nghiên cứu khảo sát bài toán
Với sự phát triển mạnh mẽ của thị trường thế giới số nhất là các thiết bị di động máy tính thông minh, máy tính bảng trong thời gian gần đây, đã đem đến những trải nghiệm mới mẻ cho người sử dụng
Máy tính bảng với những ưu điểm về tính di động, có kết nối đa dạng, màn hình cảm ứng, giải trí tiện lợi, phong phú về ứng dụng Các nhà sản xuất có tên tuổi cũng khuấy động phong trào bằng cách liên tục cho ra các sản phẩm để phục vụ người tiêu dùng Đặc biệt là các nhà sản xuất đã đưa ra sự lựa chọn mà được coi là chiếm ưu thế nhất cho thị trường hiện nay là sử dụng hệ điều hành Android cho nó Tuy nhiên những máy tính bảng này vẫn đang có nhược điểm cơ bản là quá đa dụng và chưa hướng tới đối tượng chuyên gia, học sinh, không phù hợp với đại đa số người học ở Việt Nam là giá thành của chúng còn tương đối cao (khoảng 500USD), chính vì vậy việc thiết kế, chọn lựa các chức năng cần thiết và cấu hình phù hợp, giá thành thấp để phục vụ cho đối tượng người học là một đề tài cấp thiết và có ý nghĩa khoa học, thực tiễn
Hệ điều hành Android là một hệ điều hành mã nguồn mở, miễn phí và khả năng tương thích cao Là là một hệ điều hành mã nguồn mở di động kết hợp và xây dựng dựa trên các phần của nhiều dự án mã nguồn mở khác nhau được phát triển bởi Google
và Open Hadset Alliance (Liên minh thiết bị cầm tay mã nguồn mở) [10] Người sử dụng có thể tùy chỉnh Android theo mình và có thể phát triển các phần mềm ứng dụng dựa trên ngôn ngữ Java trên đó Sự ra mắt của Android vào ngày 5 tháng 11 năm 2007 gắn với sự thành lập của 78 công ty liên minh phần cứng, phần mềm và viễn thông nhằm mục đính tạo nên một chuẩn mở cho điện thoại di động trong tương lai Trong một số phiên bản của Android, máy tính bảng có thể sử dụng thay thế điện thoại di động, và tiếp tục giảm chi phí cho người dùng Android 3.x là hệ điều hành do công ty Google phát triển cho các thiết bị cầm tay sẽ phù hợp với xu hướng phát triển các dịch
vụ cung cấp dữ liệu và phần mềm qua Internet
Dựa vào lợi thế đó của hệ điều hành Android, mà thông qua đề tài “ Nghiên cứu
phát triển phần mềm nhúng cho các thiết bị cầm tay trên nền tảng Android” Tôi
hướng tới việc người dùng cuối có thể làm chủ cả về công nghệ tích hợp hệ điều hành Android cho phần cứng của nhiều nhà cung cấp thiết bị, cũng như việc phát triển các phần mềm ứng dụng đáp ứng nhu cầu người sử dụng Sở dĩ, phần mềm nhúng là phần mềm do nhà sản xuất thiết bị cài sẵn vào sản phẩm và chúng được sử dụng ngay cùng với đồ điện tử đó mà không cần có sự cài đặt của người thứ ba [19] Tuy nhiên, phần mềm ứng dụng chạy trên thiết bị cầm tay có hệ điều hành Android cũng được coi là phần mềm nhúng Vì trên thị trường hiện nay, cũng có khá nhiều bộ vi xử lý hỗ trợ
Trang 11chạy trên hệ điều hành Android như bộ vi xử lý ARM, Qualcomm, telechip, nên phần mềm ứng dụng có thể thông qua hệ điều hành để chạy trên thiết bị phần cứng
1.2 Phân tích bài toán
Phần mềm ứng dụng nhúng hiện nay chủ yếu được thực hiện trên các dòng điện thoại thông minh, các máy tính bảng, không chỉ là các hệ thống điều khiển thay thế máy tính, mà nó còn là các ứng dụng mang tính chất hỗ trợ và giải trí cho người sử dụng Vì vậy trong đề tài chủ yếu là nghiên cứu cách tích hợp ứng dụng Android cho thiết bị phần cứng và phát triển ứng dụng trên nền Android Với tính năng nổi bật của mình cộng với các phiên bản mới, từ phiên bản 3.0 trở đi đã được phát triển cho các thiết bị cầm tay máy tính bảng sẽ phù hợp với xu hướng phát triển các phầm mềm qua Internet và dịch vụ cung cấp dữ liệu
Hiện nay sản phẩm nhúng rất đa dạng bởi nhiều công ty tham gia sản xuất và chế tạo, nhưng hiện nay chip được cung cấp phần lớn dựa trên bộ vi xử lý ARM Các công ty sản xuất mua lõi vi xử lý của ARM sản xuất và phát triển để đưa vào tích hợp chipset, nên có nhiều công ty khác nhau có thể dùng chung một loại vi xử lý Đối với ARM, do có đặc điểm tiết kiệm được năng lượng, tiêu tán công suất thấp nên nó được coi là sản phẩm chiếm ưu thế trong các sản phẩm điện thoại di động Vì vậy, trong toàn bộ luận văn này, tôi sẽ trình bày nội dung nghiên cứu dựa trên vi xử lý ARM
Do phần mềm nhúng chạy trên nền tảng Android, sẽ chạy trên phần cứng thông qua hệ điều hành Do vậy đề tài chủ yếu tập trung vào cơ chế tích hợp hệ điều hành Android với phần cứng đề xuất và cách phát triển phần mềm nhúng trên hệ điều hành Android
- Với nội dung tích hợp hệ điều hành Android: được đưa ra thông qua việc phân tích tìm hiểu và thiết lập cấu hình cho các bộ điều khiển phần cứng
- Với nội dung phát triển phần mềm nhúng trên hệ điều hành Android: đưa ra thông qua quy trình phát triển ứng dụng trên Android, phân tích thiết kế hệ thống ứng dụng, xây dựng code, demo ứng dụng tạo ghi chú minh họa
1.3 Hệ điều hành di động
1.3.1 Đặc điểm của hệ điều hành di động
Hệ điều hành là “một chương trình chạy trên máy tính, nó điều phối mọi hoạt động về phần cứng và phần mềm trong máy tính”
Hệ điều hành di động là “hệ điều hành chạy trên các thiết bị có tính di động cao” Với một số các đặc điểm đặc thù mà các hệ điều hành chạy trên máy tính thường không có như:
- Tối ưu về bộ nhớ: Trong thiết bị di động thì hệ điều hành được cài đặt sẽ ảnh hưởng nhiều đến dung lượng bộ nhớ, vì chúng thường có kích thước nhỏ gọn để có thể sử dụng thuận lợi và chạy nhanh hơn
Trang 12- Tối ưu về điện năng: Với thiết bị di động thì việc tiêu thụ điện năng là điều cũng đáng nói, với mức độ sử dụng có thể đạt mức tối đa của người sử dụng,
độ sáng tối của màn hình Khi đó hệ điều hành cũng cần phải tối ưu hoạt động của mình để tiết kiệm năng lượng một cách tối đa
- Tính tương thích cao: Với khả năng thích nghi tích hợp với nhiều thiết bị phần cứng của hệ điều hành không kén chọn, đó cũng là một trong những tiêu chuẩn mà các nhà sản xuất quan tâm Ngoài ra, nó còn phải hỗ trợ các kết nối mạng tốt để đem lại năng suất cho người sử dụng
1.3.2 So sánh hệ điều hành Android với các hệ điều hành iOS
Hệ điều hành Android và hệ điều hành iOS đều là hai hệ điều hành di động, chiếm ưu thế sử dụng nhiều nhất trên thị trường điện thoại, smartphone, máy tính bảng hiện nay Hệ điều hành Android được phát triển chủ yếu được sử dụng trong hãng Samsung, LG, còn hệ điều hành iOS được sử dụng chủ yếu trên các dòng điện thoại của Apple, Nokia Do đặc thù của từng loại hệ điều hành mà mỗi hãng có thể lựa chọn
để phù hợp với hãng sản suất của mình, dưới đây là bảng so sánh về một số đặc điểm tính năng của hai hệ điều hành này
Bảng 1.1: So sánh hệ điều hành Android với hệ điều hành iOS
Nhân của HĐH Linux 2.6 iOS
Phiên bản mới nhất hỗ trợ chạy
đa nhiệm nhưng hạn chế Chỉ cho phép chạy một số loại ứng dụng
Xử lý đồ họa và âm
thanh
Sử dụng Media Framework
và OpenGL/ES nằm trong tầng Libraries để xử lý
Sử dụng tầng Graphics & Media
để tập trung các tác vụ xử lý
Trang 131.3.3 Mã nguồn mở
Mã nguồn mở được biết tới dưới tên FOSS (Free and Open Source Software) là
“những phần mềm mà người dùng có thể sửa đổi, cải tiến, phát triển và nâng cấp theo một số nguyên tắc chung đã được quy định từ trước” Là thuật ngữ rất quen thuộc với những người trong ngành Công nghệ thông tin, nhưng vẫn còn xa lạ với những ai mới tìm hiểu về tin học Với những người chú ý đến vần đề kinh phí thì phần mềm hay
hệ điều hành mã nguồn mở thì rất được họ quan tâm Ngoài ưu điểm về giá thành sản phẩm thì mã nguồn mở còn có rất nhiều điểm hấp dẫn khác nữa như:
-Chất lượng: Chất lượng luôn là điều mà chúng ta quan tâm Khi một sản phẩm phần mềm đưa ra nếu chỉ làm việc với một nhóm người sẽ không thể nào bằng một sản phẩm được đưa ra với sự góp sức của rất nhiều người với những đóng góp hoàn thiện
về sản phẩm, sáng tạo về các tính năng nhiều hơn Chính vì thế người phát triển phần mềm cũng chính là người sử dụng nó, nên những sai phạm rất hiếm khi gặp phải
- Bảo mật: Chính nhờ vào tính mở của nó mà với sản phẩm nguồn mở khi gặp vấn đề về bảo mật sẽ được nhiều người chung tay vào làm sẽ sớm được phát hiện và sửa chữa nhanh hơn
- Tính tùy biến: tùy biến nguồn dữ liệu trong mã nguồn mở rất đa dạng Người
sử dụng có thể tùy chỉnh lại các đoạn mã lại cho phù hợp với sản phẩm của riêng mình dựa trên các đoạn mã công khai Như với hệ điều hành Android đã và đang sử dụng rất nhiều trên thiết bị cầm tay nhờ tính mở của hệ điều hành này mà người sử dụng, các doanh nghiệp có thể tinh chỉnh và biến nó thành sản phẩm của mình
- Chi phí: Ngoài chất lượng và bảo mật ra thì chi phí cũng được đặt lên hàng đầu Người sử dụng có thể trả rất nhiều tiền để có một phần mềm tiện ích, nhưng nếu
sử dụng một sản phẩm mã nguồn mở như vậy thì họ sẽ tiết kiệm được tiền nhiều hơn
Trên đây là một số các điểm hấp dẫn của mã nguồn mở đem tới khiến người sử dụng và các nhà sản xuất khó có thể từ chối các sản phẩm mã nguồn mở Và tiếp theo chương 2 của luận văn là phần trình bày tổng quan về hệ điều hành sử dụng mã nguồn
mở Android
Trang 14CHƯƠNG 2: TÌM HIỀU HỆ ĐIỀU HÀNH ANDROID
Trước khi đi tìm hiểu về nội dung chính của luận văn về cách tích hợp hệ điều hành Android và triển khai một sản phẩm nhúng như thế nào, trong chương này đưa ra một số mô tả tổng quan hệ điều hành Android, lịch sử phát triển, các phiên bản, kiến trúc cũng như hệ thống file trên Android
2.1.Tổng quan về Android
2.1.1 Android là gì?
Android là một hệ điều hành mã nguồn mở di động kết hợp và xây dựng dựa trên các phần của nhiều dự án mã nguồn mở khác nhau được phát triển bởi Google và Open Hadset Alliance (Liên minh thiết bị cầm tay mã nguồn mở) [10]
Nền tảng chính của Android là Java, nó sử dụng thư viện Java và các ứng dụng được viết mã theo ngôn ngữ lập trình C, C++, Java Nó là ứng dụng duy nhất có hơn 700.000 ứng dụng và có nhiều các ứng dụng hơn nữa được đưa ra hàng ngày, được sử dụng trong các thiết bị điện tử, điện thoại thông minh, máy tính bảng, ipad, đồng hồ, tivi, đầu kỹ thuật số …
2.1.2 Lịch sử phát triển Android
Ban đầu, Android được phát triển bởi công ty liên hợp Android sau đó được Google mua lại vào tháng 7 năm 2005 Những thành viên của Android chuyển sang làm việc tại Google gồm có Andy Rubin, Rich Miner, Nick Sears và Chris White Tại Google họ đã bắt đầu phát triển nền tảng thiết bị di động dựa trên hạt nhân Linux với
hệ thống mềm dẻo, linh động và có khả năng nâng cấp mở rộng cao Các nhà phát triển viết ứng dụng Android dựa trên ngôn ngữ Java Vào ngày 5 tháng 11 năm 2007
sự ra mắt của Android gắn với thành lập của Open Hadset Alliance bao gồm 78 công
ty phần cứng, phần mềm và viễn thông với mục đích phát triển các tiêu chuẩn mở cho thiết bị di động [10, 27]
Ngày 9 tháng 12 năm 2008, thêm 14 thành viên mới tham gia vào dự án Android được công bố Gồm có ARM Holdings, Atheros Communications, Asustek Computer Inc, Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp, và Vodafone Group Plc
Đến tháng 10 năm 2008, Android đã bắt đầu lưu hành mã nguồn mở Google đã công bố hầu hết các mã nguồn của Android theo bản cấp giấy phép của Apache Các nhà cung cấp có thể mở rộng thương mại mà không cần chuyển thành mã nguồn mở
Điểm đặc biệt của ứng dụng Android chính là các phiên bản của nó, các phiên bản này được tạo ra theo thứ tự chữ cái và đều được đặt theo một món tráng miệng nào
Trang 15đó Mỗi phiên bản có phiên bản phụ và được phát hành định kỳ, các phiên bản phụ được phát hành theo các tháng khác nhau trong cùng một năm Phiên bản đầu tiên được phát hành vào tháng 11 năm 2007 và sau đó có nhiều bản cập nhật đã được thực hiện từ hệ điều hành gốc của nó, từng lỗi sửa cập nhật và bổ sung các tính năng mới tới các phiên bản trước
2.1.3 Các phiên bản Android
Qua lịch sử phát triển với nhiều nấc phát triển khác nhau của Android, hệ điều hành này đã càng ngày càng đưa ra được các phiên bản mới phù hợp với thị trường tiêu dùng nhờ vào các tính năng nổi bật của nó Bảng 2.1dưới đây sẽ mô tả cho chúng
ta thấy được các cột mốc phát triển của hệ điều hành này, từ khi thành lập tới giờ [10]
Bảng 2.1 Các phiên bản của Android
Phiên bản Ngày tháng phát hành và các tính năng
Beta Ngày 12 tháng 11 năm 2007, phát hành gói phát triển phần
Cho phép tải về và cập nhật từ Android Market
Hỗ trợ đa nhiệm, nhắn tin tức thời, GPS, kết nối Wi-Fi
Đồng bộ hóa Google thành nhiều ứng dụng
Hỗ trợ Google Maps với tính năng Latitude (Street View cũng như trong các hình ảnh vệ tinh), hướng dẫn lái xe sử dụng GPS
Voice Dialer cho phép quay số và đặt các cuộc gọi điện thoại mà không cần gõ tên hoặc số
Một số các ứng dụng khác bao gồm: Đồng hồ báo thức, Máy tính, màn hình chính, hình ảnh và các cài đặt tùy chọn
Android 1.1
Phát hành ngày 9 tháng 2 năm 2009, bản cập nhật này đã được phát đưa ra cho T-Mobile G1 Bản cập nhật giải quyết lỗi, thay đổi các API và bổ sung thêm một số tính năng khác:
Trang 16 Các chi tiết và đánh giá có sẵn khi người dùng tìm kiếm các công ty trên bản đồ
Trong cuộc gọi màn hình chờ mặc định khi sử dụng loa ngoài, cộng với khả năng để hiện / ẩn bàn phím
Hỗ trợ khả năng lưu các file đính kèm trong các tin nhắn
Có thể chuyển đổi giữa máy ảnh và chế độ video, ghi
âm video và phát lại ở định dạng MPEG4 và định dạng 3GP
Máy ảnh khởi động và chụp ảnh, tích hợp thư viện ảnh nhanh hơn
Thu nhận tín hiệu GPS nhanh
Hỗ trợ tải video trực tiếp lên youtube và Picassa
Android 1.6 (Donut)
Android 1.6 (Donut- bánh rán vòng) phát hành ngày 15 tháng
9 năm 2009 dựa trên nhân Linux 2.6.29
Hỗ trợ bàn phím ảo trên màn hình
Hỗ trợ tìm kiếm nhanh và tìm kiếm bằng giọng nói
Hỗ trợ độ phân giải màn hình WVGA
Sao chép / Dán và tìm kiếm trong trình duyệt
Người sử dụng có thể chọn nhiều ảnh để xóa
Pin sử dụng chỉ số
Cập nhật công nghệ hỗ trợ cho CDMA / EVDO, 802.1x, VPN, và hỗ trợ chuyển văn bản thành lời thoại
Android 2.0 (Eclair) Ngày 26 tháng 10 năm 2009 phiên bản Android 2.0 (Eclair –
bánh kẹp kem) được phát hành với các cập nhật gồm
Nhiều tài khoản email và đồng bộ danh bạ
Camera được cải thiện bao gồm hỗ trợ đèn flash và zoom kỹ thuật số, cân bằng trắng, hiệu ứng màu sắc
Bàn phím cải tiến: thích ứng với từ điển
Hỗ trợ Bluetooth 2.1
Trình duyệt giao diện người dùng mới và hỗ trợ HTML5
Cải tiến bản đồ Google Maps 3.1.2
Thêm lớp MotionEvent để theo dõi các sự kiện cảm ứng đa điểm
Android 2.0.1 được đưa ra vào ngày 3 tháng 12 năm 2009 với
Trang 17 Thay đổi nhỏ về API
Sửa lỗi và thay đổi hành vi nền tảng Android 2.1 (Eclair) được phát hành vào 12 tháng 1 năm 2010 với việc tu chỉnh lại lỗi và API
Android 2.2 (Froyo)
Ngày 20 tháng 5 năm 2010, android 2.2 (Froyo – Yaourt đông) được phát hành với các thay đổi gồm:
Nhiều tài khoản người dùng
Tối ưu hóa hệ điều hành về tốc độ, bộ nhớ, và hiệu năng
Android market tự động cập nhật và cài đặt các ứng dụng vào thẻ SD
Bổ sung mẹo sử dụng widget cho màn hình
Hỗ trợ cho dịch vụ Android Cloud to Device Messaging (C2DM)
Hỗ trợ đăng tải tập tin trong trình duyệt
Tăng cường hỗ trợ Microsoft Exchange
Hỗ trợ đầu nối USB và hỗ trợ Hotspot, quay số bằng giọng nói và chia sẻ liên lạc qua Bluetooth
Hỗ trợ cảm biến nhiểu hơn
Giao diện người dùng được cải tiến cho đơn giản và tốc độ truy cập nhanh hơn
Bàn phím mới hỗ trợ nhập văn bản nhanh hơn
Cải thiện tính năng sao chép / dán
Near Field Communication (NFC), cải tiến quản lý điện năng
New Download Manager, Internet Calling
Hiệu ứng âm thanh được cân bằng…
Hỗ trợ cho phát lại video WebM/VP8, và mã hóa âm thanh AAC
Tiếp đó là các phiên bản phụ được hỗ trợ cho Android 2.3 với các cập nhật:
Trang 18sử dụng Google Talk Android 2.3.5
Cải thiện hiệu suất mạng cho Nexus S 4G
Cố định lỗi Bluetooth trên Samsung Galaxy S
Làm bóng hình ảnh động cho việc di chuyển danh sách
Phần mềm Camera cải tiến
Cải thiện pin hiệu quả Android 2.3.6
Cố định lỗi tìm kiếm bằng giọng nói Android 2.3.7
Giới thiệu Google Wallet hỗ trợ cho Nexus S 4G
Android 3.0
(Honeycomb)
Ngày 22 tháng 2 năm 2011 Android 3.0 (Honeycomb- tổ ong) được phát hành dựa trên nhân Linux 2.6.36 dành cho
tablet.Với các tính năng mới:
Cụ thể tối ưu hóa cho máy tính bảng và các thiết bị với kích thước màn hình lớn hơn
Nhiều tab trình duyệt
Hỗ trợ giao thức vận chuyển Media / Picture
Khả năng xem album và các bộ sưu tập ở chế độ toàn màn hình khác
Android 3.1
Giao diện người dùng cải tiến
Kết nối phụ kiện USB
Mở rộng danh sách Recent Apps
Thay đổi kích thước các widget màn hình
Hỗ trợ bàn phím ngoài và các thiết bị bên ngoài, gamepads, phát lại âm thanh FLAC
Android 3.2
Đây là bản cập nhật đầu tiên xuất hiện trên máy tính bảng vàongày 18 tháng 7 năm 2011 MediaPad của Huawei Bao gồm các thay đổi:
Trang 19Android 3.2.1
Có một vài sửa lỗi và an ninh
Tính ổn định và cải tiến Wi-Fi
Cập nhật Android Market với bản cập nhật tự động và sách Google
Hỗ trợ Adobe Flash và dự đoán chữ viết tay của Trung Quốc
Android 3.2.2 Bao gồm sửa lỗi và cải tiến nhỏ khác cho Motorola Xoom 4G
Tăng tốc độ và hiệu suất
Android Beam sử dụng công nghệ kết nối trường gần NFC ( có thể chia sẻ thông tin khi 2 máy điện thoại áp sát vào nhau)
Hỗ trợ nút ảo (virtual) trong giao diện người dùng
Dễ dàng tạo thư mục với bằng cách kéo thả
Hỗ trợ chức năng Pinch-to-zoom trong lịch
Hỗ trợ tìm kiếm Offline
Khả năng xoay sang trái hoặc sang phải để chuyển giữa các cuộc hội thoại Gmail, tự động đồng bộ hóa trình duyệt với bookmark Chrome của người dùng
Tích hợp được vừa chụp ảnh, vừa chụp màn hình
Cải thiện sửa lỗi trên bàn phím
Khả năng truy cập các ứng dụng trực tiếp từ màn hình khóa
Sử dụng nhập liệu bằng giọng nói
Cải thiện chức năng sao chép và dán
Hỗ trợ tính năng mới cho phép người dùng để mở khóa điện thoại di động bằng cách sử dụng phần mềm nhận dạng khuôn mặt FaceUnlock
Trình duyệt web theo tab(thẻ) (cho phép lên đến 16 tab)
Hỗ trợ font chữ Roboto
Sử dụng các dữ liệu trong phần mềm cài đặt cho phép thiết lập cảnh báo người dùng khi họ tiếp cận một giới hạn sử dụng nhất định, và vô hiệu hóa dữ liệu sử dụng khi vượt quá giới hạn
Trang 20 Khả năng tắt các ứng dụng đang sử dụng bộ nhớ trong
Cải thiện ứng dụng camera với phần cài đặt thời gian, chế độ toàn cảnh, khả năng phóng to trong khi ghi âm, ghi âm video 1080p các thiết bị Android cơ bản
Bố trí thư viện mới, được tổ chức theo vị trí và con người
Android 4.0.2
Cố định lỗi nhỏ trên Verizon Galaxy Nexus
Android 4.0.3
Sửa lỗi và tối ưu hóa
Cải tiến đồ họa, cơ sở dữ liệu, kiểm tra chính tả, chức năng Bluetooth
Xem lịch được cải tiến, ứng dụng máy ảnh mới tăng cường video ổn định và độ phân giải QVGA
Khả năng tiếp cận cải tiến như truy cập nội dung cho trình đọc màn hình được cải thiện
Ứng dụng camera mới sử dụng chức năng bằng cách lướt ngón tay
Thanh thông báo có nhiều tính năng mới
Và trong thống kê của Google về số người sử dụng Android trong tháng 4/2013 vừa rồi thì thiết bị chạy Android Jelly Bean chiếm tới 26.1%, thiết bị chạy Android 4.0 Ice Cream Sandwich chiếm 27.5% và Android 2.3 Gingerbread là 38.4%
2.2 Kiến trúc của hệ điều hành Android
Để có được những phát triển vượt bậc trong từng phiên bản của mình, chính là nhờ Android có một nền tảng kiến trúc 4 tầng chính Linux Kernel, Libraries + Android Runtime, Application Framework, Applications với cách phân cấp chức năng rõ ràng rất giống với một kiến trúc máy tính nói chung Tất cả các thành phần chính của nền tảng kiến trúc máy tính đều tồn tại trong Android Sau đây hình 2.1 sẽ mô tả về các thành phần trong kiến trúc Android, mỗi phần được mô tả chi tiết hơn theo một phương pháp tiếp cận từ dưới lên, có nghĩa là nó sẽ bắt đầu với lớp thấp nhất trong ngăn xếp và làm việc lên đến những cấp độ cao hơn [3]
Trang 21Hình 2.1 Kiến trúc hệ điều hành Android
2.2.1 Tầng Linux Kernel
Android sử dụng nhân Linux 2.6 đã được sửa đổi để xử lý tất cả các chức năng như các nền tảng kết nối mạng, quản lý bộ nhớ và tiến trình, bảo mật,… cũng như các thiết bị phần cứng [3]
Tầng Linux Kernel là nhân của hệ điều hành Android, các xử lý của hệ thống đều phải thông qua nó Tầng này cung cấp các thiết bị phần cứng như hình 2.2: Display, Bluetooth, Cemera, USB, WiFi, Power Management, Audio, Keypad, …
Hình 2.2 Kiến trúc tầng Linux Kernel
2.2.2 Tầng Libraries + Android Runtime
2.2.2.1 Libraries
Hệ điều hành Android bao gồm một tập các thư viện C/C++ được sử dụng bởi nhiều thành phần khác nhau của hệ thống Android, những tính năng này cung cấp cho
Trang 22các nhà lập trình thông qua bộ framework của Android Sau đây là một số thư viện cốt lõi trong Android [3]
Hình 2.3 Kiến trúc tầng Libraries + Android Runtime
+ LibC: một thể hiện được xây dựng từ BSD (Berkeley Software Distribution) của hệ thống thư viện C chuẩn, được điều chỉnh để tối ưu hóa cho các thiết bị chạy trên nền Linux
+ Media library: thư viện dựa trên mã nguồn mở PacketVideo, phổ biến hỗ trợ phát lại và ghi âm trên audio và định dạng video, cũng như các file ảnh tĩnh như MPEG4, H.264, MP3, AAC, AMR, JPG, PNG
+ Surface Manager: quản lý hiển thị truy cập tới các hệ thống con và kết hợp đồ họa 2D và 3D từ nhiều ứng dụng
+ Webkit engine: Cung cấp thư viện của trình duyệt web
+ SGL: thư viện đồ họa 2D cơ bản
+ 3D Libraries: được thực hiện dựa trên OpenGL ES 1.0 APIs; thư viện sử dụng các tăng tốc 3D bằng phần cứng và phần mềm để tối ưu hóa hiển thị 3D
+ FreeType: cung cấp các font chữ vector, phông chữ bitmap cho các ký tự và
hỗ trợ các hoạt động liên quan đến dựng hình font chữ khác
+ SQLite: Cơ sở dữ liệu nhỏ và mạnh có sẵn cho tất cả các ứng dụng
2.2.2.2 Android Runtime
Android Runtime bao gồm Dalvik Virtual Machine (Dalvik VM) và thư viện cốt lõi Java phát triển bởi Google, đây là những thành phần chính trong ngăn xếp phần mềm của Android
a Dalvik VM
Dalvik là máy ảo giúp các ứng dụng java có thể chạy được trên các thiết bị di động thuộc hệ điều hành Andoid, nó chạy các ứng dụng đã được chuyển đổi thành một file thực thi Dalvik (dex)
Dalvik Virtual Machine được thiết kế để chạy trên phần cứng, tại đó nó cho phép thể hiện về tuổi thọ pin, CPU, bộ nhớ và lưu trữ dữ liệu Dalvik VM là một máy
Trang 23ảo dựa trên thanh ghi (so với Java VM được dựa trên ngăn xếp) nên nó cần một số các chỉ thị nhỏ để biểu diễn các mã cao cấp
Dalvik VM chạy các file dex được tạo ra từ các file class hoặc jar bằng cách
sử dụng một công cụ có tên dx Khi chuyển đổi từ file class (hoặc jar) sang file dex, công cụ dx nhúng các file class vào một file dex duy nhất, bản sao các chuỗi và các
hằng số khác được gộp vào và được tham chiếu toàn cục để tiết kiệm không gian và bytecode của Java được chuyển đổi thành một tập lệnh thay thế
Hơn thế nữa, khi một ứng dụng được cài đặt trên thiết bị, việc tối ưu hóa được thực hiện như thứ tự byte trao đổi liên kết tĩnh, inline các phương thức có nguồn gốc đặc biệt, xóa bỏ các phương thức rỗng và rút ngắn gọn các đối tượng class Ngoài ra, Dalvik VM được thiết kế cho nhiều trường hợp đang chạy trên cùng một thiết bị tại cùng một thời điểm một cách hiệu quả
b Core Libraries
Các thư viện Java cốt lõi cung cấp các cấu trúc dữ liệu phổ biến và các thuật toán tìm thấy trong tiện ích thư viện Chúng bao gồm các chức năng I/O, các tiện ích, các container, …
2.2.3 Tầng Application Framework
Application Framework (hình 2.4) là một tập hợp các thư viện Java cung cấp các khối lệnh cho các ứng dụng nhanh chóng và dễ dàng phát triển trên nền tảng Android Các nhà phát triển có thể tận dụng các thiết bị phần cứng, các dịch vụ, các điểm truy cập, chỉ bằng cách gọi API có sẵn mà Google đã viết để sử dụng các tính năng của phần cứng mà không cần hiểu cấu trúc bên dưới Bất kỳ một ứng dụng nào
đó đều công khai các tính năng của nó và đặc biệt chúng có thể tái sử dụng các tính năng của nhau[3]
Hình 2.4 Kiến trúc tầng Application Framework
Tầng Application Framework cung cấp một loạt các dịch vụ như:
a Activity Manager: Quản lý vòng đời của ứng dụng cũng như cung cấp công cụ điều khiển Activity Bên trong hệ thống các Activity được quản lý như một Activity stack Khi một Activity được bắt đầu, nó được đặt ở đỉnh của stack và trở thành Activity đang chạy, Activity trước sẽ ở bên dưới activity mới và sẽ không thấy trong suốt quá trình activity mới tồn tại
Trang 24b Package Manager: dùng để nạp các file ứng dụng đuôi apk
c Window Manager: quản lý việc xây dựng và hiển thị các giao diện người dùng,
tổ chức quản lý giao diện giữa các ứng dụng
d Content Manager: Cho phép các ứng dụng có thể truy cập dữ liệu từ các ứng dụng khác hoặc để chia sẻ dữ liệu của riêng ứng dụng
e Resource: dùng để xử lý tài nguyên media như các asset, graphic, image, music, video…
f View System: Cung cấp các đối tượng layout, view, widget cho ứng dụng
g Telephony Manager: Cung cấp công cụ để thực hiện liên lạc như gọi điện thoại
h Location Manager: Cho phép xác định vị trí dựa vào hệ thống định vị toàn cầu GPS và Google Maps
i Sensor Manager: Quản lý đến cảm biến của thiết bị
j Notification Manager: Quản lý hiển thị các thông báo như tin nhắn, có email mới, …
2.2.4 Tầng Application
Tầng Appplication (hình 2.5) trên cùng sẽ là môi trường tương tác giữa người dùng và thiết bị Android được tích hợp sẵn một số ứng dụng cần thiết cơ bản, tất cả các ứng dụng này chạy trên hệ điều hành Android đều được viết bằng Java sau đó biên
dịch và chuyển thành dex Các ứng dụng mặc định thường gồm:
- Home: màn hình chính
- Contacts: ứng dụng danh bạ điện thoại
- Browser: trình duyệt web
- Camera: ứng dụng chụp ảnh
- Alarm: ứng dụng báo thức
- Email: ứng dụng thư điện tử
- Album photo: Ứng dụng bộ sưu tập hình ảnh
- Ứng dụng SMS/MMS
- Map: ứng dụng bản đồ
Hình 2.5 Kiến trúc tầng Applications
Trang 252.3 Hệ thống tập tin trên Android
Hệ điều hành Android được phát triển từ nhân Linux nên hệ thống các file trong Android giống hệ thống file trên Linux cả về cách tổ chức và quyền hạn của người sử dụng lên file… Trong hệ điều hành Android, các file được tổ chức theo mô hình phân cấp thành các thư mục Câu lệnh thao tác file cho phép dịch chuyển và sao chép toàn
bộ thư mục cùng với các thư mục con chứa trong nó Nên một file thường được viết bằng tên và đường dẫn chứa nó [10]
Đối với hệ điều hành Android thì việc quản lý và chuyển đổi dữ liệu môt cách
dễ dàng nhờ vào việc tất cả các file trong nó đều có cấu trúc vật lý chung là byte stream Cho phép Android áp dụng khái niệm file cho mọi thành phần dữ liệu trong hệ thống, thư mục cũng như các thiết bị đều được xem như file Một thư mục chứa các thông tin về thư mục được tổ chức theo một định dạng đặc biệt
Chính từ việc Android coi thư mục cũng là file không giống như hệ điều hành Window, nên nó được coi là một loại file đặc biệt Ngoài ra còn có các thành phần khác cũng được xem như file, chúng được phân biệt dựa trên kiểu file có thể liệt kê theo bảng 2.2 sau:
Bảng 2.2: Các kiểu file trên HĐH Android
d Directory (thư mục)
b Block-type special file (File kiểu khối)
c Character-type special file (File kiểu ký tự)
l Symbolic link (liên kết tượng trưng)
p Pipe (File đường ống)
s Socket
- Regular file (File bình thường )
Để tổ chức quyền hạn trên file trong Android cần quan tâm đến sự liên kết của chúng với người sự dụng, đó là một tập hợp các quyền hạn như quyền cho phép đọc
(read – viết tắt r), quyền cho phép ghi (write – viết tắt w) và quyền cho phép thực thi (execute – viết tắt x)
Một file sẽ có những quyền hạn tương ứng với 9 ký tự theo bảng 2.3 sau:
Bảng 2.3: Quyền hạn trên file
Quyền của chủ sở hữu file
(Owner)
Quyền của nhóm tài khoản
sở hữu file (Owner group)
Quyền của những người không thuộc nhóm sở hữu
file (Other)
r/- w/- x/- r/- w/- x/- r/- w/- x/-
Trang 263 ký tự đầu là quyền hạn chủ sở hữu file, 3 ký tự giữa là quyền hạn của nhóm tài khoản sở hữu file, 3 ký tự cuối là quyền của những người không thuộc nhóm sở hữu file Để xem được các quyền hạn này trên Android có thể sử dụng câu lệnh 1s-1
2.4 Quá trình khởi tạo Android
Android là hệ điều hành mã nguồn mở dựa trên Linux, x86 ( x86 là một loạt các kiến trúc bộ vi xử lý máy tính dựa trên CPU Intel 8086) là hệ thống mà hạt nhân linux được triển khai nhiều nhất tuy nhiên các thiết bị Android đang chạy trên tiến trình ARM (thường được gọi là Advanced RISC Machine, trước đây gọi là Acorn RISC Machine) trừ thiết bị Xolo của Intel Xolo đi kèm với bộ vi xử lý Atom 1.6GHz x86 Quá trình khởi tạo Android có thể nói là thiết bị nhúng hoặc ARM dựa trên linux có sự khác biệt nhỏ so với phiên bản máy tính để bàn [8]
Quá trình khởi tạo của hệ điều hành Android gồm thành 6 bước khác nhau, đây chính là việc tối ưu hóa quá trình khởi tạo một hệ thống nhúng Thiết bị Android sẽ được thực hiện theo các bước hình 2.6 dưới đây sau khi nhấn khởi động [8]
Bước 1: Boot Rom
Khi bắt đầu bấm vào nút khởi động thực thi một thiết bị Android là thực hiện một đoạn mã chương trình chứa trong Rom Chương trình có nhiệm vụ tìm phân vùng
đầu tiên của Boot Loader và tải vào trong Ram và thực hiện mã lệnh
Bước 2: Boot Loader
BootLoader là chương trình nhỏ chạy trước khi chạy chương trình Android BootLoader là chương trình đầu tiên chạy trên bo mạch và bộ vi xử lý Nhà sản xuất thiết bị sử dụng các bộ nạp khởi động phổ biến như bộ nạp khởi động redboot, uboot,
qi hoặc họ phát triển các bộ nạp khởi động riêng
BootLoader thực thi theo 2 giai đoạn, giai đoạn đầu tiên có nhiệm vụ nhận biết RAM bên ngoài và tải chương trình giúp giai đoạn thứ hai Giai đoạn thứ 2 bootloader khởi tạo và thiết lập mạng, bộ nhớ, trong đó có yêu cầu để chạy kernel, bootloader
có thể cung cấp các thông số cấu hình hoặc các đầu vào kernel cho mục đích cụ thể và tải kernel lên RAM
Bước 3: Kernel
Tương tự như máy tính để bàn sau khi kernel được tải lên RAM, các điều khiển trong kernel được thực thi để khởi tạo các điều khiển ngắt, các điều khiển khởi tạo bộ nhớ, khởi tạo bộ nhớ đệm và scheduling (lập kế hoạch) Sau cùng trình điều khiển kernel sẽ tìm tiến trình init trong file hệ thống và thực thi nó
Bước 4: Init process
Tiến trình Init là tiến trình đầu tiên được thực thi, chúng ta có thể nói rằng nó là tiến trình gốc của tất cả các tiến trình Tiến trình Init có hai trách nhiệm, một là gắn kết
Trang 27các thư mục như /sys, /dev, / proc và hai là chạy kịch bản init.rc thực chất là đoạn script mô tả các dịch vụ hệ thống, file hệ thống … được viết theo ngôn ngữ riêng
-Tiến trình init có thể tìm thấy tại : <android source>/system/core/init
Hình 2.6: Quá trình khởi tạo Android từ nhân Linux
Bước 5: Zygote and Dalvik
Trong Java, chúng ta được biết trong mỗi trường hợp máy ảo riêng sẽ được sử dụng trong bộ nhớ cho mỗi ứng dụng riêng biệt Còn trong ứng dụng của Android thì các ứng dụng cần được khởi động càng nhanh càng tốt, nhưng nếu HĐH Android khởi động theo các trường hợp khác nhau của máy ảo Dalvik cho các ứng dụng như Java thì
nó sẽ tiêu thụ rất nhiều bộ nhớ và thời gian Vì thế, để khắc phục được vấn đề này hệ điều hành Android đưa ra một hệ thống có tên là Zygote (hợp tử) Zygote có thể được chia sẻ mã trên máy ảo Dalvik, bộ nhớ thấp hơn và thời gian khởi động tối thiểu Zygote là một tiến trình máy ảo bắt đầu lúc khởi động hệ thống như ở bước 5, sau đó
Trang 28tải trước và khởi tạo các lớp thư viện lõi Thông thường các lớp thư viện lõi là only và một phần của nền các tảng cốt lõi hoặc Android SDK
read- Bước 6: System Server and Services
Sau khi hoàn thành các bước trên, thời gian chạy yêu cầu Zyote khởi động hệ thống các máy chủ Các System Server có thể xem như một tiến trình Hệ thống máy chủ giống nhau có sẵn được coi như là các System Service trong Android SDK Hệ thống máy chủ chứa tất cả các dịch vụ hệ thống
Zygote chia ra nhiều nhánh tiến trình mới để khởi động dịch vụ hệ thống Ta có thể tìm mã nguồn trong lớp ZygoteInit và phương thức startSystemServer Sau khi quá trình tải các dịch vụ Android hoàn tất Thông báo ACTION_BOOT_COMPLETED sẽ được phát ra, người sử dụng có thể thấy thông báo này để tải các dịch vụ của người sử dụng từ các ứng dụng
2.5 Khả năng hỗ trợ phát triển ứng dụng
Như các hệ điều hành khác, để phát triển ứng dụng chạy trên hệ điều hành Android thì trước hết cần phải hiểu về môi trường phát triển, cấu trúc và các thành phần cơ bản tạo lên ứng dụng Điều này giúp cho các nhà lập trình tạo ra các ứng dụng linh hoạt và có thể tận dụng chiếc điện thoại của mình một cách triệt để
2.5.1 Yêu cầu về phần cứng
Với bất kỳ một hệ điều hành nào khi chạy trên máy tính, điện thoại hoặc thiết bị cầm tay nào khác đều cần phải có những yêu cầu về phần cứng, nhằm thúc đẩy sản phẩm chạy một cách có hiệu quả [28][26] Để tương thích với các cấu hình phần cứng của laptop cũng như máy tính để bàn hay thiết bị cầm tay, thì Android cũng cần có các
hệ điều hành hỗ trợ:
- Windows XP (32-bit), Vista(32 hoặc 64 bit), hoặc Windows 7( 32 hoặc 64 bit)
- Mac OS X 10.5.8 hoặc các phiên bản mới hơn (chỉ x86)
- Linux (đã được kiểm tra trên Ubuntu Linux, Lucid Lynx)
+ Yêu cầu thư viện GNU C (glibc) 2.7 hoặc những phiên bản mới hơn + Phiên bản 8.04 trên Ubuntu Linux hoặc mới hơn
+ Với các phiên bản 64 bit phải có khả năng chạy các ứng dụng 32 bit
2.5.2 Android SDK
Android SDK cung cấp các thư viện API và các công cụ phát triển cần thiết để xây dựng, kiểm tra và gỡ lỗi ứng dụng cho Android [26] Có thể chọn và tải về file nén hợp với hệ điều hành tại địa chỉ http://developer.android.com/sdk/index.html
Trang 29Mac OS X android-sdk_r21.1-macosx.zip 66077080
bytes 49903cf79e1f8e3fde54a95bd3666385
Linux android-sdk_r21.1-linux.tgz 91617112
bytes 3369a439240cf3dbe165d6b4173900a8Android SDK bao gồm các dự án mẫu với mã nguồn mở, công cụ phát triển, emulator, và các thư viện để yêu cầu xây dựng ứng dụng Android Các ứng dụng của Android được viết bằng ngôn ngữ Java và chạy trên máy ảo Dalvik để nhúng các ứng dụng chạy phía trên của Linux Kernel Bằng cách cung cấp các gói thư viện API như bảng 2.5 sau [26] :
Bảng 2.5: Các gói thư viện SDK
android
Chứa các lớp nguồn được sử dụng bởi ứng dụng trong platform và định nghĩa quyền ứng dụng cho các tính năng hệ thống
android.accessibilityservice Để phát triển các dịch vụ miễn phí cung cấp thông tin
phản hồi cho người sử dụng
android.app Truy cập mô hình ứng dụng Android
android.bluetooth
Quản lý chức năng Bluetooth, như quét các thiết bị, kết nối với các thiết bị, và quản lý dữ liệu chuyển đổi giữa các thiết bị
android.content Truy cập và phổ biến dữ liệu trên Android
android.database Khám phá dữ liệu trả về thông qua một nhà cung cấp android.graphics Cung cấp các công cụ đồ họa mức thấp như canvas, bộ
android.provider Các lớp liên quan đến ContentProvider
android.net Các lớp trợ giúp truy cập mạng dựa trên java.net.*
APIs
android.test Một nền tảng cho phép viết các trường hợp kiểm tra
Trang 30Android
android.text Cung cấp các trường hợp sử dụng bố trí văn bản
android.util Tạo các phương thức tiện ích và tiện ích XML
android.view Cung cấp các lớp giao diện người sử dụng cơ bản android.webkit Cung cấp các công cụ cho trình duyệt web
android.widget Thêm các yếu tố giao diện người sử dụng
2.5.3 Java Development Kit (JDK)
Android SDK cung cấp các công cụ và các API cần thiết để bắt đầu phát triển ứng dụng trên Android Platform dùng ngôn ngữ lập trình Java Ta cần chuẩn bị thiết lập môi trường cho Java bằng cách tải gói tin tại địa chỉ
http://www.orcale.com/technetwork/java/javase/downloads/ để cài đặt Sau đó tạo biến môi trường
Bảng 2.6 dưới đây cung cấp các ước tính gần đúng yêu cầu không gian đĩa để cài đặt Java Development Kit (JDK)
Bảng 2.6 JDK yêu cầu không gian đĩa
Các công cụ phát triển 132MB Bắt buộc có
Demonstrations 24MB Không bắt buộc
Mã nguồn 27MB/1platform Không bắt buộc
Môi trường thời gian thực Java 72MB/1 Add-on Bắt buộc có
Ngôn ngữ hỗ trợ 20MB Không bắt buộc
Phông chữ và truyền thông hỗ trợ 6MB/1platform Không bắt buộc
2.5.4 Eclipse IDE
Sau khi cài đặt xong Java Development Kit, môi trường để hỗ trợ phát triển Java Tiếp theo ta cài đặt Eclipse IDE cho các nhà phát triển Java Để cài đặt hoặc cập nhật Eclipse , tải về các gói thích hợp từ trang web http://www.eclipse.org/downloads/
Một số loại gói của Eclipse có sẵn cho mỗi lền tảng
Hiện tại với các phiên bản mới nhất của Android thì Eclipse 3.6.2 hoặc phiên bản mới hơn mới có thể hỗ trợ
2.5.5 Android Emulator
Android Emulator là một thiết bị giả lập điện thoại di động – một thiết bị di động ảo chạy trên máy tính Giả lập này cho phép các nhà phát triển thử nghiệm và phát triển các ứng dụng Android mà không cần sử dụng một thiết bị vật lý