Để tạo mô-đun Kotlin đa nền tảng (KMP) trong dự án Android, hãy sử dụng mẫu Kotlin Multiplatform Shared Module (Mô-đun dùng chung Kotlin đa nền tảng), có trong Android Studio Meerkat và Trình bổ trợ Android cho Gradle phiên bản 8.8.0 trở lên.
Mẫu mô-đun tự động tạo một mô-đun mới với cấu hình tối thiểu nhắm đến các nền tảng Android và iOS.
Thiết lập mô-đun KMP dùng chung
Để tạo mô-đun KMP dùng chung, hãy làm theo các bước sau:
- Chọn File > New > New Module (Tệp > Mới > Mô-đun mới)
- Chọn mẫu Kotlin Multiplatform Shared Module (Mô-đun dùng chung Kotlin đa nền tảng) trong bảng điều khiển Templates (Mẫu):
![Tạo mô-đun KMP mới](https://developer.android.com/static/kotlin/images/kmp_new_module.png?hl=vi)
Trong mẫu có các trường như sau:
- Module name (Tên mô-đun) – xác định tên mô-đun Gradle cũng như tên khung iOS (có thể thay đổi sau)
- Package name (Tên gói) – xác định tên gói cho các tệp trong mô-đun này
- Nhấp vào Finish (Hoàn tất) và cho phép Gradle đồng bộ hoá với dự án. Bạn cũng có thể được nhắc thêm các tệp mô-đun mới tạo vào chế độ kiểm soát nguồn.
Sau khi hoàn tất, Project View (Chế độ xem dự án) của Android Studio sẽ hiển thị mô-đun dùng chung mới cùng với một nhóm tài nguyên cho mỗi nền tảng.
![Chế độ xem dự án hiển thị các mô-đun dùng chung mới](https://developer.android.com/static/kotlin/images/kmp_project_structure.png?hl=vi)
Liên kết mô-đun dùng chung với ứng dụng Android
Trình hướng dẫn mô-đun không thêm mô-đun mới tạo làm phần phụ thuộc vào bất kỳ mô-đun nào hiện có. Tiếp theo, bạn cần liên kết mô-đun dùng chung với một trong các mô-đun Gradle hiện có tương tự như các phần phụ thuộc Android khác
dependencies {
...
implementation(project(":shared"))
}
Sau khi bật, bạn có thể truy cập vào mã như bình thường. Trong ứng dụng Android, bạn có thể truy cập vào mã có trong androidMain hoặc trong commonMain.
Để biết thêm thông tin về cấu trúc dự án Kotlin Multiplatform, hãy xem kiến thức cơ bản về cấu trúc dự án Kotlin Multiplatform
Thiết lập mô-đun dùng chung cho ứng dụng iOS
Swift không thể sử dụng trực tiếp các mô-đun Kotlin và yêu cầu phải tạo một khung nhị phân đã biên dịch.
Mẫu mô-đun mới trong Android Studio định cấu hình mô-đun dùng chung để tạo khung cho từng cấu trúc iOS. Bạn có thể tìm thấy đoạn mã sau trong tệp build.gradle.kts
của mô-đun dùng chung:
val xcfName = "sharedKit"
iosX64 {
binaries.framework {
baseName = xcfName
}
}
iosArm64 {
binaries.framework {
baseName = xcfName
}
}
iosSimulatorArm64 {
binaries.framework {
baseName = xcfName
}
}
Hãy xem phần Cấu trúc dự án phân cấp để biết thông tin về cách xác định các loại cấu trúc khác.
Liên kết thư viện dùng chung trong dự án iOS
Để cho phép truy cập vào mã dùng chung từ dự án iOS, hãy thêm một giai đoạn tập lệnh để tạo khung Kotlin trước khi biên dịch các nguồn Swift:
- Nhấp chuột phải vào tệp trong Android Studio rồi chọn Open In (Mở trong) và Open in Associated Application (Mở trong ứng dụng được liên kết). Thao tác này sẽ mở ứng dụng iOS trong Xcode.
![Mở trong Ứng dụng được liên kết](https://developer.android.com/static/kotlin/images/kmp_open_in.png?hl=vi)
- Mở phần cài đặt dự án bằng cách nhấp đúp vào tên dự án trong trình điều hướng dự án
![Hộp thoại cài đặt dự án Xcode](https://developer.android.com/static/kotlin/images/kmp_xcode_1.png?hl=vi)
- Thay đổi tên Run Script (Chạy tập lệnh) mặc định thành Compile Kotlin Framework (Biên dịch khung Kotlin) để xác định rõ hơn chức năng của giai đoạn này. Nhấp đúp vào tiêu đề Run Script (Chạy tập lệnh) để chỉnh sửa.
- Mở rộng giai đoạn xây dựng và trong trường văn bản Shell, hãy nhập mã tập lệnh sau:
![Thêm giai đoạn bản dựng tập lệnh chạy mới](https://developer.android.com/static/kotlin/images/kmp_xcode_runscript.png?hl=vi)
Kéo giai đoạn Run Script (Chạy tập lệnh) trước giai đoạn Compile Sources (Biên dịch nguồn).
Hình 6. Chạy giai đoạn bản dựng tập lệnh trước khi biên dịch nguồn Tạo dự án trong Xcode bằng cách nhấp vào ⌘B hoặc chuyển đến trình đơn Product (Sản phẩm) rồi chọn Build (Tạo).
Khi bản dựng thành công, bạn sẽ thấy biểu tượng sau.
![Bản dựng thành công hiển thị trong Xcode](https://developer.android.com/static/kotlin/images/kmp_xcode_success.png?hl=vi)
Truy cập vào mã được chia sẻ trong ứng dụng iOS
Để xác minh rằng ứng dụng iOS có thể truy cập thành công vào mã từ mô-đun dùng chung, hãy làm như sau:
- Trong dự án iOS, hãy mở tệp
ContentView.swift
tại:Sources/View/ContentView.swift
- Thêm lệnh nhập
sharedKit
ở đầu tệp. - Sửa đổi thành phần hiển thị Văn bản để đưa thông tin
Platform_iosKt.platform()
vào chuỗi hiển thị như sau:
Bản cập nhật này kiểm tra xem ứng dụng Fruitties có thể gọi hàm platform()
từ mô-đun dùng chung hay không. Hàm này sẽ trả về "iOS" khi chạy trên nền tảng iOS.
![Trình mô phỏng Xcode đang chạy ứng dụng iOS](https://developer.android.com/static/kotlin/images/kmp_xcode_sim.png?hl=vi)
Tài nguyên khác
Nếu bạn mới làm quen với việc phát triển KMP, hãy xem tài liệu chính thức về KMP để biết thêm hướng dẫn. Nếu bạn mới bắt đầu phát triển iOS, hãy xem tài liệu về Kiến thức cơ bản về Swift.