ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN
Tel. (84-511) 736 949, Fax. (84-511) 842 771
Website: itf.ud.edu.vn, E-mail:
LUẬN VĂN TỐT NGHIỆP KỸ SƯ
NGÀNH CÔNG NGHỆ THÔNG TIN
MÃ NGÀNH : 05115
ĐỀ TÀI:
NGHIÊN CỨU HỆ ĐIỀU HÀNH ANDROID VÀ
XÂY DỰNG CHƯƠNG TRÌNH DEMO GAME CARO ONLINE
Mã số
: 06T3-016, 06T3-025
Ngày bảo vệ
: 15/06/2011
SINH VIÊN : PHAN NGỌC HUY
HOÀNG ĐỨC NHÂN
LỚP
: 06T3
CBHD
: ThS. TRẦN ĐÌNH SƠN
ĐÀ NẴNG, 06/2011
LỜI CẢM ƠN
Chúng tôi xin chân thành cảm ơn các thầy cô trường ĐHBK Đà Nẵng, đặc biệt
là các thầy cô khoa Công Nghệ Thông Tin, đã truyền đạt những kiến thức q báu và
chỉ dẫn tận tình cho chúng tôi trong những năm học qua.
Đặc biệt, chúng tôi xin chân thành cảm ơn thầy giáo ThS. Trần Đình Sơn, khoa
Công Nghệ Thông Tin, trường Đại học Bách Khoa đã tận tình hướng dẫn, động viên
và giúp đỡ chúng tơi trong suốt thời gian thực hiện đề tài. Và cảm ơn các bạn trong
khoa Cơng Nghệ Thơng Tin – khóa 06T đã ủng hộ, giúp đỡ, chia sẻ kiến thức, kinh
nghiệm và tài liệu cho nhóm chúng tơi trong q trình nghiên cứu và thực hiện đề tài.
Và để có được kết quả như ngày hôm nay, chúng tôi rất biết ơn gia đình đã
động viên, khích lệ, tạo mọi điều kiện thuận lợi nhất trong suốt quá trình học tập cũng
như quá trình thực hiện đề tài tốt nghiệp này.
Tuy nhiên, trong q trình thực hiện đề tài khơng thể tránh khỏi những thiếu
sót. Chúng tơi mong nhận được nhiều ý kiến phê bình của q thầy cơ, các anh chị và
các bạn.
Xin chân thành cảm ơn.
Đà Nẵng, ngày 05/06/2011
Sinh viên thực hiện
Phan Ngọc Huy – 06T3
Hoàng Đức Nhân – 06T3
LỜI CAM ĐOAN
Tôi xin cam đoan :
1
Những nội dung trong luận văn này là do tôi thực hiện dưới sự hướng dẫn
trực tiếp của thầy ThS. Trần Đình Sơn.
2
Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng tên
tác giả, tên cơng trình, thời gian, địa điểm công bố.
3
Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá,
tơi xin chịu hồn tồn trách nhiệm.
Sinh viên,
Phan Ngọc Huy – 06T3
Hoàng Đức Nhân – 06T3
MỤC LỤC
TỔNG QUAN VỀ ĐỀ TÀI.....................................................................................- 11 I.
Tổng quan....................................................................................................- 11 -
II.
Đặt vấn đề....................................................................................................- 11 -
III.
Lý do chọn đề tài.....................................................................................- 12 -
IV.
Hướng nghiên cứu của đề tài...................................................................- 12 -
IV.1.
Cơ sở lý thuyết...................................................................................- 12 -
IV.2.
Công cụ thiết kế.................................................................................- 12 -
V.
Dự kiến kết quả đạt được.............................................................................- 13 -
VI.
Nội dung tổ chức luận văn.......................................................................- 13 -
GIỚI THIỆU TỔNG QUAN VỀ ANDROID.......................................................- 14 I.
Giới thiệu về Android..................................................................................- 14 -
II.
Những tính năng của Android.....................................................................- 16 -
III.
Kiến trúc hệ điều hành Android...............................................................- 16 -
III.1.
Applications layer (Tầng ứng dụng)..................................................- 17 -
III.2.
Application Framework (Nền tảng ứng dụng)...................................- 18 -
III.3.
Libraries Layer (Tầng thư viện) & Android Runtime (Tầng thực thi)- 19 -
III.4.
Linux Kernel (Nhân Linux)...............................................................- 21 -
IV.
V.
Hệ thống tập tin trên hệ điều hành Android.............................................- 22 -
IV.1.
Tổng quan về hệ thống file trên Android...........................................- 22 -
IV.2.
Các kiểu file trên Android..................................................................- 22 -
IV.3.
Tổ chức quyền sở hữu và quyền hạn trên file....................................- 23 -
IV.4.
Cây thư mục trên hệ điều hành Android............................................- 24 -
Cách thức tổ chức file trên Android Java Application.................................- 25 -
VI.
Vòng đời Android....................................................................................- 27 -
VII.
Bộ SDK (Software Development Kit – Bộ phát triển phần mềm) của Google
phát triển dành cho Android................................................................................- 28 VII.1.
Giới thiệu bộ Android SDK...............................................................- 28 -
VII.2.
Cấu hình bộ Android SDK trong Eclipse 3.5.....................................- 28 -
VII.3.
Cập nhật ADT Plugin.........................................................................- 30 -
VII.4.
Sử dụng bộ công cụ Eclipse để phát triển các ứng dụng Android......- 30 -
VIII.
Giới thiệu một số gói cơ bản của Android...............................................- 31 -
CƠ SỞ LÝ THUYẾT............................................................................................- 33 I.
II.
Giới thiệu về các loại Game........................................................................- 33 I.1.
Game hành động – Action.................................................................- 33 -
I.2.
Game nhập vai – Role Playing Game (RPG).....................................- 33 -
I.3.
Game phiêu lưu – Adventure.............................................................- 33 -
I.4.
Game chiến thuật – Strategy..............................................................- 34 -
I.5.
Các thể loại game nhỏ hơn.................................................................- 34 -
I.5.1.
Kinh dị (Survival horror)..............................................................- 34 -
I.5.2.
Mô phỏng (Simulation)................................................................- 34 -
I.5.3.
Thể thao (Sport)............................................................................- 35 -
I.5.4.
Giải đố (Puzzle)............................................................................- 35 -
I.5.5.
Đối kháng (Fighting)....................................................................- 35 -
Các thành phần về đồ họa (graphics)...........................................................- 35 II.1.
File bitmap.........................................................................................- 35 -
II.2.
Các mơ hình màu...............................................................................- 35 -
II.3.
Background Image.............................................................................- 36 -
II.4.
Frame.................................................................................................- 36 -
II.5.
Tile.....................................................................................................- 36 -
II.6.
Sprite.................................................................................................- 37 -
II.7.
Map (Bản đồ).....................................................................................- 37 -
II.8.
Layer..................................................................................................- 38 -
III.
Kỹ thuật xây dựng đồ họa........................................................................- 38 -
III.1.
Graphics techiques (kỹ thuật đồ họa).................................................- 38 -
III.2.
Kỹ thuật chuyển tiếp địa hình............................................................- 39 -
III.3.
Tổ chức map......................................................................................- 40 -
III.3.1.
Dùng tile.......................................................................................- 40 -
III.3.2.
Dùng background.........................................................................- 41 -
III.4.
Cuộn map..........................................................................................- 41 -
III.5.
Tạo chuyển động (animation)............................................................- 42 -
III.6.
Đồng bộ frame...................................................................................- 42 -
IV.
Kỹ thuật thiết kế game.............................................................................- 43 -
IV.1.
Game loop.........................................................................................- 43 -
IV.1.1.
Tổng quan về game loop..............................................................- 43 -
IV.1.2.
Sơ đồ trực quan về vòng lặp trong game......................................- 44 -
IV.2.
Game AI (Artificial Intelligent).........................................................- 45 -
IV.2.1.
Game AI là gì...............................................................................- 45 -
IV.2.2.
Mơ hình artificial intelligent.........................................................- 45 -
IV.3.
Game Physics....................................................................................- 46 -
IV.4.
Thread................................................................................................- 47 -
IV.5.
Sound (âm thanh)...............................................................................- 48 -
THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH................................................- 49 I.
Đặc tả game Caro........................................................................................- 49 I.1.
Giới thiệu về game Caro....................................................................- 49 -
I.2.
Một số thủ thuật chơi Caro................................................................- 49 -
I.3.
Mô tả luật chơi...................................................................................- 51 -
I.4.
Mô tả cách chơi.................................................................................- 51 -
II.
Xây dựng và thiết kế hệ thống.....................................................................- 52 II.1.
Phân tích yêu cầu...............................................................................- 52 -
II.2.
Thiết kế hệ thống...............................................................................- 52 -
II.2.1.
Sơ đồ Use Case.............................................................................- 52 -
II.2.1.1. Mơ hình Use Case Menu Game...............................................- 52 II.2.1.2. Mơ hình Use Case Player........................................................- 53 II.2.1.3. Mơ hình Use case Board (bàn cờ)............................................- 54 II.2.1.4. Mơ hình Use case Server.........................................................- 55 II.2.2.
Sơ đồ hoạt động............................................................................- 55 -
II.2.3.
Sơ đồ các lớp (Class)....................................................................- 56 -
II.3.
Các thuật tốn chính của chương trình...............................................- 65 -
II.3.1.
Xây dựng bàn cờ...........................................................................- 65 -
II.3.2.
Xây dựng Server...........................................................................- 65 -
II.3.3.
Xây dựng Client...........................................................................- 66 -
III.
Kết quả chương trình...............................................................................- 67 -
III.1.
Giao diện menu của game..................................................................- 67 -
III.2.
Giao diện tùy chọn màu quân cờ.......................................................- 68 -
III.3.
Giao diện đăng nhập..........................................................................- 68 -
III.4.
Giao diện đăng ký..............................................................................- 69 -
III.5.
Giao diện khi đăng nhập vào.............................................................- 69 -
III.6.
Giao diện thay đổi thông tin User......................................................- 70 -
III.7.
Giao diện chọn Room........................................................................- 71 -
III.8.
Giao diện chọn Paper (chọn bàn cờ)..................................................- 72 -
III.9.
Giao diện khi vào bàn cờ...................................................................- 73 -
III.10.
Giao diện bàn cờ chơi game..............................................................- 74 -
III.11.
Giao diện chiến thắng........................................................................- 75 -
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN............................................................- 76 I.
II.
Kết quả đạt được.........................................................................................- 76 I.1.
Về lý thuyết.......................................................................................- 76 -
I.2.
Về thực nghiệm.................................................................................- 76 -
Hướng phát triển của đề tài.........................................................................- 77 -
DANH MỤC HÌNH
Hình 1: Mơ hình kiến trúc hệ điều hành Android...............................................- 17 Hình 2: Bảng liệt kê một số kiểu file trong Linux...............................................- 23 Hình 3: Sơ đồ cây thư mục trên hệ điều hành Android......................................- 25 Hình 4: Cách tổ chức file trên Android Java Application..................................- 26 Hình 5: Vịng đời Android....................................................................................- 27 Hình 6: Các hướng di chuyển của Isometric tile.................................................- 38 Hình 7: Sơ dồ tọa độ Isometric tile trên map......................................................- 39 Hình 8: Các hướng di chuyển của Hexagon title.................................................- 39 Hình 9: Sơ đồ tọa độ Hexagon tile trên map.......................................................- 39 Hình 10: Chưa chuyển tiếp...................................................................................- 40 Hình 11: Sau khi chuyển tiếp................................................................................- 40 Hình 12: Xây dựng map dùng tile........................................................................- 41 Hình 13: Xây dựng map dùng background.........................................................- 41 Hình 14: Sơ đồ trực quan vịng lặp trong game..................................................- 44 Hình 15: Sơ đồ Use Case Menu Game.................................................................- 52 Hình 16: Sơ đồ Use Case Player...........................................................................- 53 Hình 17: Sơ đồ Use Case Board...........................................................................- 54 Hình 18: Sơ đồ Use Case Server...........................................................................- 55 Hình 19: Sơ đồ hoạt động.....................................................................................- 55 Hình 20: Lớp Caro................................................................................................- 56 Hình 21: Lớp CaroGame......................................................................................- 56 Hình 22: Lớp CaroView........................................................................................- 57 Hình 23: Lớp Wingame.........................................................................................- 57 Hình 24: Lớp Login...............................................................................................- 58 Hình 25: Lớp Register...........................................................................................- 58 Hình 26: Lớp ServerManager..............................................................................- 59 Hình 27: Lớp Current...........................................................................................- 59 Hình 28: Lớp Room...............................................................................................- 60 Hình 29: Lớp ListRoom........................................................................................- 60 Hình 30: Lớp ListRoomLayout............................................................................- 60 Hình 31: Lớp ListRoomAdapter..........................................................................- 61 Hình 32: Lớp Paper...............................................................................................- 62 -
Hình 33: Lớp ListPaper........................................................................................- 63 Hình 34: Lớp ListPaperLayout............................................................................- 63 Hình 35: Lớp ListPaperAdapter..........................................................................- 63 Hình 36: Lớp ViewPaper......................................................................................- 64 Hình 37: Giao diện menu game............................................................................- 67 Hình 38: Giao diện chọn màu quân cờ................................................................- 68 Hình 39: Giao diện đăng nhập vào game.............................................................- 68 Hình 40: Giao diện đăng ký account....................................................................- 69 Hình 41: Giao diện khi login vào..........................................................................- 69 Hình 42: Giao diện thay đổi thơng tin.................................................................- 70 Hình 43: Giao diện chọn room.............................................................................- 71 Hình 44: Giao diện chọn bàn cờ...........................................................................- 72 Hình 45: Giao diện vào bàn cờ và đợi người chơi...............................................- 73 Hình 46: Giao diện playing game.........................................................................- 74 Hình 47: Giao diện win game...............................................................................- 75 -
Nghiên cứu hệ điều hành Android – Xây dựng chương trình demo game Caro Online
CHƯƠNG 1
TỔNG QUAN VỀ ĐỀ TÀI
.I
Tổng quan
Điện thoại di động là dùng để liên lạc. Nhưng ngày nay, điện thoại di động cịn
có nhiều mục đích sử dụng khác nữa, người ta có thể sử dụng điện thoại di động vào
nhiều việc khác nhau và đôi khi chức năng phụ của điện thoại còn được sử dụng nhiều
hơn là chức năng chính là nghe và gọi. Điện thoại di động khơng cịn là thiết bị liên lạc
thơng thường, mà nó chứa đựng sức mạnh như một máy tính thơng thường dưới một
dạng thức bỏ túi. Cơng nghệ có chuẩn mở của thiết bị di động đã thúc đẩy nhanh tính
hội tụ của nhiều chức năng và dịch vụ vào một thiết bị duy nhất. Các bước tiến vượt
bậc về công nghệ giúp cho bộ nhớ của điện thoại di động ngày càng lớn, tốc độ xử lý
ngày càng nhanh hơn. Người ta cịn tích hợp vào đó máy ảnh, máy quay video, radio,
tivi, các phần mềm ứng dụng và nhiều tính năng khác. Điều này làm cho chiếc điện
thoại trở thành cơng cụ rất hữu ích trong đời sống cũng như trong công việc.
Trong thời gian qua, chúng ta đã chứng kiến được sự thay đổi ngoạn mục của
công nghệ di động. Không chỉ dừng lại ở việc chụp ảnh, quay phim mà cịn có thể gửi
email, chat với bạn bè, nghe nhạc, xem truyền hình, chơi game giải trí nữa.
.II Đặt vấn đề
Thị trường game những năm qua đang rất sơi động và nóng bỏng. Ngồi những
game trên các máy tính truyền thống cịn xuất hiện các game cho các máy cầm tay như
Sony PSP của hãng Sony và Nintendo DS của hãng Nintendo với nhiều tính năng mới
lạ. Game cho điện thoại di động cũng phát triển nhanh chóng, xuất hiện nhiều cơng ty
chun cung cấp game cho di động qua hệ thống tin nhắn và đặc biệt tại Việt Nam đã
có nhiều cơng ty lập trình game như cơng ty GameLoft, AsNet, VinaGame chuyên sản
xuất và gia công game di động. Điều trên hứa hẹn sự phát triển mạnh mẽ của ngành
công nghiệp giải trí điện tử trong tương lai.
Phan Ngọc Huy, Hồng Đức Nhân – 06T3
11
Nghiên cứu hệ điều hành Android – Xây dựng chương trình demo game Caro Online
.III Lý do chọn đề tài
Ngày nay do nhu cầu đời sống của con người ngày càng được nâng cao, và nhu
cầu giải trí cũng được quan tâm. Cùng với sự phát triển các tính năng của điện thoại di
động, vấn đề đặt ra là vì sao chúng ta khơng kết hợp các tiện ích giải trí trên chiếc điện
thoại để có thể giúp con người giảm stress sau những giờ làm việc vất vả. Từ thực tế
đó, với những kiến thức đã được học ở trường và trong thời gian thực tập, kết hợp với
nền tảng công nghệ trên di động mở của Google chúng tơi đã chọn đề tài tốt nghiệp
cho mình:
Nghiên cứu hệ điều hành Android
Và xây dựng chương trình demo game Caro online.
Dù chương trình game rất nhiều nhưng để viết ra một game hay và hoàn chỉnh,
thu hút được nhiều người chơi là không dễ. Tuy vậy với niềm đam mê lập trình và u
thích game, chúng tơi muốn tiếp cận và thử sức với lĩnh vực còn khá mới mẻ này.
.IV Hướng nghiên cứu của đề tài
.IV.1. Cơ sở lý thuyết
Tìm hiểu cơng nghệ và nền tảng di động mở Android của Google, quy trình
phát triển game Online, nhằm xây dựng thành công một ứng dụng game Online trên
nền di động Android. Với mục đích đó, u cầu chúng tơi phải nắm được các kiến thức
cơ bản sau đây trên nền tảng cơng nghệ Android:
Quy trình phát triển một ứng dụng game trên nền di động.
Các công cụ và ngơn ngữ lập trình.
Kiến thức về kĩ thuật và công nghệ sử dụng thiết kế game.
Thực thi chương trình trên thiết bị thực (điện thoại di động chạy trên nền
Android).
.IV.2. Công cụ thiết kế
Thiết kế chương trình: Eclipse 3.5.
Phan Ngọc Huy, Hồng Đức Nhân – 06T3
12
Thiết kế đồ họa Photoshop.
Android SDK _r10-window tích hợp trên Eclipse.
.V
Dự kiến kết quả đạt được
Nắm rõ cơ sở lý thuyết thiết kế một game nói chung trên nền di động sử dụng
cơng nghệ Android, bên cạnh đó chúng tôi tiến hành xây dựng ứng dụng game Caro
online thỏa mãn các yêu cầu sau:
Game phải hiển thị rõ phần chơi với các chức năng: thắng, thua game.
Cài đặt được trên các thiết bị di động có hổ trợ Android.
.VI Nội dung tổ chức luận văn
Với những kết quả dự kiến đạt được của chương trình, luận văn được tổ chức
thành 4 chương. Cụ thể như sau:
Chương 1. Tổng quan đề tài: giới thiệu sơ lược về đề tài, hướng nghiên
cứu và dự kiến kết quả đạt được của đề tài.
Chương 2. Giới thiệu tổng quan về nền tảng Android: khái niệm, lịch
sử phát triển, các tính năng, mơ hình, vịng đời và các gói quan trọng của
Android.
Chương 3. Cơ sở lý thuyết về game: giới thiệu các thể loại game, các
kỹ thuật sử dụng trong game, khái niệm về đồ họa, kỹ thuật xây dựng đồ
họa trong game.
Chương 4. Thiết kế và xây dựng chương trình : đặc tả về game, phân
tích thiết kế hệ thống game, cài đặt các thuật toán chính của chương trình
và kết quả đạt được.
Phần kết luận và hướng phát triển: nêu ra những nhận xét về kết quả
đã đạt được, những hạn chế và chưa đạt được, từ đó đưa ra phương
hướng phát triển tiếp theo của đề tài.
Nghiên cứu hệ điều hành Android – Xây dựng chương trình demo game Caro Online
CHƯƠNG 2
GIỚI THIỆU TỔNG QUAN VỀ ANDROID
.I
Giới thiệu về Android
Android là một hệ điều hành di động dựa trên nền tảng linux phiên bản 2.6
dành cho các dòng điện thoại SmartPhone. Đầu tiên được ra đời bởi cơng ty liên hợp
Android, sau đó được Google mua lại và phát triển từ năm 2005 và trở thành một hệ
điều hành di động mã nguồn mở, miễn phí, mạnh mẽ và được ưa chuộng cao trên thế
giới.
Hệ điều hành android một hệ điều hành rất mạnh mạnh, có bảo mật cao, hỗ trợ
được nhiều công nghệ tiên tiến như 3G, GPS, EDGE, Wifi.. tương thích với nhiều
phần cứng, hỗ trợ nhiều loại bộ nhập dữ liệu như keyboard, touch và trackball.
Android là hệ điều hành di động nên có khả năng kết nối cao với các mạng khơng dây.
Hỗ trợ cơng nghệ OpenGL nên có khả năng chơi các phương tiện media, hoạt hình
cũng như trình diễn các khả năng đồ họa khác cực tốt, là tiền đề để phát triển các ứng
dụng có giao diện phức tạp chẳng hạn như là các trò chơi.
Android liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android
được tối ưu hóa để hoạt động tốt hơn, nhanh và ổn định hơn, hỗ trợ thêm công nghệ
mới. Năm 2008, hệ điều hành android đã chính thức mở tồn bộ mã nguồn, điều đó
cho phép các hãng điện thoại có thể đem mã nguồn về tùy chỉnh, thiết kế lại sao cho
phù hợp với mỗi mẫu mã điện thoại của họ và điều quan trọng nữa là hệ điều hành mở
này hồn tồn miễn phí, khơng phải trả tiền nên giúp họ tiết kiệm khá lớn chi phí phát
triển hệ điều hành. Những điều đó là cực kỳ tốt không chỉ đối với các hãng sản xuất
điện thoại nhỏ mà ngay cả với những hãng lớn như Samsung, HTC....
Với Google, vì android hồn tồn miễn phí, Google khơng thu tiền từ những
hãng sản xuất điện thoại, tuy không trực tiếp hưởng lợi từ android nhưng bù lại,
những dịch vụ của hãng như Google Search, Google Maps,... nhờ có android mà có thể
dễ dàng xâm nhập nhanh vào thị trường di động vì mỗi chiếc điện thoại được sản xuất
ra đều được tích hợp hàng loạt dịch vụ của Google. Từ đó hãng có thể hưởng lợi, chủ
yếu là từ các nguồn quảng cáo trên các dịch vụ đó.
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3
14
Nghiên cứu hệ điều hành Android – Xây dựng chương trình demo game Caro Online
Với các nhà phát triển ứng dụng (developers), việc hệ điều hành android được
sử dụng phổ biến đồng nghĩa với việc họ có thể thoải mái phát triển ứng dụng trên nền
android với sự tin tưởng là ứng dụng đó sẻ có thể chạy được ngay trên nhiều dòng điện
thoại của các hãng khác nhau. Họ ít phải quan tâm là đang phát triển cho điện thoại
nào, phiên bản bao nhiêu vì nền tảng android là chung cho nhiều dòng máy, máy ảo
Java đã chịu trách nhiệm thực thi những ứng dụng phù hợp với mỗi dịng điện thoại
mà nó đang chạy. Tất cả các chương trình ứng dụng được viết bằng ngơn ngữ Java kết
hợp với XML nên có khả năng khả chuyển cao.
Một số hãng sản xuất điện thoại có sử dụng hệ điều hành android tiêu biểu :
HTC với các dòng Desire HD, Evo 4G, DROID ERIS, Desire Z, Hero, Desire,
Tattoo, Wildfire, Droid Incredible, Legend, Magic, Google Nexus One, Dream,
Aria, Paradise
LG với các dòng GT540 Optimus, Optimus Chic E720, Optimus One P500,
GW620, Optimus Z, Optimus Q, KH5200 Andro-1, GW880, C710Aloha
MOTOROLA với các dòng MILESTONE 2, BACKFLIP, Droid XTreme,
MT710 ZHILING, MILESTONE, XT720 MOTOROI, A1680, XT800
ZHISHANG, DEFY, CHARM, XT806...
SAMSUNG với các dòng máy I9000 Galaxy S, Galaxy Tab, Epic 4G, i5510,
I5500 Galaxy 5, I7500 Galaxy, I5800 Galaxy 3, M110S Galaxy S, I6500U
Galaxy, Galaxy Q, I5700 Galaxy Spica, I8520 Galaxy Beam, I909 Galaxy S
SONY : XPERIA X10, XPERIA X10 mini, XPERIA X8
ACER với các dòng máy beTouch T500, Liquid E, Stream, Liquid, beTouch
E110, beTouch E130, beTouch E400, beTouch E120, Liquid Metal
Ngồi ra cịn nhiều hãng điện thoại vừa và nhỏ khác nữa cũng sử dụng hệ điều
hành android trong sản phẩm của mình....
.II Những tính năng của Android
Các tính năng mà Android hỗ trợ rất rộng, bao gồm đồ họa 2D, 3D (dựa trên
OPENGL_ES), khả năng định vị (hiện chỉ dùng GPS), Bluetooth, EDGE, 3G, WiFi,
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3
15
Nghiên cứu hệ điều hành Android – Xây dựng chương trình demo game Caro Online
hỗ trợ GSM, dữ liệu có thể được lưu trữ trong cơ sở dữ liệu SQLLite… và một số tính
năng nâng cao như WiFi, GPS, 3D hardware…sẽ phụ thuộc vào từng dòng thiết bị cụ
thể. Các bước phát triển ứng dụng trên Android rất đơn giản, với sự hỗ trợ của nhiều
thư viện có sẵn, mơ hình lập trình khá sáng sủa cùng với Eclipse.
Google cho biết, Android cho phép điện thoại sẽ nối mạng đơn giản như máy
tính. Ngồi ra, sẽ có hàng triệu phần mềm, các ứng dụng khác được tạo ra. Ebay, một
thành viên của liên minh bày tỏ, hy vọng người dùng điện thoại di động sẽ dễ dàng
mua bán, sử dụng dịch vụ của hãng từ chính điện thoại.
Android sẽ mang nhiều lợi ích cho khách hàng, các lập trình viên và nhà sản
xuất, nhà cung cấp mạng di động. Điều này cũng có nghĩa các sản phẩm, dịch vụ có
giá rẻ hơn bởi điện thoại sẽ dễ sử dụng, ứng dụng nhiều hơn, khai thác các dịch vụ
Internet đơn giản hơn.
.III Kiến trúc hệ điều hành Android
Hệ điều hành android có 4 tầng từ dưới lên trên là tầng hạt nhân Linux (Phiên
bản 2.6), Tầng Libraries & Android runtime , Tầng Application Framework và trên
cùng là tầng Application.
Mơ hình sau thể hiện các thành phần chính của hệ điều hành Android. Mỗi phần
được mơ tả như sau:
Phan Ngọc Huy, Hồng Đức Nhân – 06T3
16
Nghiên cứu hệ điều hành Android – Xây dựng chương trình demo game Caro Online
Hình 1: Mơ hình kiến trúc hệ điều hành Android
.III.1. Applications layer (Tầng ứng dụng)
Đây là lớp ứng dụng giao tiếp với người dùng, bao gồm các ứng dụng như :
Các ứng dụng cơ bản, được cài đặt đi liền với hệ điều hành là gọi điện(phone),
quản lý danh bạ(Contacts), duyệt web (Browser), nhắn tin (SMS), lịch làm việc
(Calendar), đọc e-mail (Email-Client), bản đồ (Map), quay phim chụp ảnh (camera)...
Các ứng dụng được cài thêm như các phần mềm chứng khốn (Stock), các trị chơi
(Game), từ điển...
Các chương trình có các đặc điểm là :
Viết bằng Java, phần mở rộng là apk.
Khi mỗi ứng dụng được chạy, nó có một phiên bản Virtual Machine được dựng
lên để phục vụ cho nó. Nó có thể là một Active Program : Chương trình có giao
diện với người sử dụng hoặc là một background : chương trình chạy nền hay là
dịch vụ.
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3
17
Nghiên cứu hệ điều hành Android – Xây dựng chương trình demo game Caro Online
Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùng một thời
điểm, có thể có nhiều chương trình cùng chạy một lúc, tuy nhiên, với mỗi ứng
dụng thì có duy nhất một thực thể (instance) được phép chạy mà thôi. Điều đó
có tác dụng hạn chế sự lạm dụng tài nguyên, giúp hệ thống hoạt động tốt hơn.
Các ứng dụng được gán số ID của người sử dụng nhằn phân định quyền hạn khi
sử dụng tài nguyên, cấu hình phần cứng và hệ thống.
Android là một hệ điều hành có tính mở, khác với nhiều hệ điều hành di động
khác, android cho phép một ứng dụng của bên thứ ba được phép chạy nền. Các
ứng dụng đó chỉ có một hạn chế nhỏ đó là nó khơng được phép sử dung q
5~10% cơng suất CPU, điều đó nhằn để tránh độc quyền trong việc sử dụng
CPU.
Ứng dụng không có điểm vào cố định, khơng có phương thức main để bắt đầu.
.III.2. Application Framework (Nền tảng ứng dụng)
Tầng này xây dựng bộ công cụ - các phần tử ở mức cao để các lập trình viên có
thể nhanh chóng xây dựng ứng dụng. Nó được viết bằng Java, có khả năng sử dụng
chung để tiết kiệm tài nguyên.
Đây là một nền tảng mở, điều đó có 2 điều lợi:
- Với các hãng sản xuất điện thoại : Có thể tùy biến để phù hợp với cấu hình
điện thoại mà họ sản xuất cũng như để có nhiều mẫu mã, style hợp thị hiếu người
dùng. Vì thế nên tuy cùng chung nền tảng android mà điện thoại của Google có thể
khác hẳn với Motorola, HTC, T-Mobile, Samsung...
- Với lập trình viên: Cho phép lập trình viên có thể sử dụng các API ở tầng
trên mà không cần phải hiểu rõ cấu trúc bên dưới, tạo điều kiện cho lập trình viên tự
do sáng tạo bởi vì chỉ cần quan tâm đến nội dung mà ứng dụng họ làm việc. Một tập
hợp API rất hữu ích được xây dựng sẵn như hệ thống định vị, các dịch vụ chạy nền,
liên lạc giữa các ứng dụng, các thành phần giao diện cấp cao ...
Giới thiệu một số thành phần của phần này:
- Activity Manager: Quản lý các chu kỳ sống của một ứng dụng cũng như
cung cấp công cụ điều khiển các Activity.
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3
18
Nghiên cứu hệ điều hành Android – Xây dựng chương trình demo game Caro Online
- Telephony Manager: Cung cấp cơng cụ để thực hiện việc liên lạc như gọi
điện thoại
- XMPP Service: Cung cấp công cụ để liên lạc trong thời gian thực
- Location Manager: Cho phép xác định vị trí của điện thoại thoại dựa vào hệ
thống định vị toàn cầu GPS và Google Maps.
- Window Manager: Quản lý việc xây dựng và hiển thị các giao diện người
dùng cũng như tổ chức quản lý các giao diện giữa các ứng dụng.
- Notication Manager: Quản lý việc hiển thị các thơng báo (như báo có tin
nhắn, có e-mail mới..)
- Resource Manager: Quản lý tài nguyên tĩnh của các ứng dụng bao gồm các
file hình ảnh, âm thanh, layout, string. (Những thành phần khơng được viết bởi ngơn
ngữ lập trình)
.III.3. Libraries Layer (Tầng thư viện) & Android Runtime (Tầng
thực thi)
Phần này có 2 thành phần là phần Library và Android Runtime
a. Phần Libraries:
Phần này bao gồm một bộ các thư viện C/C++ được sử dụng bởi nhiều thành
phần khác nhau trong hệ thống Android. Những chức năng này được cung cấp cho
người phát triển trong framework Android. Vài thư viện chính được liệt kê sau đây:
Thư viện hệ thống C - một cài đặt dẫn xuất BSD của thư viện hệ thống
chuẩn C (libc), được điều chỉnh để nhúng vào các thiết bị cài đặt mã
nguồn Linux.
Thư viện Media - dựa trên nền tảng mở của PacketVideo, những thư viện
hỗ trợ phát lại và lưu nhiều định dạng audio và video phổ biến, chẳng
hạn như những file hình ảnh tĩnh, bao gồm MPEG4, H.246, MP3, ARM,
AAC, JPG và PNG.
Surface Manager - quản lý các truy cập vào hệ thống con hiển thị và tích
hợp các lớp đồ họa 2D và 3D từ nhiều ứng dụng.
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3
19
Nghiên cứu hệ điều hành Android – Xây dựng chương trình demo game Caro Online
LibWebCore - một engine trình duyệt web hiện đại với việc tích hợp
trình duyệt Android và một trình duyệt web có thể nhúng được.
SGL - một engine đồ họa 2D tầng dưới.
Thư viện 3D (3D libraries) - một cài đặt dựa trên các APIs của công
nghệ OpenGL_ES 1.0, các thư viện sử dụng phần cứng tăng tốc 3D hoặc
các thư viện bao gồm các ứng dụng phần mềm 3D chuyển định dạng ảnh
vector thành bitmap được tối ưu cao độ.
FreeType - trình bày font ảnh và vector.
SQLite - một hệ cơ sở dữ liệu quan hệ mạnh mẽ và tốn ít bộ nhớ có sẵn
cho tất cả các ứng dụng.
b. Phần Android runtime:
Phần này bao gồm một bộ các thư viện chính cung cấp hầu hết các chức năng
có sẵn trong các thư viện chính của ngơn ngữ Java.
Phần này có 2 bộ phận tương tự như mơ hình chạy Java trên máy tính thường.
- Thứ nhất là các thư viện lõi (Core Library), chứa các lớp như JAVA IO,
Collections, File Access.
- Thứ hai là một máy ảo java (Dalvik Virtual Machine).
Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng dụng Java của hệ điều
hành android không được chạy bằng JRE của Sun (nay là Oracle) (JVM) mà là chạy
bằng máy ảo Dalvik do Google phát triển.
Mỗi ứng dụng Android chạy trên bộ xử lý riêng của nó, với mỗi một máy ảo
Dalvik.
Dalvik được thiết kế để một thiết bị có thể chạy nhiều máy ảo hữu hiệu. Máy ảo
Dalvik thực thi nhiều file định dạng (.dex), định dạng này có thể được tối ưu để ít tốn
bộ nhớ nhất. Máy ảo dựa trên việc đăng ký, và chạy nhiều lớp được biên dịch bởi bộ
biên dịch Java, nó được chuyển thành định dạng .dex bằng cơng cụ “dx” có sẵn.
Máy ảo Dalvik dựa trên hệ điều hành Linux cho những chức năng tầng dưới
như phân luồng và quản lý bộ nhớ cấp thấp.
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3
20
Nghiên cứu hệ điều hành Android – Xây dựng chương trình demo game Caro Online
.III.4. Linux Kernel (Nhân Linux)
Hệ điều hành android được phát trển dựa trên hạt nhân linux, cụ thể là hạt nhân
linux phiên bản 2.6, điều đó được thể hiện ở lớp dưới cùng này. Tất cả mọi hoạt động
của điện thoại muốn thi hành được thì đều được thực hiện ở mức cấp thấp ở lớp này
bao gồm quản lý bộ nhớ (memory management), giao tiếp với phần cứng (driver
model), thực hiện bảo mật (security), quản lý tiến trình (process).
Tuy được phát triển dựa vào nhân linux nhưng thực ra nhân linux đã được nâng
cấp và sửa đổi rất nhiều để phù hợp với tính chất của những thiết bị cầm tay như hạn
chế về bộ vi xử lý, dung lượng bộ nhớ, kích thước màn hình, nhu cần kết nối mạng
khơng dây...
Tầng này có các thành phần chủ yếu:
Display Driver : Điều khiển việc hiển thị lên màn hình cũng như thu nhận
những điều khiển của người dùng lên màn hình (di chuyển, cảm ứng...)
Camera Driver : Điều kiển hoạt động của camera, nhận luồng dữ liệu từ
camera trả về.
Bluetooth Driver : Điều khiển thiết bị phát và thu sóng Bluetooth.
USB driver : Quản lý hoạt động của các cổng giao tiếp USB
Keypad driver : Điều khiển bàn phím
Wifi Driver : Chịu trách nhiệm về việc thu phát sóng wifi
Audio Driver : điều khiển các bộ thu phát âm thanh, giải mã các tính hiệu
dạng audio thành tín hiệu số và ngược lại
Binder IPC Driver : Chịu trách nhiệm về việc kết nối và liên lạc với mạng
vô tuyến như CDMA, GSM, 3G, 4G, E để đảm bảo những chức năng truyền
thông được thực hiện.
M-System Driver : Quản lý việc đọc ghi... lên các thiết bị nhớ như thẻ SD,
flash
Power Madagement : Giám sát việc tiêu thụ điện năng.
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3
21
Nghiên cứu hệ điều hành Android – Xây dựng chương trình demo game Caro Online
.IV Hệ thống tập tin trên hệ điều hành Android
Trong phạm vi một bài tìm hiểu về hệ điều hành, em chỉ xin tìm hiểu rõ một
vấn đề của hệ điều hành android đó là vấn đề quản lý hệ thống tập tin. Phần này có
điểm thuận lợi để tìm hiểu đó là vì được phát triển từ nhân linux nên hệ thống tập tin
trên android cực kỳ giống hệ thống tập tin trên linux như là về cách tổ chức, những
quyền hạn của người sử dụng lên file...
.IV.1. Tổng quan về hệ thống file trên Android
Trong android, các file được tổ chức thành các thư mục, theo mơ hình phân
cấp. Tham chiếu đến một file bằng tên và đường dẫn. Các câu lệnh thao tác file cho
phép thực hiện các chức năng như dịch chuyển, sao chép toàn bộ thư mục cùng với
các thư mục con chứa trong nó…
Có thể sử dụng các ký tự, dấu gạch dưới, chữ số, dấu chấm và dấu phảy để đặt
tên file. Không được bắt đầu một tên file bằng dấu chấm hay chữ số. Những ký tự
khác như ‘/’, ‘?’, ‘*’, là ký tự đặc biệt được dành riêng cho hệ thống. Chiều dài của tên
file có thể tới 256 ký tự. Trong hệ điều hành android có sự phân biệt tên file chữ hoa
và chữ thường, điều đó có nghĩa là trong cùng 1 thư mục có thể tồn tại những file có
tên là File, FILE, file.. và chúng là những file khác nhau..
Tất cả các file trong android có chung cấu trúc vật lý là chuỗi các byte (byte
stream). Cấu trúc thống nhất này 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ị được xem như file.
Chính việc xem mọi thứ như các file cho phép android quản lý và chuyển đổi dữ liệu
một cách dễ dàng. 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. Các thành phần được xem như các file, chúng được phân biệt dựa
trên kiểu file: ordinary file, directory file, character device file, và block device file.
.IV.2. Các kiểu file trên Android
Trong nhiều hệ điều hành như window, người ta phân biệt rõ file (tập tin) và
folder (hay directory : thư mục) là 2 thành phần khác hẳn nhau. Tuy nhiên trên hệ điều
hành android (cũng như linux) thì coi directory cũng là file và nó là một loại file đặc
biệt. Thực tế còn một số loại file nữa có thể liệt kê theo bảng sau :
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3
22
Nghiên cứu hệ điều hành Android – Xây dựng chương trình demo game Caro Online
Chữ cái biểu diễn
Kiểu file
d
Thư mục (Directory)
b
File kiểu khối (block-type special file)
c
File kiểu ký tự (character-type special file)
l
Liên kết tượng trưng (symbolic link)
p
File đường ống (pipe)
s
Socket
-
File bình thường (regular file)
Hình 2: Bảng liệt kê một số kiểu file trong Linux
.IV.3. Tổ chức quyền sở hữu và quyền hạn trên file
Tương tự trên hệ thống linux, trên hệ điều hành android, một file có thể liên kết
với một người sử dụng và một nhóm người sử dụng. Sự liên kết đó là một tập hợp các
quyền hạn truy cập bao gồm quyền được phép đọc (read), được phép ghi (write) và
được phép thực thi (execute).
Cụ thể như sau: Một file sẻ có những quyền hạn tương ứng với 9 ký tự theo
mẫu sau : Với ký tự r w x nghĩa là có quyền tương ứng với ký tự viết tắt đó, - nghĩa là
khơng có quyền hạn đó.
Owner
r/-
w/-
Owner Group
x/-
r/-
w/-
Other
x/-
r/-
w/-
x/-
3 ký tự đầu tiên là quyền hạn chủ nhân 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 hạn của những người khơng thuộc nhóm sở hữu file.
Ví dụ: Một file có dãy ký tự biểu diễn quyền hạn là rwxr-xr-- thì điều đó có
nghĩa :
3 ký tự đầu là rwx : Chủ nhân có thể đọc, ghi và thực thi file
3 ký tự tiếp theo là r-x thì nhóm tài khoản sở hữu file có quyền đọc và thực thi
file chứ khơng có quyền ghi, chỉnh sửa file.
3 ký tự cuối là r-- nghĩa là những người không sở hữu file chỉ được phép đọc
mà không thể chỉnh sửa hay thực thi file.
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3
23
Nghiên cứu hệ điều hành Android – Xây dựng chương trình demo game Caro Online
Trên hệ thống android, để biết xem được quyền hạn đó, ta có thể sử dụng câu
lệnh ls –l –d.
Ví dụ: ls –l –d /mnt/sdcard/FanHy để xem quyền hạn của file
/mnt/sdcard/QuangHoa thì có thể trả về kết quả như sau:
d---rwxr-x system sdcard_rw
2010-12-29 21:00 FanHy
Thì những thơng tin có thể lấy về là :
Ký tự đầu tiên là chữ d : vậy file đó có kiểu là thư mục hay là file bao hàm
Chuổi ghi quyền hạn là ---rwxr-x thì có nghĩa
(---)Người sở hữu khơng được phép đọc, ghi, thực thi file
(rwx) Nhóm tài khoản sử hữu được phép đọc, ghi, thực thi file
r-x : Những người không sở hữu file được phép đọc và thực thi file
nhưng không được phép chỉnh sửa hay ghi lên file.
Chuổi miêu tả file : sdcard_rw nghĩa là đây thuộc thiết bị thẻ nhớ sd, đọc và
ghi được.
2010-12-29 21:00 Thời gian chỉnh sửa lần cuối
FanHy : tên của file.
Ngồi ra có 2 lệnh khác cũng hữu dụng là lệnh chown để thay đổi quyền sở
hữu file, lệnh chmod để thay đổi quyền hạn liên quan đến file và lệnh chgrp để thay
đổi nhóm người sở hữu file.
.IV.4. Cây thư mục trên hệ điều hành Android
Thư mục (hay có thể gọi là file) root là thư mục gốc của tất cả các file thư mục
cịn lại. Dưới nó có chứa một số file thư mục hệ thống. Mỗi thư mục (trừ thư mục root)
đều có một thư mục cha chứa nó, bản thân nó cũng có thể có nhiều file thư mục con.
Cấu trúc đó có thể mơ tả bằng một cây thư mục có dạng như sau :
/root
var
ect
mnt
system
cache
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3
framework
bin
lost+found
24
font
lib
app
Nghiên cứu hệ điều hành Android – Xây dựng chương trình demo game Caro Online
Hình 3: Sơ đồ cây thư mục trên hệ điều hành Android
Giới thiệu một vài thư mục tiêu biểu :
/(root) : Là thư mục gốc. Là thư mục duy nhất khơng có thư mục cha
/ mnt : thư mục chứa thiết bị lưu động (removeable)
/system : chứa những thành phần cơ bản nhất của hệ thống
/ect : chứa những file cấu hình của hệ thống, nó cực kỳ quan trọng vì sự hoạt
động của hệ thống đều bị chi phối ở những file cấu hình này.
/system/lost+found : chứa những tập tin bị mất lúc khởi động máy
/system/font : chứa những font chữ hiển thị được
/system/lib : chứa các thư viện để các phần mềm hoạt động (các phần mềm viết
bằng ngôn ngữ java)
/system/app : chứa các file apk của phần mềm. (Các file cài đặt ứng dụng, kiểu
như MSI trong window hay dev trong Linux)
/system/bin : Chứa các chương trình nội trú của hệ thống.
.V
Cách thức tổ chức file trên Android Java Application
Tên File
Activity.java
R.java
Chức năng
File khởi động mặc định
File chứa tất cả ID resource
Android Library/
Thư mục chứa file Android’s SDK
Assets/
Đa phương tiện và các file yêu cầu
res/
Res/drawable
Res/layout
Chứa tài nguyên cần sử dụng
Thư mục chứa file ảnh
File XML-style view layout
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3
25