Thiết lập môi trường (Kotlin Multiplatform)

Kotlin Multiplatform (KMP) cho phép chia sẻ đoạn mã Kotlin trên nhiều nền tảng. Trước khi bắt đầu tạo ứng dụng bằng KMP, bạn cần thiết lập môi trường theo mô tả trong tài liệu này. Bạn cũng có thể tham khảo tài liệu chính thức của Jetbrain.

Cài đặt hoặc cập nhật các công cụ cần thiết

  • Cài đặt hoặc cập nhật Android Studio lên phiên bản ổn định mới nhất.
  • Cập nhật trình bổ trợ Kotlin đi kèm với Android Studio lên phiên bản mới nhất để tránh các vấn đề về khả năng tương thích.
  • (Không bắt buộc) Để phát triển iOS, hãy cài đặt Xcode để tạo giao diện người dùng và thêm mã Swift hoặc Objective-C nếu cần.

Tạo một dự án Kotlin Multiplatform

Bạn có thể sử dụng trình hướng dẫn Kotlin Multiplatform của Jetbrains để tạo một dự án KMP mới. Hãy nhớ chọn chế độ Không chia sẻ giao diện người dùng để giữ nguyên giao diện người dùng.

Cấu trúc dự án

Các dự án KMP có cấu trúc dự án tương tự như các dự án Android.

Dự án KMP chứa các mô-đun dành riêng cho nền tảng cùng với một mô-đun dùng chung. Thêm mã dành riêng cho nền tảng của bạn vào mô-đun có liên quan. Ví dụ: thêm giao diện người dùng của ứng dụng Android trong mô-đun androidApp và giao diện người dùng của ứng dụng iOS trong iosApp. Bất kỳ đoạn mã nào bạn muốn chia sẻ giữa các nền tảng sẽ nằm trong mô-đun được chia sẻ.

Mô-đun dùng chung sử dụng Gradle làm hệ thống xây dựng giống như phần còn lại của dự án. Bạn có thể khai báo các phần phụ thuộc phổ biến và dành riêng cho nền tảng bằng cách sử dụng các nhóm tài nguyên. Ví dụ: nếu ứng dụng của bạn dùng Ktor để kết nối mạng, bạn cần thêm phần phụ thuộc OkHttp cho Android và phần phụ thuộc darwin cho iOS. Lưu ý rằng một số thư viện chỉ yêu cầu các phần phụ thuộc phổ biến và không cần các phần phụ thuộc dành riêng cho nền tảng.

sourceSets {
   commonMain.dependencies {
       //put your multiplatform dependencies here
       //...
       implementation(libs.ktor.client.core)
       implementation(libs.ktor.client.content.negotiation)
       implementation(libs.ktor.serialization.kotlinx.json)
       //...
   }
   androidMain.dependencies {
       implementation(libs.ktor.client.okhttp)
   }
   iosMain.dependencies {
       implementation(libs.ktor.client.darwin)
   }
}

Khi bạn thêm một thư viện mới vào mô-đun dùng chung của ứng dụng, hãy nhớ kiểm tra các phần phụ thuộc bắt buộc đối với từng nền tảng.