👋 Giới thiệu KMP
KMP là gì?
Phần tiêu đề “KMP là gì?”Kotlin Multiplatform (KMP) là công nghệ cho phép bạn viết code một lần và chạy trên nhiều nền tảng:
- 📱 Android
- 🍎 iOS
- 🖥️ Desktop (Windows, macOS, Linux)
- 🌐 Web
- ⚙️ Backend
Điểm khác biệt với các giải pháp cross-platform khác
Phần tiêu đề “Điểm khác biệt với các giải pháp cross-platform khác”| KMP | Flutter | React Native | |
|---|---|---|---|
| UI | Native hoặc Compose Multiplatform | Custom (Skia) | Native bridge |
| Performance | Native | Near-native | Bridge overhead |
| Logic sharing | ✅ Business logic | UI + Logic | UI + Logic |
| Native integration | Dễ dàng | Cần channel | Cần bridge |
| Language | Kotlin | Dart | JavaScript |
| By | JetBrains | Meta |
KMP vs Compose Multiplatform
Phần tiêu đề “KMP vs Compose Multiplatform”- KMP: Chia sẻ business logic (networking, database, domain…)
- Compose Multiplatform: Chia sẻ cả UI bằng Jetpack Compose
flowchart TD subgraph CMP["🎨 Compose Multiplatform"] UI["UI chung cho Android, iOS, ..."] end
subgraph KMP["🔧 Kotlin Multiplatform (KMP)"] LOGIC["Business logic, data, domain"] end
subgraph Platform["📱 Platform Code"] AND["Android SDK"] IOS["iOS SDK"] JS["JS"] JVM["JVM"] end
CMP --> KMP --> Platform
style CMP fill:#e3f2fd,stroke:#2196f3 style KMP fill:#fff3e0,stroke:#ff9800 style Platform fill:#e8f5e9,stroke:#4caf50Tại sao nên học KMP?
Phần tiêu đề “Tại sao nên học KMP?”1. Giảm thời gian phát triển
Phần tiêu đề “1. Giảm thời gian phát triển”- Viết business logic một lần
- Cập nhật bug fix một chỗ
- Testing tập trung
2. Sử dụng Kotlin - ngôn ngữ hiện đại
Phần tiêu đề “2. Sử dụng Kotlin - ngôn ngữ hiện đại”- Nếu bạn đã biết Kotlin (từ Android), chuyển sang KMP rất nhanh
- Null safety, coroutines, extension functions…
3. Được Google và JetBrains hỗ trợ
Phần tiêu đề “3. Được Google và JetBrains hỗ trợ”- Google dùng KMP trong các app: Google Docs, Drive, Sheets
- JetBrains phát triển tích cực với Android Studio hỗ trợ tốt
4. Native Performance
Phần tiêu đề “4. Native Performance”- Code Kotlin được compile thành native code cho từng platform
- Không có overhead như các giải pháp bridge
5. Dễ tích hợp vào dự án hiện có
Phần tiêu đề “5. Dễ tích hợp vào dự án hiện có”- Có thể thêm KMP vào app Android/iOS đang có
- Không cần viết lại từ đầu
Các use cases phù hợp
Phần tiêu đề “Các use cases phù hợp”✅ Phù hợp
Phần tiêu đề “✅ Phù hợp”- Chia sẻ business logic giữa Android và iOS
- Backend cùng dùng Kotlin
- App có logic phức tạp cần consistency
- Team đã biết Kotlin
⚠️ Cần cân nhắc
Phần tiêu đề “⚠️ Cần cân nhắc”- App đơn giản chỉ cần một platform
- Team không biết Kotlin
- Cần native UI phức tạp đặc thù từng platform
Bắt đầu từ đâu?
Phần tiêu đề “Bắt đầu từ đâu?”Prerequisites (Kiến thức cần có)
Phần tiêu đề “Prerequisites (Kiến thức cần có)”- Ngôn ngữ Kotlin - Bạn cần biết Kotlin trước
- Android cơ bản - Nếu làm mobile
Lộ trình học
Phần tiêu đề “Lộ trình học”Xem Lộ trình học KMP để có hướng dẫn chi tiết.