Tải bản đầy đủ (.pdf) (87 trang)

Công nghệ phát triển ứng dụng di động react native và ứng dụng thí nghiệm cho phần mềm hỗ trợ học tiếng anh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.25 MB, 87 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
VIỆN ĐẠI HỌC MỞ HÀ NỘI

LUẬN VĂN THẠC SỸ
CÔNG NGHỆ PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG
REACT NATIVE VÀ ỨNG DỤNG THÍ NGHIỆM CHO
PHẦN MỀM HỖ TRỢ HỌC TIẾNG ANH

PHẠM THỊ HÀ HẠNH

CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN
MÃ SỐ: 60.48.02.018

NGƢỜI HƢỚNG DẪN KHOA HỌC
TS. DƢƠNG THĂNG LONG

HÀ NỘI - 2017


LỜI CAM ĐOAN
Tôi xin cam đoan toàn bộ nội dung đƣợc trình bày trong bản luận văn này là
kết quả tìm hiểu và nghiên cứu của riêng tôi, chƣa đƣợc sử dụng để bảo vệ một học
vị nào.
Tôi xin cam đoan rằng, mọi sự giúp đỡ trong việc thực hiện luận văn này đã
đƣợc cảm ơn và các thông tin trích dẫn trong luận văn đều đã đƣợc ghi rõ nguồn
gốc.
Hà Nội, ngày 12 tháng 11 năm 2017
Học viên

Phạm Thị Hà Hạnh


i


LỜI CẢM ƠN
Trong quá trình thực hiện luận văn, tôi đã nhận đƣợc sự hƣớng dẫn, giúp đỡ
động viên của nhiều cá nhân và tập thẻ. Tôi xin đƣợc bày tỏ sự cảm ơn sâu sắc nhất
tới tất cả các cá nhân tập thẻ đã tạo điều kiện giúp đỡ tôi trong học tập và nghiên
cứu.
Tôi xin trân trọng cảm ơn Ban giám hiệu nhà trƣờng, khoa Đào tạo Sau đại
học và các thầy giáo, cô giáo Viện Đại học Mở Hà Nội, đặc biệt là TS. Dƣơng
Thăng Long đã nhiệt tình hƣớng dẫn chỉ bảo tôi trong quá trình nghiên cứu và thực
hiện đề tài của mình.
Tôi xin cảm ơn sự động viên, giúp đỡ của bạn bè và gia đình đã giúp đỡ tôi
thực hiện đề tài này.
Tôi xin chân thành cảm ơn mọi sự giúp đỡ quý báu đó!
Hà Nội, ngày 12 tháng 11 năm 2017
Học viên

Phạm Thị Hà Hạnh

ii


MỤC LỤC
LỜI CAM ĐOAN ....................................................................................................... i
LỜI CẢM ƠN ............................................................................................................ ii
MỤC LỤC ................................................................................................................. iii
DANH MỤC CÁC THUẬT NGỮ, KÝ HIỆU, CỤM TỪ VIẾT TẮT .................... vi
DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ .......................................................... vii
MỞ ĐẦU .....................................................................................................................1

CHƢƠNG 1. TỔNG QUAN VỀ DI ĐỘNG VÀ LẬP TRÌNH DI ĐỘNG ...............4
1.1. Giới thiệu về điện thoại thông minh .................................................................4
1.2. Kiến trúc của các nền tảng hệ điều hành ..........................................................5
1.2.1. Hệ điều hành Android ...........................................................................5
1.2.2. Hệ điều hành iOS ................................................................................10
1.2.3. Các hệ điều hành khác .........................................................................15
1.3. Các phƣơng pháp lập trình ứng dụng .............................................................15
1.3.1. Phƣơng pháp lập trình ứng dụng Native .............................................15
1.3.2. Phƣơng pháp lập trình ứng dụng lai ....................................................16
1.3.3. Phƣơng pháp lập trình ứng dụng đa nền tảng .....................................17
1.4. Kết luận chƣơng .............................................................................................18
CHƢƠNG 2. LẬP TRÌNH ỨNG DỤNG DI ĐỘNG VỚI REACT NATIVE .........19
2.1. Tổng quan về React Native ............................................................................19
2.1.1. Giới thiệu React Native ........................................................................19
2.1.2. Lịch sử phát triển ..................................................................................20
2.1.3. Ý tƣởng hình thành của React Native ..................................................21
2.2. React Native và các công nghệ liên quan .......................................................23
2.2.1. Ngôn ngữ lập trình Javascript .............................................................23
2.2.2. Javascript VM (V8 engine) .................................................................24
2.2.3. ReactJS ................................................................................................26
iii


2.2.4. JSX ......................................................................................................27
2.2.5. Node.js và NPM ..................................................................................28
2.3. Kiến trúc React Native ...................................................................................28
2.3.1. Kiến trúc ứng dụng React Native ........................................................28
2.3.2. Cách thức hoạt động của React Native ...............................................31
2.3.3. Luồng hoạt động và hiệu năng ............................................................37
2.4. Thành phần và các khái niệm cơ bản .............................................................38

2.4.1. React Native Component ....................................................................38
2.4.2. Props và state của Component ............................................................39
2.4.3. Vòng đời của React Native Component ..............................................42
2.4.4. Định dạng và bố cục ............................................................................44
2.4.5. Làm việc với mạng ..............................................................................47
2.4.6. Xử lý chạm ..........................................................................................48
2.5. Các thành phần và giao diện...........................................................................48
2.5.1. Các thành phần đƣợc hỗ trợ bởi React Native ....................................49
2.5.2. Các giao diện đƣợc hỗ trợ từ React Native .........................................49
2.6. Kết luận chƣơng .............................................................................................50
2.6.1. Ƣu điểm ...............................................................................................50
2.6.2. Nhƣợc điểm .........................................................................................52
CHƢƠNG 3. PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG HỖ TRỢ HỌC TIẾNG ANH
DỰA TRÊN CÔNG NGHỆ REACT NATIVE ........................................................53
3.1. Phƣơng pháp triển khai ..................................................................................53
3.1.1. Lựa chọn nội dung và phạm vi phát triển ứng dụng ...........................53
3.1.2. Mục tiêu phát triển ..............................................................................53
3.2. Xác định và phân tích chức năng ...................................................................54
3.3. Phân tích hệ thống ..........................................................................................55
3.4. Hình ảnh ứng dụng khi chạy thực tế ..............................................................63
3.5. Kết luận chƣơng .............................................................................................67
iv


KẾT LUẬN ...............................................................................................................68
DANH MỤC TÀI LIỆU THAM KHẢO ..................................................................70
PHỤ LỤC ..................................................................................................................72

v



DANH MỤC CÁC THUẬT NGỮ, KÝ HIỆU, CỤM TỪ VIẾT TẮT
Kí hiệu, từ viết tắt

Tiếng Anh

Tiếng Việt
Cây cú pháp trừu tƣợng

AST

Abstract Syntax Tree

Cmp

Component

CocoaPod

CocoaPod

DOM

Document Object Model

Framework

Framework

IOT


Internet of Things

Native app

Native application

Một đối tƣợng giao diện ngƣời dùng
của React Native
Bộ công cụ phát triển phần mềm
cho hệ điều hành iOS
Mô hình các đối tƣợng trong tài liệu
HTML
Nền tảng lập trình và thực thi ứng
dụng
Kết nối vạn vật
Ứng dụng viết bằng ngôn ngữ gốc
phát hành kèm theo hệ điều hành.
Dùng để mô tả công việc vẽ một

Render

giao diện ngƣời dùng lên màn hình

Render

hiển thị của thiết bị di động.
Tên một nền tảng hỗ trợ lập trình

RN


React Native

SDK

Software Development Kit

State

state

UI

User Interface

Giao diện ngƣời dùng

VM

Virtual Machine

Máy ảo

ứng dụng di động
Bộ công cụ phát triển phần mềm
Trạng thái của một Cmp trong
React Native

vi



DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ
Hình 1.1. Kiến trúc hệ điều hành Android ..................................................................6
Hình 1.2. Kiến trúc hệ điều hành iOS .......................................................................11
Hình 2.1. Các ứng dụng đƣợc viết bằng React Native ..............................................20
Hình 2.2. Cách thức hoạt động của DOM ảo ............................................................22
Hình 2.3. Cách thức hoạt động của React Native .....................................................22
Hình 2.4. Cách thức hoạt động của Javascript VM ..................................................25
Hình 2.5. Quá trình tạo lớp ẩn của Javascript VM....................................................26
Hình 2.6. Kiến trúc ứng dụng React Native ..............................................................29
Hình 2.7. Mỗi trƣờng cầu nối giữa JavaScript VM và ngôn ngữ gốc .......................29
Hình 2.8. Quá trình thực thi mã nguồn React Native ...............................................30
Hình 2.9. Chi tiết quá trình hoạt động của mã nguồn RN thông qua cầu nối ...........31
Hình 2.10. Ví dụ ứng dụng “Hello world” bằng React Native .................................32
Hình 2.11. Quá trình biên dịch và tải mã nguồn Javascript ......................................33
Hình 2.12. Quá trình thực thi ứng dụng React Native ..............................................34
Hình 2.13. Quá trình tƣơng tác qua lại giữa JavaScript mà ngôn ngữ gốc ...............35
Hình 2.14. Quá trình thành phần giao diện gốc đƣợc tạo tƣơng ứng với JavaScript 36
Hình 2.15. Quá trình xử lý tƣơng tác ngƣời dùng .....................................................37
Hình 2.16. Quá trình giao diện thay đổi theo state ...................................................41
Hình 2.17. Vòng đời của một component trong React Native ..................................42
Hình 2.18. Các bƣớc thay đổi của component trong Reat Native.............................42
Hình 2.19. Định dạng giao diện trong React Native .................................................45
Hình 2.20. Quá trình thay đổi kích thƣớc của thành phần giao diện trong RN ........45
Hình 2.21. Cách thức bố cục trong React Native......................................................46
Hình 3.1. Biểu đồ User case tổng quát ......................................................................56
Hình 3.2. Biểu đồ hoạt động đăng ký .......................................................................57

vii



Hình 3.3. Biểu đồ hoạt động đăng nhập ....................................................................57
Hình 3.4. Biểu đồ hoạt động xem video ...................................................................58
Hình 3.5. Biểu đồ hoạt động đƣa vào danh sách yêu thích .......................................59
Hình 3.6. Biểu đồ hoạt động phát âm câu .................................................................59
Hình 3.7. Biểu đồ hoạt động phát âm từ ...................................................................60
Hình 3.8. Biểu đồ hoạt động tra từ ............................................................................60
Hình 3.9. Biểu đồ trình tự đăng ký............................................................................61
Hình 3.10. Biểu đồ trình tự phát âm câu ...................................................................61
Hình 3.11. Biểu đồ trình tự phát âm từ .....................................................................62
Hình 3.12. Biểu đồ trình tự tra từ ..............................................................................62
Hình 3.13. Màn hình đăng nhập ................................................................................63
Hình 3.14. Màn hình đăng ký....................................................................................63
Hình 3.15. Màn hình danh sách nội dung bài học.....................................................64
Hình 3.16. Màn hình menu nội dung ƣa thích ..........................................................64
Hình 3.18. Màn hình xem nội dung video của bài học .............................................65
Hình 3.19. Tra từ điển khi xem chi tiết................................................................. 66
Hình 3.20. Tra từ điển khi xem video.................................................................. 66

viii


MỞ ĐẦU
Mạng viễn thông xuất hiện tại Việt Nam từ đầu những năm 1990 và theo thời
gian số lƣợng các thuê bao cũng nhƣ các nhà cung cấp dịch vụ đi động tại Việt Nam
ngày càng tăng. Do nhu cầu trao đổi thông tin ngày càng tăng và nhu cầu sử dụng
sản phẩm công nghệ cao nhiều tính năng, cấu hình cao, chất lƣợng tốt, kiểu dáng
mẫu mà đẹp, phong phú nên nhà cung cấp phải luôn luôn cải thiện, nâng cao những
sản phẩm của mình. Do đó việc xây dựng các ứng dụng cho điện thoại di động đang
là một ngành công nghiệp mới đầy tiềm năng và hứa hẹn nhiều sự phát triển vƣợt

bậc của ngành khoa học kĩ thuật.
Trong những năm gần đây tại các triển lãm điện tử tiêu dùng CES, các thiết
bị thông minh nhƣ tivi thông minh, điện thoại thông minh, tủ lạnh thông minh... liên
tục đƣợc các hãng công nghệ lớn giới thiệu. Các hãng công nghệ không chỉ tập
trung vào các thiết bị độc lập nữa mà chuyển sang xu hƣớng kết nối các thiết bị
thông minh với nhau thông qua Internet hay còn gọi là xu hƣớng kết nối vạn vật
(Internet of Things - gọi tắt là IOT). Chúng có khả năng trao đổi và truyền tải thông
tin, dữ liệu một cách hiệu quả, tiện lợi thông qua mạng Internet mà không cần sự
tƣơng tác trực tiếp giữa ngƣời với thiết bị hay giữa ngƣời với ngƣời. Theo hãng
Gartner thì trong năm 2016 có tới 6,4 triệu thiết bị có thể kết nối, tăng 30% so với
năm 2015, đến năm 2017 đƣợc dự đoán là có tới 8.4 triệu thiết bị có thể kết nối, và
đến năm 2020 dự đoán có thể có tới 21 triệu thiết bị có thể kết nối vào mạng
Internet [12],[13]. Do đó, IOT là xu hƣớng tất yếu và đăng đƣợc các doanh nghiệp
trong lĩnh vực công nghệ quan tâm, đầu tƣ và nghiên cứu.
Cùng với xu hƣớng IOT, điện thoại thông minh hay còn gọi là smartphone
đang trở nên rất phổ biến ở thời điểm hiện tại, smartphone là một loại trong IoT
nhƣng nó có vai trò lớn trong tƣơng tác, tính toán và xử lý trong một hệ tích hợp
IoT. Các hệ điều hành đƣợc sử dụng trên các thiết bị này cũng không ngừng phát
triển và hoàn thiện. Đã có rất nhiều hệ điều hành đƣợc nghiên cứu và phát triển nhƣ
Android, iOS, WindowsPhone, Blackberry, Tizen... Tuy nhiên theo hãng nghiên
cứu thị trƣờng Gartner cho biết, hệ điều hành di động Android của Google và iOS
1


của Apple đã chiếm đến 99,6% thị phần smartphone bán ra trong ba tháng cuối năm
2016 [13]. Và sang đến năm 2017 chủ yếu chỉ còn lại cuộc đua giữa hai hệ điều
hành Android và iOS. Điều này đã khẳng định vị trí của Android và iOS trên thị
trƣờng.
Ứng dụng cho điện thoại thông minh hiện nay rất đa dạng và phong phú trên
các hệ điều hành di động cũng phát triển mạnh mẽ và đang thay đổi từng ngày. Tuy

nhiên, để phát triển và bảo trì một ứng dụng trên mỗi hệ điều hành các lập trình viên
cần phải tìm hiểu cách thức hoạt động của hệ điều hành, công cụ phát triển đƣợc
phát hành kèm theo hệ điều hành và các hệ sinh thái liên quan đến hệ điều hành đó.
Chẳng hạn, để phát triển ứng dụng cho Android lập trình viên sẽ phải tìm hiểu công
cụ phát triển cho Android, ngôn ngữ lập trình Java [7], để phát triển ứng dụng cho
công cụ phát triển cho iOS, ngôn ngữ lập trình Object-C hoặc Swift [8],... Để khắc
phục hạn chế này một số các phƣơng pháp phát triển ứng dụng đa nền tảng đã ra đời
nhƣ:
+ Phƣơng pháp hybrid sử dụng Html5 với một số công cụ nhƣ Ionic,
PhoneGap, Appcelerator…. Tuy nhiên phƣơng pháp này gặp phải vấn đề hiệu năng
kém đối với các ứng dụng lớn, yêu cầu xử lý phức tạp.
+ Phƣơng pháp phát triển ứng dụng đa nền tảng Xamarin, đƣợc phát hành
bởi Microsoft. Tuy nhiên với phƣơng pháp này là lập trình viên không có toàn
quyền điều khiển mã nguồn đƣợc cung cấp kèm theo hệ điều hành, cũng nhƣ phải
mất phí sử dụng cho một số các công cụ nhất định.
+ Phƣơng pháp phát triển ứng dụng đa nền tảng React Native, đƣợc phát
hành bởi Facebook. Phƣơng pháp này đang đƣợc các lập trình viên sử dụng khá
nhiều và ngày càng tăng lên đặc biệt là các dự án khởi nghiệp, do công cụ phát triển
này là mã nguồn mở, hiệu năng gần giống nhƣ ứng dụng viết bằng ngôn ngữ của hệ
điều hành, thời gian phát triển nhanh cũng nhƣ khả năng linh hoạt trong việc sử
dụng công cụ cũng nhƣ tƣơng thích với mã nguồn viết bằng các công cụ, ngôn ngữ
kèm theo hệ điều hành.

2


Do vậy, luận văn sẽ nghiên cứu một công nghệ phát triển ứng dụng di động
đa nền tảng mới React native và ứng dụng công nghệ này phát triển ứng dụng hỗ trợ
học Tiếng Anh. Công nghệ này hứa hẹn sẽ mang lại một phƣơng pháp phát triển
ứng dụng đa nền tảng mới bằng một ngôn ngữ và công cụ phát triển duy nhất giúp

làm giảm thời gian, chi phí phát triển và bảo trì.
Ngoài phần mở đầu và kết luận, luận văn đƣợc chia làm 3 chƣơng, nội dung
cụ thể của các chƣơng nhƣ sau:
Chƣơng I: Tổng quan về di động và lập trình di động
Chƣơng II: Lập trình ứng dụng di động với React Native
Chƣơng III: Phát triển ứng dụng di động hỗ trợ học Tiếng Anh dựa trên công
nghệ React Native
Tuy đã rất cố gắng để hoàn thiện, tuy nhiên trong luận văn không thể tránh
khỏi còn nhiều thiếu sót, em rất mong nhận đƣợc ý kiến đóng góp quý báu của thầy
cô và đồng nghiệp.

3


CHƢƠNG 1.

TỔNG QUAN VỀ DI ĐỘNG VÀ LẬP TRÌNH
DI ĐỘNG

1.1.

Giới thiệu về điện thoại thông minh
Điện thoại di động ngày nay đang trở thành một vật dụng không thể thiếu

trong cuộc sống hằng ngày. Mục đích ban đầu của điện thoại di động là tạo sự thuận
lợi trong liên lạc, xóa bỏ sự hạn chế về khoảng cách địa lý. Tuy nhiên không chỉ
dừng lại ở đó, điện thoại di động ngày nay đã phát triển mạnh mẽ về chức năng.
Không chỉ đơn thuần nghe, gọi hay nhắn tin SMS nhƣ lúc đầu, mà nó còn là phƣơng
tiện giải trí đa chức năng, là công cụ hỗ trợ cho nhu cầu công việc của con ngƣời.
Khái niệm smartphone (điện thoại thông minh) đang ngày càng đƣợc nhiều

ngƣời biết đến. Điện thoại thông minh là khái niệm để chỉ loại điện thoại tích hợp
một nền tảng hệ điều hành di động với nhiều tính năng hỗ trợ tiên tiến về điện toán
và kết nối dựa trên nền tảng cơ bản của điện thoại di động thông thƣờng.
Ban đầu điện thoại thông minh bao gồm các tính năng của điện thoại di động
thông thƣờng kết hợp với các thiết bị phổ biến khác nhƣ PDA, thiết bị điện tử cầm
tay, máy ảnh kỹ thuật số, hệ thống định vị toàn cầu GPS. Điện thoại thông minh
ngày nay bao gồm tất cả chức năng của laptop nhƣ duyệt web, Wi-Fi, các ứng dụng
của bên thứ 3 trên di động và các phụ kiện đi kèm cho máy.
Những điện thoại thông minh phổ biến nhất hiện nay dựa trên nền tảng của
hệ điều hành Windows Phone của Microsoft, Android của Google và iOS của
Apple. Các ngành công nghiệp tin rằng điện thoại thông minh đa số có một màn
hình độ phân giải cao hơn so với điện thoại truyền thống và điện thoại thông minh
nhƣ một máy tính di động, vì nó có một hệ điều hành riêng biệt vì có thể hiển thị
phù hợp các trang website bình thƣờng và ngƣời dùng có thể thay đổi một giao diện
và sở hữu khả năng mở ứng dụng tiện hơn và dễ dàng cài đặt lẫn gõ bỏ ứng dụng;
điện thoại thông minh có màn hình cảm ứng độ phân giải cao, và sẵn sàng để gọi
bàn phím ảo và viết chữ tay. Có thể tiến hành đa tác vụ thao tác, và có một đa
phƣơng tiện mạnh mẽ, Email, Internet và hoàn toàn có thể thay đổi các thiết bị
4


truyền thống nhƣ MP3 và PDA điện thoại thông minh có thể thay thế xử lý các vấn
đề máy tính văn phòng và các vấn đề khác, nó có thể giao tiếp với mạng duy trì một
thời gian kết nối liền mạch với thời gian, đồng thời có thể vô hiệu hóa mạng bất cứ
lúc nào, và đồng bộ hóa dữ liệu với máy tính, máy tính xách tay và các thiết bị khác.

1.2.

Kiến trúc của các nền tảng hệ điều hành


1.2.1.

Hệ điều hành Android

1.2.1.1. Giới thiệu về hệ điều hành Android
Android là một hệ điều hành 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 [7].
Ban đầu, Android đƣợc phát triển bởi Công ty Android, với sự hỗ trợ tài
chính từ Google và sau này đƣợc chính Google mua lại vào 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.
Năm 2008, hệ điều hành Android đã chính thức mở toà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 hoàn toà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.
Android có mã nguồn mở và Google phát hành mã nguồn 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ác lập trình viên nhiệt huyết
đƣợc điều chỉnh và phân phối Android một cách tự do. Ngoài ra, Android còn có
một cộng đồng lập trình viên đông đảo chuyên viết các ứng dụng để mở rộng chức
năng của thiết bị, bằng một loại ngôn ngữ lập trình Java có sửa đổi. Cửa hàng ứng
dụng chính của Android, Google Play có hơn 82 triệu ứng dụng tải xuống trong
năm 2016 và hơn 2,7 triệu ứng dụng đƣợc công khai trong năm 2017.

5


Android liên tụ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. Hiện nay, phiên bản mới nhất của Android là 8.0 đang đƣợc các hãng điện
thoại tích cực cập nhật [7].

1.2.1.2. 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, tầng
Libraries & Android runtime, tầng Application Framework và trên cùng là tầng
Application [2, tr.12].

Hình 1.1. Kiến trúc hệ điều hành Android

6


 Tầng hạt nhân (Linux Kernel layer)
Hệ điều hành Android đƣợc phát triển dựa trên hạt nhân Linux. Mọi hoạt
động của điện thoại muốn thi hành thì đều đƣợc thực hiện ở 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ầu 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.

7


 Tầng Library
Phần này có nhiều thƣ viện đƣợc viết bằng C/C++ để các phần mềm có thể
sử dụng, các thƣ viện đó đƣợc tập hợp thành một số nhóm nhƣ:
-

Thƣ viện hệ thống (System C library): thƣ viện dựa trên chuẩn C, đƣợc

sử dụng chỉ bởi hệ điều hành.
-

Thƣ viện Media (Media Libraries): Có nhiều code để hỗ trợ việc phát và

ghi các loại định dạng âm thanh, hình ảnh, video thông dụng.
-

Thƣ viện web (LibWebCore): Đây là thành phần để xem nội dung trên


web, đƣợc sử dụng để xây dựng phần mềm duyệt web (Android Browse) cũng nhƣ
để các ứng dụng khác có thể nhúng vào. Nó cực kỳ mạnh, hỗ trợ đƣợc nhiều công
nghệ mạnh mẽ nhƣ HTML5, JavaScript, CSS, DOM, AJAX..
-

Thƣ viện SQLite: Hệ cơ sở dữ liệu để các ứng dụng có thể sử dụng.

-



 Tầng Android Runtime
Phần này chứa các thƣ viện mà một chƣơng trình viết bằng ngôn ngữ Java có
thể hoạt động. 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.
 Tầng Application Framework
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

8



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.
-

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)
 Tầng Application:
Đâ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

9


(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 khoá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ụ.

1.2.2.

Hệ điều hành iOS

1.2.2.1. Giới thiệu về hệ điều hành iOS
iOS (viết tắt của iPhone Operating System) là một hệ điều hành trên thiết bị
di động đƣợc xây dựng và phát triển bởi tập đoàn Apple. Hệ điều hành này đƣợc sử
dụng trên nhiều thiết bị di động, bao gồm iPhone, iPad và iPod Touch. Đây là hệ
điều hành trên thiết bị di động phổ biết thứ hai, sau hệ điều hành Android [1],[8].
Bắt đầu đƣợc phát triển từ năm 2007, sử dụng cho iPhone, iOS dần đƣợc mở
rộng và hỗ trợ các thiết bị khác của Apple nhƣ iPod Touch (từ tháng 9 năm 2007)
và iPad (từ tháng 1 năm 2010). Đến tháng 1 năm 2017, cửa hàng ứng dụng của
Apple đã có hơn 2.2 tỷ ứng dụng iOS, 1 triệu ứng dụng trong số đó chỉ dành riêng
cho iPad. Số lƣợng lƣợt tải xuống của những ứng dụng này đã lên đến hơn 130 tỷ
lần.

Giao diện ngƣời dùng của iOS dựa trên cơ sở thao tác bằng tay, sử dụng cảm
ứng đa điểm. Các thành phần điều khiển trên giao diện bao gồm thanh trƣợt, công
tắc và các nút. Ngƣời dùng tƣơng tác với hệ điều hành thông qua các cử chỉ bao
gồm vuốt, gõ, chụm, và lật ngƣợc, tất cả đều đƣợc định nghĩa trong ngữ cảnh của hệ
điều hành. Máy đo gia tốc đƣợc sử dụng trong một số ứng dụng để nhận biết đƣợc
các chuyển động rung, lắc của thiết bị, hoặc xoay thiết bị theo nhiều chiều. Apple
10


đƣợc đánh giá cao trong việc kết hợp các chức năng truy cập trong suốt vào iOS,
cho phép ngƣời dùng khiếm thị hoặc gặp khó khăn về thính giác vẫn có thể sử dụng
đƣợc sản phẩm của mình.
Hàng năm, Apple đều cho ra những phiên bản mới cập nhật của iOS. Hai
phiên bản mới nhất vừa đƣợc cập nhật là iOS 10.3.3, phát hành vào ngày
25/07/2017, sử dụng trên các phiên bản iPhone từ iPhone 5 trở đi, iPad Air, iPad
Air 2, iPad Pro… Phiên bản iOS 11 vừa mới đƣợc ra mắt chính thức vào ngày
19/9/2017 vừa qua.

1.2.2.2.

Kiến trúc hệ điều hành iOS

Kiến trúc của iOS là một kiến trúc theo tầng. Tầng cao nhất hoạt động nhƣ
phần trung gian kết nối giữa phần cứng bên dƣới với các thao tác thực hiện trên ứng
dụng. Ứng dụng không giao tiếp trực tiếp với phần cứng [8].
Ứng dụng “nói chuyện” với phần cứng thông qua một bộ giao diện hệ thống
đã đƣợc định nghĩa. Các giao tiếp này giúp đơn giản hóa việc xây dựng các ứng
dụng hoạt động trên các thiết bị có phần cứng khác nhau.

Hình 1.2. Kiến trúc hệ điều hành iOS


11


Tầng thấp hơn cung cấp những dịch vụ cơ bản phục vụ hoạt động của các
ứng dụng. Tầng cao hơn cung cấp các dịch vụ và giao diện về đồ họa máy tính.
Apple cung cấp hầu hết các giao diện hệ thống dƣới dạng gói gọi là
“Framework”. Một “Framework” là một thƣ mục chƣa các thƣ viện chia sẻ động
gồm các tệp .a, các tài nguyên liên quan nhƣ tệp tiêu đề, hình ảnh và các ứng dụng
trợ giúp cần thiết để hỗ trợ thƣ viện. Mỗi tầng đều có một bộ “Framework” để lập
trình viên sử dụng và xây dựng ứng dụng [8].
Tầng Core OS:
Tầng Core OS chứa những tính tăng cấp thấp. Hầu hết các công nghệ đều
đƣợc xây dựng dựa trên các tính năng này, bao gồm:






Core Bluetooth Framework.
Accelerate Framework.
External Accessory Framework.
Security Services Famework.
Local Authentication Framework.
64-Bit support của iOS7 hỗ trợ xây dựng các ứng dụng 64 bit và giúp ứng

dụng chạy nhanh hơn.
Tầng Core Services
Một số “Framework” quan trọng đƣợc lƣu tại tầng Core services, bao gồm:

● Address book Framework – Sổ địa chỉ: Cung cấp quyền truy cập cơ sở dữ
liệu danh bạ của ngƣời dùng cho các ứng dụng khác.
● Cloud Kit Framework – Cung cấp phƣơng thức di chuyển dữ liệu giữa ứng
dụng và iCloud.
● Core data Framework – Công nghệ cho phép quản lý mô hình dữ liệu của
ứng dụng Kiểm soát mô hình.
● Core Foundation Framework – Giao diện cho phép quản lý dữ liệu cơ bản
và các tính năng dịch vụ cho ứng dụng trên iOS.
● Core Location Framework – Cung cấp thông tin về vị trí và tiêu đề cho các
ứng dụng.

12


● Core Motion Framework – Truy cập tất cả các dữ liệu về trạng thái có trên
thiết bị. Sử dụng tính năng này, các thông tin của máy đo gia tốc có thể đƣợc
truy cập.
● Foundation Framework – Chƣa nhiều tính năng phát triển trên nền tảng
hƣớng đối tƣợng C.
● Healthkit Framework – Tính năng mới cung cấp các thông tin liên quan
đến sức khỏe cho ngƣời dùng
● Homekit Framework – Tính năng mới cho phép giao tiếp và điều khiển các
thiết bị trong nhà của ngƣời dùng.
● Social Framework – Giao diện đơn giản cho phép truy cập các tài khoản
mạng xã hội của ngƣời dùng.
● StoreKit Framework – Hỗ trợ mua các nội dụng và dịch vụ bên trong ứng
dụng iOS, hay còn đƣợc biết đến với tên gọi “In-App Purchase”.
Tầng Media: Các tính năng đồ họa, âm thanh, phim ảnh hoạt động đƣợc dựa
trên tầng Media.
Graphics Framework:

● UIKit Graphics – Mô tả hỗ trợ cấp cao, cho phép thiết kế hình ảnh, đồ họa,
tạo phim từ nội dung mà ngƣời sử dụng xem.
● Core Graphics Framework – Là công cụ vẽ đầu tiên cho các ứng dụng
iOS, hỗ trợ vẽ vector 2D và và vẽ hình ảnh.
● Core Animation – Là công cụ tối ƣu hóa các đoạn phim trong các ứng dụng
của ngƣời sử dụng.
● Core Images – Hỗ trợ kiểm soát video và các hình ảnh tĩnh mà không phá
hủy đối tƣợng.
● OpenGl ES and GLKit – quản lý việc xây dựng hình ảnh 2D và 3D sử dụng
giao diện tăng tốc phần cứng
● Metal – Cho phép các tính năng đồ họa máy tính hoạt động với hiệu suất cực
cao..
Audio Framework:

13


● Media Player Framework – Hỗ trợ ngƣời sử dụng truy cập thƣ viện iTunes
một cách dễ dàng
● AV Foundation – Giao diện giúp thu/ phát âm thanh hoặc đoạn phim
● OpenAL – Công nghệ tiêu chuẩn để phát âm thanh
Video Framework
● AV Kit – Hỗ trợ trình chiếu video một các đơn giản.
● AV Foundation – Giao diện giúp thu/ phát âm thanh hoặc đoạn phim.
● Core Media – Giao diện mô tả kiểu dữ liệu cho các đối tƣợng âm thanh,
hình ảnh, đoạn phim.
Tầng Cocoa Touch
● EventKit Framework – Hỗ trợ hiển thị lịch và thông báo sự kiện trên lịch
● GameKit Framework – Hỗ trợ ngƣời dùng chia sẻ các thông tin về trò chơi
trên di động của họ lên mạng

● iAd Framework – Cho phép hiển thị quảng cáo dạng bảng thông báo
(banner).
● MapKit Framework – cung cấp tính năng cuộn bên trong ứng dụng
● PushKitFramework – Hỗ trợ đăng ký các ứng dụng VoIP.
● Twitter Framework – Hỗ trợ giao diện ngƣời dùng để đăng bài trên Twitter
và hỗ trợ tạo URL để truy cập các dịch vụ của Twitter.
● UIKit Framework – cung cấp cơ sở hạ tầng cơ bản để chạy ứng dụng đồ họ,
sự kiện. Một số tính năng quan trọng trong UIKit Framework nhƣ
– Hỗ trợ đa nhiệm
– Quản lý ứng dụng cơ bản.
– Quản lý giao diện ngƣời dùng
– Hỗ trợ nhận biết thao tác chạm và di chuyển thiết bị.
– Hỗ trợ các thao tác cắt, sao chép, dán và nhiều thao tác khác

14


1.2.3.

Các hệ điều hành khác

Ngoài hai hệ điều hanh di động phổ biết là Android và iOS còn một số hệ
điều hành khác cũng đƣợc các hãng phát triển nhƣ: BlackBerry OS 10, Sailfish OS,
Firefox OS, Ubuntu Touch, Tizen, Windows Phone. Tuy nhiên hiện nay hầu hết các
hệ điều hành này đều đã bị khai tử do không đƣợc hỗ trợ từ đông đảo lập trình viên
và các nhà phát hành, ngoại trừ hệ điều hành Tizen đƣợc hãng Samsung hậu thuẫn
và đƣợc cài sẵn trên một số thiết bị của hãng.

1.3.


Các phƣơng pháp lập trình ứng dụng

1.3.1.

Phương pháp lập trình ứng dụng Native

Ứng dụng Native là những ứng dụng đƣợc viết riêng cho một loại nền tảng
nhƣ iOS, Android, Windows Phone bằng các ngôn ngữ tƣơng ứng của mỗi nền tảng
đó. Ví dụ Java trên Android, Object C trên iOS, C# trên Windowsphone. Mỗi ứng
dụng Native chỉ chạy đƣợc trên một nền tảng và không thể mang sang các nền tảng
khác [7],[8],[15].
 Điểm mạnh:
– Về mặt hiệu năng thì ứng dụng Native chạy nhanh hơn, ổn định hơn các ứng
dụng viết bằng các phƣơng pháp khác trong hầu hết trƣờng hợp.
– Về tính năng native app có khả năng truy cập các phần cứng (nhƣ camera,
GPS, thiết bị thu âm… ) và có thể truy cập đến các quyền ở thiết bị nhƣ: sao
chép, tạo, ghi, đọc tập tin (trên bộ nhớ của mobile), các thông tin danh bạ,
thông tin cá nhân, thực hiện cuộc gọi, nhắn tin… Nói cách khác, ứng dụng
Native có thể khai thác đƣợc sức mạnh phần cứng nhiều nhất của nền tảng.
– Về khả năng tƣơng thích với các phiên bản hệ điều hành thì các ứng dụng
Native có khả năng tƣơng thích và ít lỗi hơn khi hoạt động ở các phiên bản
khác nhau của hệ điều hành. Khi phát hành các công cụ phát triển kèm theo
một phiên bản hệ điều hành thì nhà phát hành đã tính toán trƣớc việc tƣơng
thích ngƣợc với các phiên bản trƣớc của công cụ phát triển.

15


 Điểm yếu:


– Không thể viết một ứng dụng chạy trên nhiều nền tảng: một ứng dụng Native
chỉ có thể chạy trên một HĐH nhất định.
– Với mỗi HĐH thì ngƣời lập trình phải viết mã nguồn riêng cho nó, dẫn đến
không nhất quán giữa các phiên bản ứng dụng, chi phí phát triển cao và đòi
hỏi khả năng thành thạo nhiều ngôn ngữ ở lập trình viên. Đôi khi đòi hỏi lập
trình viên phải sử dụng những công cụ độc quyền và chỉ đƣợc làm việc trên
một môi trƣờng duy nhất nhƣ: dùng xcode trên Mac OS (nếu chúng ta muốn
phát triển ứng dụng cho iOS).
– Việc bảo trì hay nâng cấp sẽ làm mất nhiều thời gian. Do phải sửa chữa từng
ứng dụng trên từng HĐH, thủ tục đƣa lên chợ ứng dụng và chờ đợi đƣợc xét
duyệt (đôi khi bị từ chối vì vi phạm một số điều lệ của chợ ứng dụng), nên
bản cập nhật không đến tay ngƣời dùng ngay lập tức, hơn nữa họ phải tự cập
nhật khi vào chợ ứng dụng.
– Tính đa dạng phiên bản của HĐH làm cản trở việc phổ dụng các ứng dụng
Native. Các thiết bị chạy phiên bản HĐH cũ hơn sẽ không cài đặt đƣợc

1.3.2.

Phương pháp lập trình ứng dụng lai

Ứng dụng lai (hybrid) giống bất kỳ những app khác trên điện thoại di động.
Chúng có thể cài đặt đƣợc trên điện thoại của chúng ta. Chúng ta có thể tìm chúng
trên các chợ ứng dụng. Với chúng, chúng ta có thể chơi game, kết nối bạn bè qua các
mạng xã hội, chụp ảnh, theo dõi sức khoẻ, và nhiều hơn nữa.
Giống nhƣ những trang web khác trên internet, ứng dụng lai cũng đƣợc xây
dựng bằng sự kết hợp của các công nghệ web nhƣ HTML, CSS và Javascript [15].
Chỉ khác là các ứng dụng lai đƣợc lƣu trữ bên trong một ứng dụng Native sử dụng
WebView. (Chúng ta có thể tƣởng tƣợng rằng một WebView nhƣ là một cửa sổ trình
duyệt đƣợc cấu hình chạy toàn màn hình bên trong một ứng dụng) Chính nhờ điều
này, nên chúng có thể truy cập đƣợc vào các chức năng dựa trên phần cứng của điện

thoại nhƣ là cảm biến gia tốc, camera, contacts, và nhiều hơn nữa. Đây là những khả
16


×