Nguyễn Ngọc Tú Lê Hoàng Thịnh 1 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO THỰC TẬP LẬP TRÌNH ỨNG DỤNG DI ĐỘNG ANDROID Công ty thực tập Công ty cổ phần TVT Group Người phụ trác[.]
Trang 11
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO THỰC TẬP
LẬP TRÌNH ỨNG DỤNG DI ĐỘNG ANDROID
TP Hồ Chí Minh, tháng 12 năm 2022
Trang 22
LỜI MỞ ĐẦU
Ngày nay, điện thoại di động đã trở thành một thiết bị, một món đồ không thể thiếu trong cuộc sống của chúng ta Trong quá trình làm việc, liên lạc hay học tập, giải trí, điện thoại di động trở thành một công cụ hoàn hảo khi có thể hỗ trợ và làm được rất nhiều thứ máy tính không thể làm, đồng thời vẫn đảm bảo tính gọn nhẹ và dễ sử dụng cho người dùng Ở thời điểm hiện tại,
có hai hệ điều hành chính cho điện thoại đó là Android và IOS Theo dòng sự kiện Google I/O
2022, Google đã chính thức xác nhận có hơn 3 tỷ thiết bị chạy hệ điều hành Android tương đương với 74% tổng số thiết bị di động Con số này đối với Iphone chạy hệ điều hành IOS của Apple.Inc là 26%
Về tính phổ biến của các ứng dụng trên thiết bị di động, theo tạp chí Forbes, vào quý 1 năm
2022, trung bình có 29 tỉ lượt tải về trên Google Store trong khi chỉ có khoảng 8 tỉ lượt ứng dụng được tải về trên nền tảng IOS Từ đó ta có thể thấy được sự chiếm ưu thế của hệ điều hành Android ngành xây dựng và phát triển ứng dụng di động Con số này, riêng ở Việt Nam sẽ được dự đoán còn tăng mạnh trong những năm tới do nhu cầu sử dụng ứng dụng và giải quyết tác vụ từ xa thay vì tại chỗ đang được ưu tiên
Khi xét về phương diện lập trình, Android là một công nghệ mã nguồn mở, có thể cho phép cộng đồng các lập trình viên quan tâm đóng góp và tiếp tục xây dựng hệ điều hành này Tuy nhiên đối với hệ điều hành đến từ Apple, công ty này đã đề ra những quy định rất nghiêm ngặt
về việc bản quyền và phát triển ứng dụng trên Iphone, Ipad,… Vì thế số lượng lập trình viên, các chuyên gia trong mảng lập trình Ios nhỏ hơn nhiều so với số lượng lập trình viên bên hệ điều hành Android
Nhận thấy được tiềm năng phát triển ứng dụng di động nói chung và phát triển ứng dụng trên nền tảng Android nói riêng, đặc biệt là ở Việt Nam là rất lớn, vì thế em quyết định sẽ phát triển bản thân, tìm hiểu các kiến thức thực tiễn thông qua cơ hội thực tập để trở thành lập trình viên ứng dụng Android Bên cạnh đó em cũng tìm được công ty cổ phần TVT Group, công ty hiện đại chuyên xây dựng và phát triển các ứng dụng Android và mong muốn sẽ được thực tập ở công ty này ở vị trí Android Internship
Trang 33
LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn Công ty cổ phần TVT Group đã tạo điều kiện cho em có cơ hội được thực tập tại quý công ty
Tuy thời gian thực tập chỉ có 3 tháng, nhưng nhờ sự chỉ dẫn, hỗ trợ nhiều tình của các anh, chị mentor trong team, em đã tiếp thu được những kiến thức tối quan trọng, thực tiễn và cần thiết trong quá trình xây dựng và phát triển một ứng dụng Chân thành cảm ơn các anh chị trong team
đã tận tình giúp đỡ, bỏ thời gian để hướng dẫn em trong những bước đầu mới tham gia vào công
ty Tuy nhiên, trong quá trình học tập và làm việc có thể không tránh khỏi những sai sót, mong mọi người có thể bỏ qua cho em
Đặc biệt cảm ơn anh Phạm Hoàng Thông, leader của team Android đã hướng dẫn, giúp đỡ em tận tình trong những bước đầu làm việc Chân thành cảm ơn anh đã chỉ dẫn em những kiến thức rất thực tiễn về kiến trúc ứng dụng đến những kỹ năng mềm như giao tiếp với khách hàng,… Bên cạnh đó, em cũng xin cảm ơn anh Bùi Thế Lượng đã hỗ trợ, cung cấp cho em những kiến thức bổ ích khi giao tiếp và làm việc, meeting với khách hàng và xây dựng sản phẩm
Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điều kiện em làm bài báo cáo này
Lê Hoàng Thịnh TP.HCM, ngày 22 tháng 12 năm 2022
Trang 44
NHẬN XÉT CỦA KHOA
Trang 5
5
MỤC LỤC
Table of Contents
1 Giới thiệu công ty thực tập 6
1.1 Giới thiệu công ty cổ phần TVT Group 6
1.2 Sản phẩm của công ty 6
1.3 Tầm nhìn 7
1.4 Sơ đồ tổ chức 7
2 Nội dung thực tập 8
2.1 Tìm hiểu về công ty và các dự án đang thực hiện của công ty 8
2.2 Nghiên cứu kỹ thuật 8
2.2.1 Cài đặt các công cụ làm việc cần thiết cho dự án 8
2.2.2 Tìm hiểu ngôn ngữ Kotlin và framework Android 9
2.2.3 Tìm hiểu về dự án hiện tại 10
2.3 Thực hiện project 11
2.4 Lịch làm việc 11
3 Chi tiết về project 14
3.1 Giới thiệu về ứng dụng EMOL 14
3.2 Các tính năng chính 15
3.2.1 Thu thập những trải nghiệm của người sử dụng 15
3.2.2 Tham gia vào các bài học hỗ trợ tinh thần 15
3.2.3 Chatbot trò chuyện với người sử dụng 16
3.2.4 Các tính năng khác 17
4 Thực hiện 17
5 Kế hoạch 18
5.1 Phase 1: Tính năng bên lề 18
5.2 Phase 2: Tính năng chính 18
TÀI LIỆU THAM KHẢO 19
TỔNG KẾT 20
Trang 66
1 Giới thiệu công ty thực tập
1.1 Giới thiệu công ty cổ phần TVT Group
TVT Group được đầu tư và phát triển dựa trên nguyên tắc lựa chọn và tập trung, ngoài việc tiếp tục nâng cao thế mạnh vốn có của mình trong lĩnh vực Navigation, công ty còn mở rộng thêm các hoạt động trên các lĩnh vực lập trình phần mềm ứng dụng cho các dòng sản phẩm, thiết bị di động thông minh (smart phone, tablet) sử dụng hệ điều hành Android, iOS, Window Phone, Blackberry OS… đào sâu nghiên cứu, cập nhật các công nghệ mới để cho ra đời các ứng dụng với nhiều tính năng thông minh, tiên tiến trên thế giới như công nghệ xử lý hình ảnh (Image Processing), Công nghệ tương tác thực tế ảo (Augmented Reality), DM (Direct marketing), DM+CRM…
1.2 Sản phẩm của công ty
TVT Group chịu trách nhiệm thiết kế và trực tiếp thực thi, xây dưng các ứng dụng di động, các thiết bị POS và những sản phẩm có tính thực tế cao và úng dụng những công nghệ tiên tiến như AR, Blockchain,… Một số sản phẩm nổi tiếng của công ty có thể kể đến như: Car Navigation, EMOL, POS Android (được sử dụng cho chuỗi cửa hàng Highland Vietnam), Starverse Henieken (Ứng dụng công nghệ blockchain), Naver Labs Apps,… Nhờ việc hợp tác với các đối tác lớn và không ngừng mở rộng quy mô, công ty đã liên kết và đi đến hợp tác thoả thuận với những thương hiệu lớn trên toàn cầu
Trang 77
1.3 Tầm nhìn
Trở thành một đơn vị hàng đầu trong việc nghiên cứu và phát triển những phần mềm ứng dụng mang tính kỹ thuật cao, phù hợp với xu thế chung của nền công nghệ thế giới, khẳng định chất lượng sản phẩm và thương hiệu công ty tại thị trường Việt Nam nói riêng và thị trường châu Á nói chung
Triết lý công ty: 5C
➢ Challenge – Thách thức
Thách thức cho các thành viên về việc luôn cập nhật công nghệ mới để thực hiện các dự án có yêu cầu cao Thách thức cũng là cơ hội để các thành viên tự phát triển bản thân mình
➢ Collaboration – Hợp tác
Hợp tác với các công ty đối tác hoặc khách hàng
➢ Định hướng Khách hàng
Hiểu rõ yêu cầu của khách hàng
➢ Tự tin
Đảm bảo hiểu biết về công nghệ cũng như khả năng làm việc trong lĩnh vực đang đảm nhận
➢ Thay đổi
Ứng dụng kiến thức, công nghệ mới để liên tục thay đổi, đổi mới trong việc phát triển ý tưởng và ứng dụng
1.4 Sơ đồ tổ chức
Sơ đồ tổ chức của công ty được thể hiện như sau, trong đó, em thuộc về team phát tiển phần mềm Android
Managing Director
Application
iOS
Android
MFC
Navigation
Web
Server Management
Front/Design Management
Administrator
Human Resource
Accounting Strategy Header
Trang 88
2 Nội dung thực tập
Trong thời gian thực tập tại công ty, em đã may mắn được tham gia vào dự án thực tế của công ty và là một trong những dự án thành công của TVT Group Đây là ứng dụng chạy trên nền tảng Android và được upload lên Play Store Đồng thời thông qua quá trình này, bên cạnh những kiến thức về khía cạnh kỹ thuật, em còn được tiếp cận và hỗ trợ những kỹ năng mềm như tin học văn phòng, giao tiếp khách hàng, xử lý vấn đề, đánh giá và tiếp cận công việc…
2.1 Tìm hiểu về công ty và các dự án đang thực hiện của công ty
Thời gian: 1 tuần
Nội dung:
- Tìm hiểu về quy trình và quy định làm việc tại công ty, cách tổ chức và nội bộ, các phòng ban của công ty
- Em được thêm vào những resources, tài nguyên của công ty, được cung cấp email riêng của công ty để làm việc Bên cạnh đó em còn được hướng dẫn viết báo cáo cuối ngày, sử dụng email công ty để trao đổi, liên lạc và sử dụng các tài nguyên được cung cấp
- Trong quá trình thực tập, em được thêm vào Trello (Phần mềm quản lý công việc
và phân chia đầu việc) để tìm hiểu về dự án hiện tại mà em sẽ tham gia Công ty sử dụng Skype là kênh liên lạc chính của các thành viên trong công ty Ngoài ra em còn được tham gia vào buổi hợp mặt thành viên mới trong công ty
Kết quả: Em đã hiểu thêm về quy trình làm việc, phong cách làm việc và văn hoá công
ty Đồng thời em cũng có thêm các kỹ năng mềm liên quan đến việc sử dụng email nội
bộ, báo cáo hằng ngày, làm việc có kế hoạch, trách nhiệm và kỷ luật hơn
2.2 Nghiên cứu kỹ thuật
2.2.1 Cài đặt các công cụ làm việc cần thiết cho dự án
Thời gian: 1 ngày
Nội dung:
- Em được tìm hiểu về các công cụ lập trình và các công cụ văn phòng sẽ được sử
dụng trong quá trình làm việc
- Trong thời gian này, em được khuyến khích nên sử dụng Android Studio, là một IDE được sử dụng để phát triển các ứng dụng Android Cũng trong thời gian này, mentor giới thiệu cho em một số ứng dụng khác để có thể sử dụng trong quá trình phát triển ứng dụng như: Figma, Postman, Git Kraken,… Đây là những công cụ hữu ích và thiết yếu trong quá trình phát triển ứng dụng Ngoài ra, em cũng được hướng dẫn về cách sử dụng các phần mềm văn phòng như Google Sheet, Jira,… để tracking các tasks
Thực hiện: Tải về và cài đặt các ứng dụng cần thiết
Kết quả: Có thể lập trình ứng dụng Android trên IDE dựa vào design Update tình hình
tiến độ công việc và báo cáo Sử dụng Git Kraken để tương tác với các repository
Trang 99
2.2.2 Tìm hiểu ngôn ngữ Kotlin và framework Android
Thời gian: 7 ngày
Nội dung: Dự án hiện tại được chạy trên nền tảng Android và viết bằng ngôn ngữ
Kotlin Điều này khác với ngôn ngữ Java để làm ứng dụng Android em được học trên trường Vì thế công ty đưa ra cho em lộ trình 3 ngày để đọc và tìm hiểu về Kotlin Điều này bao gồm nhưng không giới hạn bởi những kiến thức nêu ra dưới đây:
- Các syntax chính:
Em được học cách khai báo biến, viết cái câu điều kiện, hàm gọi, callback,… trong Kotlin
- Lập trình hướng đối tượng với Kotlin:
Em tự học và tìm hiểu cách viết các lớp, kế thừa lớp, ghi đè các phương thức trong Kotlin
- Các thành phần chính trong lập trình Android:
Em được đưa các nguồn tài liệu để có thể tự học lập trình Android Qua các tài liệu này, em hiểu được các thành phần cơ bản của Android Vòng đời của một ứng dụng Android, cách lập trình giao diện và tương tác với chúng Hiểu được
mô hình MVVM và databinding trong Android
- Tìm hiểu về các sử dụng máy ảo và truy cập vào bộ nhớ máy ảo
Thực hiện:
- Tham gia đầy đủ các buổi training của công ty
- Tự học ngôn ngữ Kotlin và framework Android
Kết quả:
- Em đã có thể lập trình ứng dụng di động với ngôn ngữ Kotlin sử dụng framework Android
- Em đã có thể clone project hiện tại và học các tiêu chuẩn viết code, commit code
và tách ra nhánh riêng để tiến hành làm việc
Trang 1010
2.2.3 Tìm hiểu về dự án hiện tại
Thời gian: 4 ngày
Nội dung: Em được giao chông nhiệm vụ tìm hiểu về dự án hiện tại Việc tìm hiểu này
bao gồm tìm hiểu về cấu trúc dự án, các user flow, danh sách các màn hình, design, coding convetion, kiến trúc của ứng dụng,… Sau khi có các kiến thức nhất định về dự
án, em mới có thể được xem xét cho phép tiến hành thực hiện các nhiệm vụ trong dự
án
- Mô hình MVVM:
Đây là mô hình cũng như là kiến trúc chính của ứng dụng Android Đại đa số các
dự án Android đều được phát triển dựa trên kiến trúc này Đây là mô hình 3 lớp có khả năng tách biệt giữa Logic và UI Giúp mã nguồn dễ phát triển và mở rộng hơn Đồng thời cơ chế databinding giúp việc phát triển ứng dụng nhanh chóng
- Design Pattern Tempate Method
Ở thời điểm em gia nhập vào dự án, đây là dự án đang trong giai đoạn phát triển chứ không phải mới khởi động Vì thế dự án đã có một số tính năng cũng như là các mẫu đã viết sẵn Bằng cách sử dụng Template Method, mã nguồn của dự án này
có thể dễ dàng phát triển và mở rộng hơn Với các phương thức được định sẵn và các bước đã được thực thi trước, em được yêu cầu tìm hiểu về Code Base của ứng dụng để có thể dễ dàng phát triển một tính năng sau này
- API with Retrofit
Đa số các ứng dụng Android đều yêu cầu phải tương tác với server thông qua HTTP Rest API Một trong những thư viện phổ biến của Android để tương tác với HTTP
là sử dụng Retrofit Retrofit làm việc như một client để gọi và nhận các dữ liệu từ server thông qua HTTP Em được yêu cầu tìm hiểu cách tạo các request GET, POST, PUT, DELETE để tương tác với server
- Animation với Android
Tuy nhiên điều đặc biệt với ứng dụng này là Animation của nó Đây là giao diện thân thiện với người dùng và đề cao trả nghiệm của người dùng hơn là Logic ẩn chứa trong nó Vì thế animation là một kiến thức không thể thiếu khi phát triển hoặc bảo trình một tính năng trong dự án Vì thế em phải học cách tạo và điều khiển các animation trong ứng dụng
Thực hiện:
- Tự học các lý thuyết trong tài liệu các mentor đã đưa
- Thử tạo một ứng dụng Android và tìm hiểu các cơ chế hoạt động của nó
- Tìm hiểu các thành phần chức năng trong dự án, cách tổ chức và chia File, chia thư mục Các feature template đã được định nghĩa sẵn
Kết quả:
- Biết được cách thức lập trình ứng dụng Android với ngôn ngữ Kotlin theo kiến trúc MVVM
- Biết được cách làm animation trong Android và gọi RestAPI để lấy và update dữ liệu trên server
Trang 1111
2.3 Thực hiện project
Sau 2 tuần được hướng dẫn và thực hành cũng như tìm hiểu về dự án công ty, em đã nắm được những kiến thức cơ bản về Kotlin, Android, kiến trúc MVVM, Retrofit Client, Animation và những kiến thức căn bản khác Kể từ thời gian này, em sẽ tiến hành tham gia vào các module chính của dự án bằng cách áp dụng những kiến thức thực tiễn đã học Chi tiết của dự án sẽ được kể ở phần sau
2.4 Lịch làm việc
Mức
độ hoàn thành
Nhận xét của người hướng dẫn
1
- Tìm hiểu về công
ty, cách tổ chức của công ty
- Tìm hiểu về các quy định, quy trình làm việc của công ty
- Làm quen với các anh chị trong công
ty
Anh Nguyễn Ngọc
Tú
2
- Tìm hiểu về ngôn ngữ lập trình Kotlin
framework Android
để lập trình di động
- Tìm hiểu về mô hình MVVM
Android animation
Anh Phạm Hoàng Thông
3
- Fix một số bug trong dự án liên quan đến hiển thị
UI và bảng màu
Anh Phạm Hoàng Thông
- Fix lỗi logic không thể xem được video Anh Phạm Hoàng Thông
Trang 1212
và lấy dữ liệu hiển thị lên giao diện
6
- Tiếp tục làm thêm
UI cho một màn hình mới và thực thi các logic của màn hình đó
- Update tình hình tiến độ sau 1,5 tháng làm việc, cập nhật trạng thái của các tính năng được giao
Anh Phạm Hoàng Thông
7
- Sửa một số lỗi của giai đoạn trước trong quá trình thực hiện tính năng
- Tìm hiểu kỹ hơn
animation để chuẩn
bị cho giai đoạn tiếp theo
Anh Phạm Hoàng Thông
8
- Sử dụng thư viện Android animation
để tạo animation
chuyển giữa hai màn hình
Anh Nguyễn Văn Lộc
9
- Sử dụng animation kết hợp với thời gian
và API để update trạng thái của giao diện và server
- Đây là một trong những tính năng chính của ứng dụng
có khả năng đồng bộ giữa người dùng, giao diện và máy chủ
Anh Phạm Hoàng Thông, anh
Nguyễn Văn Lâm
10
Google service để
bỏ vào trong ứng dụng Một số có thể
kể đến là AdMob
Anh Phạm Hoàng Thông