Kèm theo đó là các công ty công nghệ lớn, đa quốc gia đang tập trung vào mảng phát triển ứng dụng di động như: Zalo, Grab, SEA,… Từ lâu, trong quá trình học tập tại trường, em đã định hư
Trang 1TRƯỜ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 ANDROID
Công ty thực tập: Công ty cổ phần VNG Người phụ trách: Văn Hoàng Phương Thực tập sinh : Nguyễn Hữu An Nhiên
TP Hồ Chí Minh, tháng 6 năm 2022
Trang 2LỜI MỞ ĐẦU
Với sự phát triển của công nghệ, các thiết bị di động ngày càng được phát triển mạnh mẽ
và có những chức năng hỗ trợ cuộc sống của con người tốt hơn Với tốc độ phát triển của các thiết
bị di động, tốc độ phát triển của ngành lập trình ứng dụng di động cũng tăng trưởng nhanh chóng
Việt Nam nằm trong top đầu các nước có độ phủ Internet rộng nhất, điện thoại thông minh đang dần trở thành một phần quan trọng không thể thiếu trong cuộc sống hằng ngày Ngày càng nhiều ứng dụng công nghệ được phát triển trên các nền tảng di động Kèm theo đó là các công ty công nghệ lớn, đa quốc gia đang tập trung vào mảng phát triển ứng dụng di động như: Zalo, Grab, SEA,…
Từ lâu, trong quá trình học tập tại trường, em đã định hướng bản thân trở thành một lập trình viên Ứng dụng di động chuyên nghiệp nên em đã tìm tòi về các công nghệ di động, các ngôn ngữ và đăng ký các môn chuyên ngành lập trình ứng dụng di động
Sau quá trình tự học và làm đồ án, em cảm thấy bản thân đã sẵn sàng để xin thực tập để có thể học hỏi, tiếp thu nhiều kiến thức hơn trong ngành này Do đó em đã đăng ký môn thực tập và bắt đầu tìm kiếm công việc Rất may mắn cộng với những nỗ lực, em đã trúng tuyển vào Công ty
Cổ phần VNG
Trang 3
LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn Công ty Cổ phần VNG đã tạo điều kiện cho em có cơ hội được thực tập tại công ty
Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của các anh chị đi trước, em
đã tiếp thu được những kiến thức quan trọng để có thể làm được một ứng dụng Android hoàn thiện Chân thành cảm ơn các anh chị trong team đã bỏ ra nhiều thời gian,công sức để hướng dẫn
em hoàn thành đợt thực tập này
Đặc biệt cảm ơn anh Văn Hoàng Phương, đã training Android, hướng dẫn, giúp đỡ cho em tận tình cả những khó khăn trong công việc, đến những khó khăn việc làm quen với môi trường mới; cảm ơn anh Nguyễn Hoài Chung đã training chi tiết về các vấn đề kĩ thuật, review code trong quá trình thực tập; Cảm ơn tất cả các anh chị trong Zalo Group nói chung và team Android Zing MP3 nói riêng đã nhiệt tình giúp đỡ em trong thời gian qua
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
<Nguyễn Hữu An Nhiên>
<TPHCM, tháng 6, 2022>
Trang 4NHẬN XÉT CỦA KHOA
Trang 5
Chương 1: Giới thiêu công ty thực tập
1 Giới thiệu công ty Cổ phần VNG
Công ty cổ phần VNG được thành lập vào ngày 9 tháng 9 năm 2004 với tên gọi VinaGame – đổi tên thành VNG vào năm 2008 – là một công ty cung cấp các dịch vụ Internet, xuất bản phần mềm, quảng cáo thương mại và kinh doanh trò chơi điện tử Công ty có trụ sở chính tại VNG Campus (KCX Tân Thuận) Z06 Đường số 13 - Phường Tân Thuận Đông - Quận 7 TP.HCM
Công ty Cổ phần VNG (VNG) vừa lần thứ ba liên tiếp được HR Asia Awards vinh danh “Nơi làm việc tốt nhất châu Á” nhờ những nỗ lực “Phát triển con người” không ngừng nghỉ trong suốt 17 năm qua
Sản phẩm nổi bật của công ty: PUBG Mobile, Tốc Chiến, Zalo, Zing MP3,…
2 Sản phẩm nổi bật của công ty
Zalo:
Ngày 8/08/2012, VNG giới thiệu sản phẩm Zalo-ứng dụng nhắn tin và gọi điện miễn phí hoạt động trên nền tảng di động Zalo được cung cấp cho iOS, Android, Windows Phone, và Nokia Java Phần mềm hỗ trợ sóng 2G, 2.5G, 3G, 4G và wifi
Năm 2021, Zalo trở thành ứng dụng nhắn tin được yêu thích nhất tại Việt Nam
PUBG Mobile:
Trang 6PlayerUnknown's Battlegrounds Mobile (viết tắt: PUBGM) là tựa game bắn súng sinh tồn do PUBG Corporation phát triển và phát hành đầu tiên tại thị trường quốc
tế Tuy nhiên, vào tháng 3 năm 2018, PUBG mới được Tencent Games và PUBG Corp hợp tác để cho ra mắt phiên bản di động PUBG Mobile PUBG Mobile đã chính thức có mặt tại Việt Nam vào ngày 26 tháng 11 năm 2018 do VNG GAMES hợp tác cùng Tencent Games và PUBG Corp phát hành đầu tiên trên hệ điều hành iOS và tiếp đến
là hệ điều hành Android vào ngày 27
Zing MP3:
Ra đời vào tháng 8 năm 2007, Zing MP3 là công cụ nghe và tìm kiếm nhạc trực tuyến Sản phẩm này có các ứng dụng trên iOS, Android và Windows Phone Tháng 12/2012, Zing MP3 ký hợp đồng bản quyền với Universal Music Group, cho phép người dùng Việt Nam có thể nghe và download các bản nhạc của Universal Music (có thu phí)
Đầu năm 2013, Zing MP3 ký kết thỏa thuận kinh doanh kho nhạc hơn 40.000 bài của Hiệp hội Công nghiệp ghi âm Việt Nam (RIAV) và 35.000 tác phẩm âm nhạc của Trung tâm Bảo vệ quyền tác giả âm nhạc Việt Nam
Tháng 6/2013, Zing Mp3 ký kết thỏa thuận bản quyền âm nhạc với Sony Music Group và Youtube
Hàng năm Zing Mp3 tổ chức giải thưởng âm nhạc Zing Music Awards, lần đầu tiên vào năm 2010
Theo thống kê, hiện tại ZingMP3 đang đứng top1 tại cả 2 bảng xếp hạng của AppStore và PlayStore ở hạng mục Music
Chương 2: Nội dung thực tập
Đợt thực tập với chủ đề “Lập trình ứng dụng Android” nhằm mục đích giúp sinh viên thực tập được đào tạo toàn diện về lập trình ứng dụng trên Android, đồng thời rèn luyện những kỹ năng mềm như làm việc nhóm, thuyết trình, giao tiếp Tại công ty, sinh viên có cơ hội được học tập, khám phá và làm việc trong một môi trường phát triển ứng dụng chuyên nghiệp
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
Trang 7Thời gian : 1 ngày
Nội dung : Giới thiệu về công ty, cách tổ chức của công ty
Được nghe người phụ trách giới thiệu về công ty, quá trình thành lập và phát triên (như đã nhắc đến ở trên), quy trình làm việc từ cao xuống thấp, cách thức tổ chức của công
ty
Ngoài ra, thực tập sinh còn được giới thiệu về cách thức làm việc trong công ty như thời gian đi làm, các quy định cần phải tuân thủ, cách sử dụng email trong công việc…
Kết quả : Hiểu thêm về công ty VNG, quá trình thành lập và phát triển Có thêm các kỹ
năng về việc sử dụng email trong công việc, làm việc có kế hoạch, có kỷ luật, có trách nhiệm hơn
2 Nghiên cứu kỹ thuật
2.1 Các công cụ làm việc
Thời gian : 2 ngày
Nội dung : Tìm hiểu về các công cụ sẽ được sử dụng trong quá trình làm việc
Tìm hiểu về các côn cụ sẽ được sử dụng trong quá trình làm việc tại VNG như:
- Zalo for work để liên lạc giữa các thành viên
- Microsoft Outlook để liên lạc qua mail
- Git để quản lý mã nguồn
- Android Studio
Thực hiện : Thực hành sử dụng các phần mềm đã nêu trên
Kết quả : Hiểu được về quy trình làm việc và các công cụ dùng trong quy trình
2.2 Tìm hiểu ngôn ngữ Java và Kotlin
Thời gian : 5 ngày (1 tuần)
Nội dung : Được giới thiệu về ngôn ngữ lập trình Java và Kotlin, những kiến thức quan
trọng cho việc tối ưu trên Android
- Các cú pháp, câu lệnh cơ bản của Java
- So sánh Java và Kotlin
- Làm quen với lập trình Android
- Xây dựng ứng dụng Android cơ bản
Thực hiện :
- Tham gia đầy đủ các buổi training của công ty
- Làm các bài thực hành, kiểm tra về kiến thức đã học
Kết quả :
Trang 8- Nâng cao kỹ năng lập trình Android
- Có được những kiến thức quan trọng cho việc lập trình mobile sau này
2.3 Tìm hiểu về thư viện ExoPlayer
Thời gian : 1 tháng
Nội dung: Các kiến thức cơ bản về ExoPlayer
- ExoPlayer là một thư viện open-source được phát triển bởi Google nhằm xử lý video và audio trên Android Hỗ trợ Dynamic Adaptive Streaming thông qua giao thức HTTP (DASH) và SmoothStreaming, điều mà MediaPlayer không thể làm được
- Ngoài ra ExoPlayer còn cung cấp khả năng tùy chỉnh và mở rộng cao ExoPlayer được thiết kế đặc biệt, cho phép nhiều thành phần được thay thế và tuỳ chỉnh khi
thực thi
Thực hiện :
- Tham gia research về mã nguồn của thư viện ExoPlayer
- Vẽ UML về cơ chế của ExoPlayer và tạo các ứng dụng demo sử dụng ExoPlayer
- Nghiên cứu về cơ chế buffer, render, caching,…
- So sánh 2 phiên bản 2.9.6 và 2.16.1
Kết quả :
- Cơ bản nắm được cách hoạt của thư viện ExoPlayer
- Có thể viết được ứng dụng phát nhạc/video sử dụng ExoPlayer có hỗ trợ cơ chế cache, pre-cache, preloading…
2.4 Clean Architecture
Thời gian : 1 tuần
Nội dung : Tìm hiểu về kiến trúc Clean Architecture
- Định nghĩa về Clean Architecture: Clean Architecture được xây dựng dựa trên tư tưởng "độc lập" kết hợp với các nguyên lý thiết kế hướng đối tượng(đại diện tiêu biểu là Dependency Inversion) Độc lập ở đây nghĩa là việc project không bị phụ thuộc vào framework và các công cụ sử dụng trong quá trình kiểm thử
Trang 9- Kiến trúc của Clean Architecture chia thành 4 layer với một quy tắc phụ thuộc Các layer bên trong không nên biết bất kỳ điều gì về các layer bên ngoài Điều này có nghĩa là nó có quan hệ phụ thuộc nên "hướng" vào bên trong
Thực hiện :
- Tham gia đầy đủ các buổi training
- Tạo ra những ứng dụng cơ bản, có áp dụng kiến trúc Clean Architecture và mô hình MVP
Kết quả: Cơ bản nắm được kiến thức về Clean Architecture, mô hình MVP trong lập
trình Android
2.5 Dependency Injection & thư viện Dagger 2
Thời gian : 1 tuần
Nội dung : Tìm hiểu khái niệm Dependency Injection và thư viện Dagger 2
- Khái niệm Dependency Injection: Dependency Injection được xây dựng dựa trên khái niệm Inversion of Control Nghĩa là các phụ thuộc của 1 class chỉ nên được cung cấp từ bên ngoài Dependency injection là một kĩ thuật trong đó một object (hoặc một static method) cung cấp các dependencies của một object khác Một dependency là một object mà có thể sử dụng trong ứng dụng
- Thư viện Dagger 2: Dagger 2 là một dependency injection framework thuộc dạng compile-time và fully static Tách biệt khởi tạo/sử dụng, dễ dàng test hơn (unit test
Trang 10và function), khả năng mở rộng tốt hơn - đây chỉ là một vài lợi ích từ việc sử dụng depedency injection framework như Dagger 2
Thực hiện :
- Tham gia đầy đủ các buổi training
- Tạo ra ứng dụng demo cơ bản, có áp dụng Dependency Injection và thư viện Dagger
2
Kết quả: Cơ bản nắm được kiến thức về Dependency Injection, Dagger và một số thư
viện liên quan như Hilt, Koin,…
2.6 Tìm hiểu về xử lý bất đồng bộ và RxJava
Thời gian : 2 tuần
Nội dung : Tìm hiểu về lập trình bất đồng bộ, đa luồng, thư viện RxJava
Thực hiện:
- Tham gia các buổi training và thực hiện các bài tập do trainer đề ra
Kết quả: Nắm được cơ bản về các thành phần, các operator của RxJava Có thể sử áp
dụng để xử lý bất đồng bộ
2.7 Tìm hiểu về các công cụ phổ biến trong việc lập trình Android
Thời gian : 2 tuần
Nội dung : Tìm hiểu về Retrofit, Volley, Glide, Picasso
- Khái niệm Glide: Glide là một thư viện open source hỗ trợ load ảnh trên Android
Dùng Glide sẽ đơn giản hóa các công việc cần làm khi sử dụng một bức ảnh trong Android đi rất nhiều Chúng ta không cần quan tâm đến việc decoding, memory and disk caching mà thay vào đó chỉ cần sử dụng interface rất đơn giản từ Glide
- Khái niệm Picasso: Picaso là một thư viện tải và xử lý hình ảnh cho Android Nó
được tạo ra và duy trì bởi Square, và cung cấp việc tải và xử lý hình ảnh Nó đơn giản hoá quá trình hiển thị hình ảnh từ một nguồn bên ngoài Trong nhiều trường hợp, chỉ một ít code là đủ để cài đặt thư việc đơn giản này
Trang 11- Khái niệm Retrofit: Retrofit là một công nghệ được phát triển bởi Square, được xây
dựng dựa trên rất nhiều công nghệ mạnh mẽ cho phép giải quyết tốt các yêu cầu từ phía client và server một cách nhanh và hiệu quả nhất
- Khái niệm Volley: Volley library Android là thư viện networking cho các dự án
Android Volley được dùng để quản lý các network request, giúp cho developer đơn giản hóa việc thực hiện kết nối và xử lý kết quả trả về từ server
Kết quả: Nắm được cơ bản về cách sử dụng các công cụ này hiệu quả
3 Thực hiện project
Sau hai tháng được training và thực hành, thực tập sinh đã nắm được những kiến thực cơ bản về lập trình ứng dụng Android Sau đó sinh viên bắt đầu thực hiện kết hợp các kiến thức đã học vào việc lập trình một ứng dụng hoàn chỉnh
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
- Làm quen với các công cụ làm việc trong công ty
- Học cách trao đổi, làm việc qua email
- Anh Văn Hoàng Phương
- Anh Nguyễn Hoài Chung
- Team HR
2
- Tìm hiểu và nghiên cứu về thư viện ExoPlayer
- Anh Văn Hoàng Phương
- Anh Nguyễn Hoài Chung
3
- Tìm hiểu về Clean Architecture
- Anh Văn Hoàng Phương
- Anh Nguyễn Hoài Chung
4
- Tìm hiểu về Dependency
Injection
- Anh Văn Hoàng Phương
- Anh Nguyễn Hoài Chung
Trang 12- Tìm hiểu về thư viện Dagger 2
5
- Tìm hiểu về Reactive
6
- Tìm hiểu về các công cụ trong lập trình Android
- Anh Văn Hoàng Phương
- Anh Nguyễn Hoài Chung
Chương 3: Chi tiết về project
1 Giới thiệu về ứng dụng
Ứng dụng Muzik là một mini music player project bao gồm các tính năng chính: Stream nhạc từ server, phát nhạc từ thiết bị người dùng, stream video
Ngôn ngữ lập trình: Java
Các thư viện liên quan: ExoPlayer, RxJava3, Retrofit, Glide, Dagger 2, Palette,…
Các design pattern đã áp dụng: Synchronized Singleton, Façade, Observer
1.1 Tính năng streaming nhạc
Mô tả: Muzik hỗ trợ người dùng có thể stream nhạc trực tuyến từ các nguồn khác
nhau Sau khi người dùng chọn bài hát bất kỳ trên màn hình chính thì sẽ khởi động giao diện của trình phát nhạc Ngoài bài hát người dùng vừa chọn thì player cũng
sẽ có lưu lại playlist người dùng vừa chọn và auto-resume khi đã phát xong nhạc Đồng thời, sau khi phát nhạc thì cũng sẽ khởi tạo 1 background thread để thực hiện
cơ chế preload Tức là các bài hát tiếp theo sẽ được lưu trước vào bộ nhớ cache, điều này sẽ giảm thời gian chờ đợi trong lúc chuyển bài đồng thời nếu trong lúc phát nhạc mà người dùng bị mất kết nối mạng thì bài hát cũng đã được nạp sẵn, vẫn có thể tiếp tục phát nhạc mà không ảnh hưởng trải nghiệm người dùng Các bài hát đã phát đều sẽ được lưu vào bộ nhớ cache, nếu lần sau người dùng nghe lại bài hát đó sẽ sử dụng data từ bộ nhớ cache thay vì phải lấy nhạc từ phía server về
Trang 13Giao diện màn hình chính
Màn hình Music Player
Trang 14Màu nền của Player thay đổi theo từng bài hát
1.2 Tính năng play video
Mô tả: Tính năng phát video cho phép người dùng phát các video từ server Giao
diện của màn hình video player được thiết kế theo giao diện của các nền tảng video dọc phổ biến như Tiktok, Facebook Reels,… Tương tự nhạc, các video cũng sẽ hỗ trợ việc cache, pre-load video nhằm mang đến trải nghiệm tốt nhất cho người dùng Để tối ưu hoá hiệu năng và hỗ trợ trên các thiết bị cấu hình thấp, thay vì mỗi video sẽ phải tạo mới 1 video player Ứng dụng đã tính toán để sử
Trang 15dụng lại các đối tượng video player này nhằm tiết kiệm tài nguyên hệ thống
Màn hình Video Player
1.3 Tính năng phát nhạc từ thiết bị:
Muzik cho phép người dùng có thể scan và tìm kiếm tất cả bài hát có trên thiết bị Điều này giúp cho người dùng có thể tải và phát nhạc mà không yêu cầu kết nối mạng