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