CHƯƠNG 1: GIỚI THIỆU VỀ LẬP TRÌNH TRÊN THIẾTBỊ DI ĐỘNG1.1 Khái quát về lập trình trên thiết bị di động Con người thu nhận thông tin qua các giác quan, trong đó thịgiác đóng vai trò quan
Trang 1TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG
LÊ MINH NGHĨA Giảng viên
hướng dẫn
: CÙ VIỆT DŨNG
Ngành : CÔNG NGHỆ THÔNG
TIN Chuyên ngành : CÔNG NGHỆ PHẦN
MỀM
Khóa : 2022-2025
Trang 3MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU VỀ LẬP TRÌNH TRÊN THIẾT BỊ DI ĐỘNG 1
1.1 Khái quát về lập trình trên thiết bị di động 1
1.2 Các đặc điểm của lập trình trên thiết bị di động 3
1.3 Vai trò của lập trình trên thiết bị di động đối với đời sống và kỹ thuật 3
1.4 Xu hướng công nghệ tương lai của lập trình trên thiết bị di động 4
CHƯƠNG 2: GIỚI THIỆU VỀ REACT-NATIVE FRAMEWORK 6
2.1 React – native là gì? 6
2.2 Cài đặt môi trường cho React – native trên máy tính sử dụng hề điều hành Windows 6
2.3 Nguyên lý hoạt động của React – native Framework 8
2.4 Ưu điểm và nhược điểm của React – native Framework 9
CHƯƠNG 3: GIỚI THIỆU VỀ ỨNG DỤNG XEM DỰ BÁO THỜI TIẾT 11 3.1 Giới thiệu về đề tài và lý do chọn đề tài 11
3.2 Các ứng dụng tương tự 12
3.3 Giao diện của ứng dụng 15
KẾT LUẬN 18
DANH MỤC HÌNH ẢNH V BẢNG BI Hình 3.1: Giao diện của ứng dụng dự báo thời tiết ASUS Weather 13
Hình 3.2: Giao diện của ứng dụng dự báo thời tiết Accu Weather 14
Hình 3.3: Giao diện màn hình chính của ứng dụng 15
Hình 3.4: Giao diện màn hình tìm kiếm vị trí cần xem thời tiết.16 Hình 3.5: Giao diện trang tin tức 17 Y
Trang 4Bảng 1: Bảng liệt kê các hệ điều hành cùng với ngôn ngữ lậptrình và IDE phổ biến nhất của nó 3
Trang 5LỜI MỞ ĐẦU
Trong lời mở đầu của báo cáo “Xây dựng ứng dụng xem dựbáo thời tiết”, nhóm em muốn gửi những lời cám ơn và biết ơnchân thành nhất của mình tới tất cả những người đã hỗ trợ, giúp
đỡ em về kiến thức và tinh thần trong quá trình thực hiện bàilàm
Nhóm em xin chân thành gửi lời cảm ơn tới các thầy, cô giáotrong Trường Đại Học Điện Lực nói chung và các thầy cô giáotrong Khoa Công nghệ thông tin nói riêng đã tận tình giảng dạy,truyền đạt cho nhóm em những kiến thức cũng như kinh nghiệmquý báu trong suốt quá trình học tập
Đặc biệt, nhóm em xin gửi lời cảm ơn đến Giáo viên hướngdẫn Cù Việt Dũng, giảng viên Khoa Công nghệ thông tin- TrườngĐại Học Điện Lực Thầy đã tận tình theo sát giúp đỡ, trực tiếpchỉ bảo, hướng dẫn trong suốt quá trình nghiên cứu và học tậpcủa nhóm em Trong thời gian học tập với thầy,nhóm em khôngnhững tiếp thu thêm nhiều kiến thức bổ ích mà còn học tậpđược tinh thần làm việc, thái độ nghiên cứu khoa học nghiêmtúc, hiệu quả Đây là những điều rất cần thiết cho nhóm emtrong quá trình học tập và công tác sau này
Do thời gian thực hiện có hạn kiến thức còn nhiều hạn chếnên bài làm của nhóm em chắc chắn không tránh khỏi nhữngthiếu sót nhất định Nhóm em rất mong nhận được ý kiến đónggóp của thầy, cô giáo và các bạn để nhóm em có thêm kinhnghiệm và tiếp tục hoàn thiện đồ án của mình
Chúng em xin chân thành cảm ơn!
Trang 6CHƯƠNG 1: GIỚI THIỆU VỀ LẬP TRÌNH TRÊN THIẾT
BỊ DI ĐỘNG1.1 Khái quát về lập trình trên thiết bị di động
Con người thu nhận thông tin qua các giác quan, trong đó thịgiác đóng vai trò quan trọng nhất Những năm trở lại đây với sựphát triển của phần cứng máy tính, xử lý ảnhvà đồ hoạ đó pháttriển một cách mạnh mẽ và có nhiều ứng dụng trong cuộc sống
Xử lý ảnh và đồ hoạ đóng một vai trò quan trọng trong tươngtác người – máy
Tùy theo tính chất và yêu cầu, mức độ đáp ứng của hệ thống
có thể phải là rất nhanh(ví dụ: hệ thống phanh trong xe hơihoặc điều khiển thiết bị trong nhà máy…), hoặc có thể chấpnhận một mức độ chậm trễ tương đối (như điện thoại di động,máy lạnh, ti-vi…) và nhà phát triền phần mềm sẽ phải tính toán
để điều chỉnh chương trình sao cho phù hợp với thiết bị đầu cuối(tính tương thích) Đây là một trong những đặc tính quan trọngcủa lập trình nhúng
Ngày nay, với sự phát triển mạnh mẽ của các hãng điện thoại
di động, smart phone đã trở nên phổ biến hơn hết, chiếm thịphần rất lớn trên thị trường các thiết bị liên lạc cầm tay Kéotheo đó, ngành lập trình trên thiết bị di động cũng ra đời vàphát triển song song trong một vài năm gần đây
Lập trình trên thiết bị di động, hay nói ngắn gọn là lập trìnhMobile là ngành lậptrình ứng dụng dành riêng cho các thiết bị diđộng
Người lập trình ứng dụng cho thiết bị di động truyền thốngluôn luôn phải nhớ trong đầu nguyên tắc "tiết kiệm tối đa tàinguyên" của thiết bị, dùng mọi cách để tối ưu hóa độ phức tạptính toán cũng như lượng bộ nhớ cần sử dụng
Tuy nhiên, cùng với sự phát triển nhanh chóng của phầncứng, các thiết bị di động hiện đại thường có cấu hình rất tốt,với CPU xử lý mạnh mẽ, bộ nhớ (RAM) lớn, khiến việc lập trình
1
Trang 7Recommandé pour toi
Analysis of the two signals
Include - aaaa
Resumen Cap 59 Guyton Luis Enrique Silva Díaz
Fisiología Humana y Prácticas 95% (19)
Trang 8cho thiết bị di dộng trở nên dễ dàng hơn bao giờ hết Các bộ kitphát triển của các hãng sản xuất hệ điều hành di động hiện naycũng thường làm rõ hầu hết các tác vụ liên quan đến quản lý bộnhớ, quản lý tiến trình Lập trình viên có thể ít quan tâm hơnđến việc tối ưu hóa sử dụng tài nguyên và tập trung vào việc
"code",phát triển tính năng cho ứng dụng như khi lập trình chomáy tính cá nhân
Đặc trưng di động của các thiết bị này cũng kéo theo nhữngđặc trưng của lập trình di động mà nhà phát triển cần phải quantâm như:
Tính "di động" của các thiệt bị khiến kết nối mạng trở nênrất bất ổn định và khó kiểm soát Các ứng dụng phụ thuộcnhiều vào kết nối Internet cần chú ý điểm này
Lưu lượng Internet trền thiết bị di động thường có chi phícao hơn so với Internet cố định Điều này cũng cần lưu ýkhi phát triển các ứng dụng sử dụng nhiều tài nguyênInternet
So với máy tính cá nhân, các thiết bị di động hiện đại đượctrang bị thêm rất nhiều tính năng giúp việc tương tác vớingười dùng trở nên thuận tiện (màn hình cảm ứng đađiểm, tương tác giọng nói, cử chỉ ), các loại kết nối đadạng(NFC, GPS, 3G, 4G, bluetooth, IR ), các cảm biếnphong phú giúp trải nghiệm rất đa dạng (cảm biến ánhsáng, cảm biến tiệm cận, la bàn, cám biến chuyển động,gia tốc kế ) Người lập trình, tùy thuộc vào ứng dụng cụthể, cóthể sử dụng đến các tính năng đặc biệt này để đemđến cho người dùng trải nghiệm tốt nhất trên thiết bị diđộng của mình
Ngoài ra các hãng phát triển hệ điều hành di động đều làm ra
bộ công cụ phát triển (SDK) và môi trường phát triển tích hợp(IDE) rất thuận tiện cho việc viết mã nguồn, biên dịch, gỡ rối,kiểm thử cũng như xuất bản phần mềm
2
Trang 9Xét theo thị phần trên thị trường, ba hệ điều hành phổ biếnnhất cho thiết bị di động hiện nay là Google's Android, Apple'siOS và Microsoft's Windows Phone Mỗi ứng dụng thành côngthường được phát triển cho cả 3 hệ nền này Mỗi hệ nền đều cómột chợ ứng dụng chính hãng (Google có Google Play Store,Apple có Apple AppStore, Microsoft có Windows Phone Store)với rất nhiều khách hàng tiềm năng, giúp người phát triển cóthể phân phối ứng dụng miễn phí hoặc có phí với chi phí nhấtđịnh.
3
Trang 10Hệ điều hành Ngôn ngữ lập trình IDE
Android Java Android Studio,
IBM's Eclipse với Google's ADT pluginsIOS Objective-C Apple' X-CodeWindows Phone C# Microsoft's Visual
Studio cho Windows phone
Bảng 1: Bảng liệt kê các hệ điều hành cùng với ngôn ngữ lập
trình và IDE phổ biến nhất của nó
Ngoài việc phát triển ứng dụng cho từng hệ điều hành như kểtrên, lập trình viên có thể lựa chọn các thư viện lập trình đa nềntảng để phát triển ứng dụng, phổ biến như: PhoneGap, Unity,Cocos, AndEngine, LibGDX… Lợi thế của việc sử dụng thư viện
đa nền tảng đó là tiết kiệm chi phí, tìm kiếm một lập trình viên
am hiểu về nhiều hệ điều hành đòi hỏi chi phí đắt đỏ và thờigian viết code ứng dụng trên từng hệ điều hành riêng biệt làkhá lớn
1.2 Các đặc điểm của lập trình trên thiết bị di động
Dễ tiếp cận, dễ tìm hiểu và dễ học
Giúp lập trình viên tạo ra ứng dụng cho người sử dụng
Giúp hiện thực hóa ý tưởng của lập trình viên
Giúp lập trình viên tạo ra ứng dụng là cầu nối giao tiếp vớimọi người trên thế giới qua số lượng người download và sửdụng ứng dụng của mình
1.3 Vai trò của lập trình trên thiết bị di động đối với đời sống và kỹ thuật
Bạn sẽ luôn được tiếp cận với những tri thức mới Bạn có thểthấy những kiến thức, những công nghệ của vài năm trước đây
đã hoàn toàn lỗi thời so với hiện tại.Làm việc trong ngành này,bạn sẽ luôn được nắm bắt những tri thức mới nhất, công nghệ
4
Trang 11hiện đại nhất của nhân loại Nếu bạn là người say mê khám phá
và ưa sự mới mẻ, bạn sẽ không bao giờ cảm thấy nhàm chán.Lập trình trên thiết bị di động là một lĩnh vực đầy năng động
và sáng tạo Phần lớn các nhân viên làm việc trong lĩnh vực Lậptrình trên thiết bị di động đều còn rất trẻ, đầy tài năng, hoài bão
và khát vọng Làm việc trong một cộng đồng như thế, bạn cóthể phát huy hết những tiềm năng và năng lực vốn có của bảnthân Đây sẽ là điều kiện thuận lợi giúp bạn thể hiện tối đa ócsáng tạo
Bạn có nhiều thách thức và cơ hội để khẳng định mình Lậptrình trên thiết bị di động là một trong những nghề có tính cạnhtranh gay gắt và tính đào thải khốc liệt Bởi đây là lĩnh vực pháttriển với tốc độ nhanh nhất và quy tụ nhiều nhất những trí tuệsiêu việt
trên thế giới
Tuy nhiên, nếu bạn là người tài năng và có hoài bão, bạn cóthể vượt qua tất cả Hầu hết những nhân vật nổi tiếng trongngành Công nghệ thông tin đều khởi đầu từ hai bàn tay trắng,nhưng ngày nay họ được cả thế giới ngưỡng mộ
1.4 Xu hướng công nghệ tương lai của lập trình trên thiết
bị di động
Di dộng đang và sẽ trở thành xu hướng của tương lai Có rấtnhiều cách cho các lập trình viên có thể phát triển các ứng dụngtrên di động, từ việc thiết kế các website tối ưu cho di động(web app), phát triển ứng dụng lai dựa trên HTML (hybrid app)cho đến viết các ứng dụng gốc cho nền tảng (native app) Mặc
dù có nhiều phương pháp để phát triển một ứng dụng cho diđộng nhưng chúng đều có một điểm chung đó là chạy trên mãgốc của một nền tảng nhất định
Do đó, khi một tổ chức muốn phát triển ứng dụng chạy trênmột nền tảng nào đó, họ sẽ thường tuyển dụng các ứng viên cókiến thức chuyên sâu về nền tảng đượcyêu cầu, hiểu rõ các lớp,
5
Trang 12các thành phần của nền tảng dù cho ứng dụng có được pháttriển theo kỹ thuật nào đi chăng nữa.
Nói về quy trình phát triển phần mềm, thuật ngữ này khônghẳn chỉ dành cho các quản lý dự án như nhiều người vẫn nghĩ.Một lập trình viên cũng cần phải hiểu được quá trình phát triểncủa một phần mềm như thế nào, theo dõi các tác vụ, tiến độ rasao, làm việc với các lập trình viên khác như thế nào thì hiệuquả
Kể cả khi một lập trình viên "chiến" một mình một dự án thìcũng cần hiểu rõ về vấn đề này Agile là một process giúp choviệc phát triển phần mềm được nhanh gọn và linh hoạt hơn do
đó, nếu như các developer nắm bắt được process này và ápdụng một cách hiệu quả, quá trình phát triển phần mềm sẽđược rút ngắn và tinh gọn đi rất nhiều
Quy trình phát triển phần mềm nhanh gọn (agile) có rấtnhiều phương pháp khác nhau như Scrum, Kanban, XP…và cáclập trình viên cần chọn cho dự án của mình một phương phápphù hợp dựa trên các tiêu chí đánh giá về dự án Các bộ công cụđược cung cấp để có thể phát triển theo hướng agile một cáchhiệu quả cũng rất nhiều, có thể kể đến như Pivotal hay Trello,giúp cho việc phát triển phần mềm được rõ ràng, nhanh gọnhơn so với các phương pháp truyền thống
6
Trang 13CHƯƠNG 2: GIỚI THIỆU VỀ REACT-NATIVE
FRAMEWORK2.1 React – native là gì?
React Native là framework giúp lập trình viên viết ứng dụngNative chỉ bằng Javascript Đúng vậy, chỉ đơn giản là Javascript,React Native phủ nhận định nghĩa về ứng dụng native ở đoạntrên
Sự ra đời của React Native giúp cho lập trình viên web có thểviết ứng dụng native để khắc phục các điểm yếu của ứng dụngweb và hybrid Và nhờ đó, chỉ với một kỹ sư thành thạojavascript, bạn có thể chiến đấu trên mọi mặt trận web,desktop, server và bây giờ là mobile Điều này không những cólợi cho lập trình viên web mà nó giúp cho các doanh nghiệpphát triển sản phẩm đầu cuối với ít nhân lực hơn
Khi xây dựng React Native, điều tuyệt vời là đã được tích hợptính năng Live Reload tương tự tính năng Hot ReplacementModule trong Webpack Tính năng Live Reload khác tính năngReload, trong khi Live Reload chỉ tải lại chức năng/tập tin nàothay đổi, thì Reload sẽ tải lại toàn bộ mã nguồn Ngoài ra, bạncũng dễ dàng debug javascript trong Chrome và Safari Đối vớinhững lỗi thuộc Native thì phải cần đến XCode cho iOS hoặcAndroid Studio cho Android
2.2 Cài đặt môi trường cho React – native trên máy tính
sử dụng hề điều hành Windows
Bước 1 Cài đặt Chocolate
Mở cmd với quyền quản trị (Run as Administrator)
Ta chạy lệnh sau:
@“%SystemRoot
%\System32\WindowsPowerShell\v1.0\powershell.exe”
-NoProfile -InputFormat None -ExecutionPolicy Bypass
System.Net.WebClient).DownloadString(’https://chocolatey.org/i
7
Trang 14nstall.ps1’))” && SET “PATH=%PATH%;%ALLUSERSPROFILE
%\chocolatey\bin”
Bước 2 Cài đặt Node.JS, Python2,JDK trên Windows
Mở terminal của windows (cmd) với quyền Administrator(Run as Administrator) và chạy dòng lệnh: choco install-y nodejs.install python2 jdk8
Bước 3 Cài đặt React – native CLI
Sau khi bạn cài Node ở bước trên, khởi động lại cmd và
sử dụng npm để thao tác cài đặt React Native CLI bằngdòng lệnh: npm install -g react-native-cli
Bước 4 Cài đặt Android Studio
Download Android Studio tại đây:https://developer.android.com/studio
Khi cài đặt, hãy Chọn một thiết lập “Tùy chỉnh” (Custom)khi được nhắc chọn loại cài đặt Đảm bảo các mục sauđây được chọn:
Android SDK
Android SDK Platform
Performance (Intel ® HAXM)
Android Virtual Device (phần này có thể thay thế bởiGenymotion: https://www.genymotion.com/)
Thực hiện các bước theo hướng dẫn trên màn hình càiđặt cho đến khi hoàn thành cài đặt Android StudioBước 5 Cài đặt Android SDK
Mặc định Android Studio sẽ cài đặt bản Android SDK mớinhất Tuy nhiên, việc xây dựng ứng dụng trên ReactNative yêu cầu sử dụng Android Sdk 9 (Pie)
Các phiên bản khác của Android Sdk có thể được chủđộng bổ sung cài thêm qua Android Sdk Manage trongAndroid Studio
Chọn cài đặt bản Android Sdk 9 (Pie), khi bật AndroidSdk Manage hãy chọn tối thiểu 2 gói sau:
Android SDK Platform 28
8
Trang 15 Intel x86 Atom_64 System Image or Google APIs Intelx86 Atom System Image
Tiếp theo, chọn tab “SDK Tools” và chọn hộp thoạibên cạnh “Show Package Details”
Tìm kiếm và mở rộng mục “Android SDK Build-Tools”,sau đó đảm bảo rằng 28.0.3 được chọn
Cuối cùng, nhấp vào “Apply” để tải xuống và cài đặtAndroid SDK và các công cụ build liên quan
9
Trang 16Bước 6 Cấu hình ANDROID_HOME enviroment variable
Các công cụ React Native yêu cầu một số biến môitrường được thiết lập để xây dựng các ứng dụng vớiNative Code
Cài đặt biến môi trường ANDROID_HOME trên windows
Thay thế giá trị trên bằng SDK của bạn, Sdk được cài đặttrong thư mục sau:
C:\Users\YOUR_USERNAME\AppData\Local\Android\Sdk
Bạn có thể tìm vị trí thực tế của SDK trong AndroidStudio bằng cách: click vào “Preferences” và chọn menuAppearance & Behavior → System Settings → AndroidSDK
Bước 7 Thêm platform – tool vào Path
Hãy vào phần biến môi trường của Windows như bướctrên, và chọn biến Path , sau đó click Edit và chọn New
để nhập thêm platform-tools vào biến Path
Đường dẫn của thư mục platform-tools có cấu trúc nhưsau:
C:\Users\YOUR_USERNAME\AppData\Local\Android\Sdk\platform-tools
2.3 Nguyên lý hoạt động của React – native Framework
Ứng dụng viết bằng React Native được chia làm 2 phần: phầnview(hiển thị) và phần xử lý
Phần hiển thị được biên dịch từ javascript sẽ map với nhữngcomponent của hệ thống ví dụ: điều hướng, tab, touch…Phầnview này được lấy cảm hứng từ Virtual DOM của React JS, mọi
xử lý view được thực hiện trên một cây DOM ảo, sau đó đượcReact Native render lại bằng native view
Phần xử lý vẫn được thực hiện trực tiếp bằng ngôn ngữjavascript: ví dụ “1+1=2”, biểu thức này được xử lý dưới bộcore thực thi Javascript, không phải thông dịch qua Java haySwift/Objective-C rồi mới làm phép tính
10