38 điểm bởi xguru 2025-03-12 | 7 bình luận | Chia sẻ qua WhatsApp

Giới thiệu môi trường phát triển ứng dụng Android theo tiêu chuẩn hiện nay

  • Build: gradle
  • Cấu hình build: convention plugin
  • Quản lý dependency: version catalog
  • Áp dụng build cache
  • Phân tích hiệu năng build: build-scan
  • Cấu trúc module: tách theo từng feature
  • Networking - retrofit
  • Mapping json - kotlinx serialization
  • Lưu trữ dữ liệu bền vững - jetpack datastore, room
  • DI - koin
  • Trình tải ảnh - coil
  • UI - compose
  • Giao tiếp giữa View và ViewModel - flow
  • Quản lý chất lượng mã nguồn - ktlint , konsist
  • Kiểm thử đơn vị - junit 4

7 bình luận

 
kipsong133 2025-03-13

Cảm ơn bạn về bài viết hay.

 
ganadist 2025-03-12

Là người bằng một cách nào đó đã ổn định với vai trò kỹ sư build ứng dụng Android, nếu để lại chút ý kiến thì..

Build: gradle

Dù rất lớn hay rất phức tạp thì vẫn phải dùng gradle... (nhìn xa xăm)
Để cải thiện hiệu năng build của gradle trong các dự án rất lớn hoặc phức tạp, các dự án dưới đây đang được thúc đẩy, nên nếu đang dùng gradle cho dự án lớn thì tốt hơn là nên chuẩn bị migration từ sớm.

Cấu hình module: tách theo từng feature

Cá nhân tôi cho rằng không nhất thiết phải phơi bày architecture layer ra build system.
Trong trường hợp ứng dụng tôi đang quản lý, tôi để feature-api / feature-impl được phơi bày ra build system dưới dạng module.

  • feature-app:
    • mô hình dữ liệu, hoặc interface liên kết với module khác
  • feature-impl:
    • phần triển khai thực tế của feature

Nếu cấu hình như vậy, thay đổi mã trong feature-impl sẽ không ảnh hưởng đến các module khác đang tham chiếu feature-api (cô lập dependency), nên rất hữu ích để cải thiện incremental build và tăng build cache hit rate.

Kiểm thử đơn vị - junit 4

Có vẻ đây là điều mà quyết định của Google đã đóng vai trò lớn.

 
ganadist 2025-03-12

Tuy nhiên, để áp dụng công nghệ mới nhất (?) thì JUnit4 khá thường xuyên trở thành vật cản, nên cá nhân tôi cũng có một mong muốn nho nhỏ là nó sẽ được chuyển sang JUnit5.
https://docs.gradle.com/develocity/test-distribution/

Dùng junit-vintage-engine thì có thể chạy các bài kiểm thử JUnit4 trên JUnit5 mà không cần sửa đổi nhiều, nhưng overhead là khá lớn. (chậm hơn khoảng 20%)

 
kingori 2025-03-12

Ồ, thật là một vinh dự cho dòng họ Huh.

 
gera1d 2025-03-14

Tôi là Wilson!

 
brainer 2025-03-12

Ừm.. nói thêm một chút thì trong vài năm gần đây đã xuất hiện hiện tượng khá lạ là phần lớn start-up dùng Flutter, còn các công ty lớn như META, OpenAI thì lại chọn native..

 
tsboard 2025-03-12

Đúng lúc năm nay tôi cũng định thử làm một ứng dụng Android, nên đây đã là một hướng dẫn hữu ích. haha