Series ứng dụng Kriptofolio — Giới thiệu
Chào mừng đến series bài viết tạo ứng dụng Android hiện đại. Tôi sẽ dùng công cụ và thực hành tốt nhất năm 2018–2019. Tôi làm này để bao quát các chủ đề hot trong Android và獲取 kiến thức bằng cách dạy bạn.
Nếu theo dõi series, bạn học cách phát triển app từ con số 0. Mỗi bài bao quát chủ đề phát triển cụ thể tôi muốn nói. Tôi cố gắng tạo app chất lượng và giải thích quy trình. Bài đầu này là lộ trình dự án.
Nội dung series
- Giới thiệu: Lộ trình xây dựng app Android hiện đại 2018–2019 (bạn đang ở đây)
- Phần 1: Giới thiệu nguyên lý SOLID
- Phần 2: Bắt đầu xây dựng app Android: tạo Mockups, UI, layout XML
- Phần 3: Tất cả về Kiến trúc: khám phá pattern kiến trúc và áp dụng
- Phần 4: Triển khai Dependency Injection với Dagger 2
- Phần 5: Xử lý RESTful Web Services dùng Retrofit, OkHttp, Gson, Glide, Coroutines
Ý tưởng app: "Kriptofolio" (trước là "My Crypto Coins")
Lúc đầu khó nghĩ kế hoạch show mọi trend Android, nhưng cuối tìm ra ý tưởng ưng ý. Liên quan đến lĩnh vực tôi cực quan tâm — blockchain và cryptocurrency. Quyết định tạo app chứa danh mục cryptocurrency và cho biết giá trị quy đổi ra tiền fiat.
Quan trọng cho user: app đảm bảo 100% tin cậy. Không yêu cầu login/đăng ký. Không thu thập dữ liệu user gửi server. Tôi đoán không ai thoải chia sẻ info tiền bạc online.
Dữ liệu đầu tư cryptocurrency của user chỉ lưu local database trong thiết bị Android. Tuy nhiên, để biết giá trị portfolio quy đổi fiat, app dùng Internet lấy tỷ giá mới nhất.
Vì mục đích training, ý tưởng app này tuyệt vời. Thách thức kỹ thuật xử lý dữ liệu — kỹ năng quan trọng xây dựng app hiện đại. Chủ đề tiền bạc nhạy cảm. Đảm bảo tin cậy hơn, tôi phát triển app công khai qua series blog và public code để ai cũng thấy không gì cần giấu.
Chúng ta sẽ dùng gì?
Trước hết, tạo app cần giá cryptocurrency hiện tại. Dữ liệu từ Internet vì luôn thay đổi.
Data API:
CoinMarketCap — trang web phổ biến tổng quan thị trường cryptocurrency. Cung cấp API miễn phí ai cũng dùng, phù hợp làm data provider.
Tiếp, liệt kê trend Android quan trọng nhất phù hợp project:
Ngôn ngữ lập trình:
Kotlin — ngôn ngữ chính thức Android. Expressive, concise, powerful. Quan trọng: interoperable với ngôn ngữ và runtime Android hiện có.
Giới thiệu ngôn ngữ mới là topic hot 2017 cho Android. App phải viết bằng Kotlin. Tôi cũng nói về Kotlin và tính năng trong bài cũ "Let's learn Kotlin by building Android calculator app".
Môi trường phát triển tích hợp (IDE):
Android Studio — IDE chính thức Android. Cung cấp công cụ nhanh nhất xây dựng app mọi loại thiết bị Android. Không có alternative tốt hơn cho native app. Lựa chọn chính không nghi ngờ.
Hệ thống quản lý build dự án:
Gradle — hệ thống quản lý build mục đích chung nâng cao dựa trên Groovy và Kotlin. Hỗ trợ tải và cấu hình tự động dependency/thư viện. Hệ thống build khuyến nghị bởi Google. Tích hợp tốt trong Android Studio, chúng ta dùng nó.
Kiến trúc:
Android Architecture Components — bộ thư viện giúp thiết kế app robust, testable, maintainable.
Model–View–ViewModel (MVVM) — pattern kiến trúc. Khái niệm: tách logic trình bày dữ liệu khỏi business logic chuyển vào class riêng cho sự phân biệt rõ ràng. Team Android đẩy pattern này làm lựa chọn mặc định. Cũng là alternative cho MVC và MVP phổ biến.
Sẽ nói riêng trong series về lựa chọn pattern này, option kiến trúc khác và tổ chức code tốt. Thiết yếu nếu muốn project solid, dễ maintain.
Coroutines — pattern thiết kế concurrency dùng trên Android đơn giản hóa code thực thi bất đồng bộ.
Lưu trữ dữ liệu (Data persistence):
SQLite Database — open source SQL database lưu dữ liệu bền vững vào file text trên thiết bị. Android có sẵn implement SQLite. SQLite hỗ trợ đầy đủ tính năng relational database.
Shared Preferences — API từ Android SDK lưu và truy xuất preference ứng dụng. SharedPreferences đơn giản là tập giá trị dữ liệu lưu bền vững. Cho phép lưu/ truy xuất dạng key-value.
Thư viện (Libraries):
Android Jetpack components:
- AppCompat — thư viện support khiến app phát triển version mới chạy trên version cũ.
- Android KTX — extension Kotlin cho phát triển Android. Mục tiêu: làm dev Android với Kotlin concise, pleasant, idiomatic bằng cách tận dụng extension functions/properties, lambdas, named parameters, parameter defaults.
- Data Binding — thư viện support bind UI component trong layout đến data source trong app dùng declarative format thay vì programmatically.
- Lifecycles — quản lý lifecycle activity và fragment.
- LiveData — observable data holder class thiết kế giải quyết thách thức Android Lifecycle thường gặp, làm app maintainable, testable hơn.
- Room — abstraction layer trên SQLite cho phép truy cập database dễ dàng tận dụng đầy đủ SQLite.
- ViewModel — thiết kế lưu và quản lý data liên quan UI lifecycle-aware. ViewModel cho phép data sống sót qua thay đổi cấu hình (xoay màn hình).
Khác:
- ConstraintLayout — layout linh hoạt, hiệu quả. Layout Editor dùng constraints xác định vị trí UI element. Constraint = kết nối/căn chỉnh đến view khác, parent layout, hoặc guideline ẩn.
- CardView — element hiển thị thông tin dạng card với drop shadow (elevation) và corner radius consistent cross-platform.
- RecyclerView — phiên bản linh hoạt, hiệu quả của ListView. Container render large data set view có thể recycle và scroll hiệu quả.
Third-party:
- Dagger 2 — framework dependency injection hoàn toàn static, compile-time cho Java và Android.
- Retrofit 2 — HTTP client type-safe open source cho Android và Java. Với Retrofit, compose HTTP connection dễ dàng qua interface đơn giản, expressive như API doc.
- OkHttp — HTTP client hiện đại, nhanh, hiệu quả open source hỗ trợ HTTP/2 và SPDY.
- Gson — thư viện Java open source serialize/deserialize Java object to/from JSON.
- Glide — thư viện load ảnh nhanh, hiệu quả cho Android tập trung smooth scrolling. Glide API dễ dùng, pipeline decode resource performant, extensible, auto resource pooling.
Cấu hình project mới
Tạo project từ đầu. Khởi động Android Studio, tạo Project mới, đặt tên "My Crypto Coins", chọn "Basic Activity". Lúc này không gì đặc biệt. Mục tiêu: khởi đầu sạch, tránh phức tạp không cần thiết. Thêm feature sau nếu muốn.
Bắt đầu: bật hỗ trợ Kotlin, target API 23: Android 6.0 (Marshmallow).
Tại sao không target API thấp hơn hoặc cao hơn? Thực tế: cắt hỗ trợ thiết bị cũ tránh compatibility issues khi dev. Tôi sở hữu Nexus 7 (2013) chạy Android 6.0.1, hy vọng test app thật trên nó. ? Vì vậy minimum SDK ảnh hưởng bởi dự án cá nhân.
Cũng như thấy, nhờ IDE tự generate basic activity với fragment support và floating action button. Cảm thấy tất cả hữu ích cho project.
GitHub — hosting dịch vụ version control phổ biến nhất. Dự án open source, tất nhiên dùng.
Tất cả bài series sẽ có commit làm branch riêng, master branch cho source code mới nhất. Link repo cho bạn.
Xem source code trên GitHub
Đó là khởi đầu. Nếu có câu hỏi, góp ý, nhận xét, thoải mái comment. Bây giờ cùng học nào! Phần 2 tiếp theo… ?
Cảm ơn! Thanks for reading! Bài gốc đăng tại blog www.baruckis.com ngày 12/2/2018.