PHẦN MỞ ĐẦU 1. TÍNH CẤP THIẾT CỦA ĐỀ TÀI Một trong những điều quan trọng nhất trong xã hội ngày nay đó là thông tin. Thông tin giúp kết nối mọi người với nhau, cung cấp cho họ thêm những hiểu biết về thế giới bên ngoài. Nhờ sự phát triển không ngừng nghỉ của Internet trong những năm gần đây đã mang lại những tác động khác nhau trong mọi lĩnh vực của đời sống.
Cách đây khoảng 25 năm, khi Internet chưa được phổ biến rộng rãi như bây giờ, mọi thông tin thường được cung cấp tới mọi người xung quanh bằng các phương tiện truyền thông như loa phát thanh, các trang sách, ảnh, những tờ báo…Mặt khác, những cách truyền thông tin như vậy thường khá tốn kém về mặt chi phí. Và với sự phát triển mạnh mẽ của Internet đã cung cấp thêm một cách chia sẻ thông tin phổ biến khác. Khi mà mọi người giờ đây đã có thể chia sẻ những thông tin mình biết lên Internet về những khía cạnh khác nhau trong xã hội. Tuy nhiên với một lượng thông tin được chia sẻ cực kì lớn từ mọi người trong xã hội thì thật khó để có thể chọn lọc những thông tin cần thiết.
Hay một vấn đề khác là việc thông báo cho những người quen, bạn bè, đồng nghiệp hoặc những người có cùng sở thích để cho họ biết được những điều mình muốn chia sẻ cũng không hề dễ dàng. Do đó mọi người thường lập ra các hội nhóm gồm những người có cùng chung mục tiêu hay sở thích trên Internet, thông qua các trang web hoặc gần đây hơn là những ứng dụng trên thiết bị di động, để có thể chia sẻ những thông tin mới đến những người quan tâm. Từ đó giúp cho việc tiếp nhận cũng như cập nhật thông tin mong muốn diễn ra nhanh và dễ dàng hơn. Nắm bắt xu thế, chúng em nhận thấy rằng nên phát triển một môi trường trao đổi thông tin dành cho trường Đại học Sư phạm Kỹ thuật, để giúp cho mọi người trong trường có thể chia sẻ và cập nhật thông tin với nhau một cách nhanh chóng.
Và với ý tưởng đó, chúng em đã quyết định thực hiện đề tài “Xây dựng ứng dụng mạng xã hội UTeSocial trên Android”. MỤC TIÊU CỦA ĐỀ TÀI Xây dựng ứng dụng cho phép người dùng đăng bài viết và xem các bài viết của người dùng khác. Xây dựng website cho quản trị viên hỗ trợ quản lý người dùng cũng như những thông tin khác. 23 Áp dụng những công nghệ mới cũng như ngôn ngữ lập trình hiện đại vào đề tài.
PHẠM VI ĐỀ TÀI Xây dựng ứng dụng mạng xã hội dành cho trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh. Cụ thể với những nhóm người dùng: ▪ Sinh viên đang theo học tại trường Đại học Sư phạm Kỹ thuật Tp. ▪ Giảng viên đang tham gia giảng dạy tại trường Đại học Sư phạm Kỹ thuật Tp. ▪ Cựu sinh viên đã tốt nghiệp, hoàn thành chương trình học tại trường Đại học Sư phạm Kỹ thuật Tp.
▪ Thí sinh, người muốn ứng tuyển vào các ngành học tại trường Đại học Sư phạm Kỹ thuật Tp. PHƯƠNG PHÁP THỰC HIỆN Tìm hiểu các kiến thức cần thiết để thực hiện đề tài: ▪ Các kỹ thuật phân tích hệ thống. ▪ Các ngôn ngữ lập trình Kotlin, NodeJS, VueJS. ▪ Kiến trúc khi xây dựng ứng dụng Android.
▪ Những thư viện hỗ trợ xây dựng app và website trong đề tài. 24 PHẦN NỘI DUNG CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1. Xây dựng ứng dụng 1. Android Framework Hình 1.
Android Framework [1] Android Framework là nền tảng phần mềm độc đáo của Google, chủ yếu được xây dựng để phát triển ứng dụng di động trên hệ điều hành Android. Với sự đa dạng ngày càng tăng về mục đích sử dụng, từ giải trí cá nhân đến các giải pháp doanh nghiệp, Android Framework đóng vai trò quan trọng bằng cách cung cấp cơ sở hạ tầng mạnh mẽ và linh hoạt cho các nhà phát triển. Xuất phát từ sự phát triển của hệ điều hành Android vào năm 2008, Android Framework đã trải qua nhiều cập nhật và bổ sung để đáp ứng yêu cầu ngày càng cao của thị trường di động. Không chỉ hỗ trợ cho các ứng dụng giải trí như trò chơi và ứng dụng cá nhân, Android Framework còn là nền tảng chính cho các ứng dụng doanh nghiệp, giáo dục, y tế và còn rất nhiều lĩnh vực khác.
Sự đa dạng này đặt ra một thách thức trong việc duy trì tính tương thích và khả năng mở rộng của nền tảng. Trong đề tài này, Android Framework được triển khai vào việc phát triển ứng dụng mạng xã hội trên nền tảng di động hệ điều hành Android cho người dùng cuối. Việc sử dụng Android Framework được thực hiện bằng ngôn ngữ lập trình Kotlin, và cấu trúc của ứng dụng được xây dựng chủ yếu theo mô hình Clean Architecture được Google khuyến cáo. Kotlin [2] 25 Kotlin, được phát triển bởi JetBrains, nổi bật như một ngôn ngữ lập trình tương thích hoàn toàn với Java, nhưng mang lại nhiều tính năng và lợi ích hiện đại.
Với khả năng chạy trên Java Virtual Machine (JVM), Kotlin trở thành lựa chọn phổ biến trong việc phát triển ứng dụng Android do tính đơn giản, tích hợp tốt với môi trường Java, và tính an toàn. Việc sử dụng Kotlin trong dự án giúp tối ưu hóa mã nguồn, tăng hiệu suất, và giảm độ phức tạp của ứng dụng. Tính an toàn của Kotlin giúp ngăn chặn nhiều lỗi phổ biến, tăng cường khả năng phát triển và quản lý dự án hiệu quả. Đặc biệt, sự ưu tiên đối với Kotlin khi đã được Google chính thức công nhận là ngôn ngữ lập trình chính cho Android, không chỉ tương thích mà còn tích hợp mạnh mẽ với Android Framework, điều này đã thúc đẩy sự phổ biến của Kotlin trong cộng đồng phát triển Android đã tạo ra nhiều tài nguyên học tập, thư viện và hỗ trợ từ cộng đồng, tạo điều kiện thuận lợi cho quá trình phát triển, là một phần lý do phù hợp để lựa chọn sử dụng Kotlin trong dự án thay vì Java.
Clean Architecture trong Android Hình 1. Clean Architecture trong Android [3] Clean Architecture là một phương pháp thiết kế phần mềm được áp dụng chủ yếu trong ứng dụng Android trong đề tài này, với mục tiêu không chỉ là tạo ra mã nguồn dễ bảo trì mà còn mang lại sự linh hoạt và khả năng mở rộng trong quá trình phát triển và duy trì. ▪ Tầng Presentation (Presentation Layer): Vai trò và chức năng: tầng này chịu trách nhiệm cho giao diện người dùng và tương tác người dùng. Nó không chứa nhiều business logic mà thay vào đó chỉ tập trung vào việc xử lý UI như hiển thị dữ liệu… và xử lý sự kiện từ người dùng.
26 Sự tách biệt: Clean Architecture đảm bảo sự tách biệt giữa tầng Presentation và các tầng khác, giúp giữ cho mã nguồn ở tầng này dễ bảo trì và thay đổi mà không tác động lớn đến các phần khác của ứng dụng. ▪ Tầng Domain (Domain Layer): Business logic độc lập: tầng Domain chứa business logic độc lập, không phụ thuộc vào bất kỳ thư viện hoặc framework cụ thể nào. Điều này giúp đảm bảo rằng business logic có thể thay đổi mà không ảnh hưởng đến các phần khác của hệ thống. Kiểm thử đơn vị thuận lợi: business logic ở tầng này có thể được kiểm thử đơn vị một cách thuận lợi vì nó không phụ thuộc vào các thành phần bên ngoài nhiều.
▪ Tầng Data (Data Layer): Quản lí truy cập dữ liệu: tầng Data là nơi quản lí truy cập và lấy dữ liệu từ nguồn dữ liệu bên ngoài, chẳng hạn như cơ sở dữ liệu hoặc API. Độc lập với công nghệ: Clean Architecture đảm bảo tầng Data độc lập với công nghệ cụ thể, giúp nâng cao tính linh hoạt và khả năng mở rộng của hệ thống. Ưu Điểm và Lợi Ích: ▪ Dễ bảo trì: Clean Architecture giúp tạo ra mã nguồn dễ bảo trì bằng cách tách biệt business logic và đảm bảo sự độc lập giữa các tầng. ▪ Linh hoạt: hệ thống trở nên linh hoạt và có thể thích ứng với thay đổi mà không cần sửa đổi nhiều mã nguồn.
▪ Kiểm thử thuận lợi: tính độc lập của business logic và tầng Data giúp kiểm thử đơn vị và kiểm thử tích hợp thuận lợi hơn. Áp dụng Clean Architecture không chỉ giúp đảm bảo tính dễ bảo trì và mở rộng của ứng dụng trong thời gian mà còn tạo điều kiện thuận lợi cho việc phát triển và duy trì một cách hiệu quả. Một số thư viện hỗ trợ 1. Retrofit [4] Retrofit là một thư viện mạnh mẽ giúp đơn giản hóa quá trình thực hiện các yêu cầu mạng trong ứng dụng Android.
Hỗ trợ định nghĩa các API mạng dưới dạng các interface và cung cấp cơ chế chuyển đổi các phản hồi từ máy chủ thành các đối tượng trong ứng dụng. Việc sử dụng Retrofit trong ứng dụng Android giúp giảm độ phức tạp khi tương tác với API được cung cấp từ phía back-end, việc triển khai linh hoạt với các cú pháp đơn giản để thực hiện các yêu cầu mạng Retrofit hỗ trợ Converter Factory, giúp chuyển đổi dữ liệu giữa các định dạng như JSON hoặc XML và các đối tượng Kotlin một cách dễ dàng. Hilt [5] Hilt là một thư viện Dependency Injection (DI) được phát triển bởi Google dành cho Android. Nó giúp quản lý và cung cấp các đối tượng (dependencies) một cách tự 28 động, giảm độ phức tạp của việc quản lý dependency trong ứng dụng.
Một số đặc điểm quan trọng của Hilt: ▪ Đơn giản và Tích hợp: Hilt được thiết kế để tích hợp mạnh mẽ với Android, và việc sử dụng nó rất đơn giản. Nó sử dụng các tính năng của Dagger 2 để cung cấp một giải pháp DI hiệu quả. ▪ Scoped Injection: Hilt hỗ trợ các khái niệm về scope injection, giúp quản lý vòng đời của các đối tượng dependency trong ứng dụng Android. Nền tảng hệ thống 1.js, một cơ sở hạ tầng phát triển xây dựng trên Chrome’s V8 JavaScript runtime, đã được chọn làm nền tảng trọng điểm cho việc triển khai backend trong dự án xây dựng ứng dụng mạng xã hội.js nổi bật với mô hình không đồng bộ, giúp xử lý đồng thời nhiều yêu cầu mạng một cách linh hoạt, đặt nền tảng cho việc tối ưu hiệu suất và đáp ứng của hệ thống.
Điều này trở thành một ưu điểm quan trọng trong ngữ cảnh của dự án mạng xã hội, nơi mà sự nhanh chóng và đáng tin cậy trong xử lý yêu cầu là yếu tố quyết định.js không chỉ mang lại hiệu suất cao mà còn mở ra cơ hội tận dụng nhiều thư viện mạnh mẽ có sẵn, giúp tối ưu hóa và giảm thời gian phát triển.