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

Kotlin Multiplatform (KMP) (Tính năng Đa nền tảng của Kotlin) cho phép chia sẻ đoạn mã Kotlin trên nền tảng khác nhau. Trước khi bắt đầu tạo ứng dụng bằng KMP, bạn cần như được 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ông cụ bắt buộc

  • Cài đặt hoặc cập nhật lên phiên bản ổn định mới nhất của Android Studio.
  • 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 Target-C nếu cần.

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

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

Cấu trúc dự án

Các dự án KMP tuân theo 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ụ: hãy 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ỳ mã nào bạn muốn chia sẻ giữa các nền tảng đều 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 tập hợp nguồn. Ví dụ: nếu ứng dụng của bạn sử dụng Ktor để kết nối mạng, thì bạn cần thêm phần phụ thuộc OkHttp đối với Android và phần phụ thuộc darwin đối với iOS. Lưu ý rằng một số các thư viện chỉ yêu cầu các phần phụ thuộc phổ biến và không cần dành riêng cho từng nền tảng phần phụ thuộc.

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 thư viện mới vào mô-đun chia sẻ của ứng dụng, hãy nhớ kiểm tra các phần phụ thuộc bắt buộc cho mỗi nền tảng.