หากต้องการสร้างโมดูล Kotlin Multiplatform (KMP) ภายในโปรเจ็กต์ Android ให้ใช้เทมเพลตโมดูลที่ใช้ร่วมกันของ Kotlin Multiplatform ซึ่งพร้อมใช้งานใน Android Studio Meerkat และปลั๊กอิน Android Gradle 8.8.0 ขึ้นไป
เทมเพลตโมดูลจะสร้างโมดูลใหม่โดยอัตโนมัติด้วยการกำหนดค่าขั้นต่ำที่กำหนดเป้าหมายไปยังแพลตฟอร์ม Android และ iOS นอกจากนี้ KMP ยังรองรับเป้าหมายอื่นๆ เช่น เดสก์ท็อปและเว็บ ซึ่งคุณสามารถเพิ่มลงในโมดูลได้ในภายหลัง ดูรายการทั้งหมดได้ที่ความเสถียรของแพลตฟอร์มที่รองรับ หากต้องการประกาศเป้าหมาย โปรดดูเป้าหมายในข้อมูลอ้างอิง DSL ของ Gradle แบบหลายแพลตฟอร์ม
ตั้งค่าโมดูล KMP ที่แชร์
หากต้องการสร้างโมดูล KMP ที่แชร์ ให้ทำตามขั้นตอนต่อไปนี้
- เลือกไฟล์ > ใหม่ > โมดูลใหม่
- เลือกเทมเพลต Kotlin Multiplatform Shared Module ในแผงเทมเพลต
ฟิลด์ในเทมเพลตมีดังนี้
- ชื่อโมดูล - กำหนดชื่อโมดูล Gradle รวมถึงชื่อเฟรมเวิร์ก iOS (เปลี่ยนได้ในภายหลัง)
- Package name – กำหนดชื่อแพ็กเกจสำหรับไฟล์ในโมดูลนี้
- คลิกเสร็จสิ้นและอนุญาตให้ Gradle ซิงค์กับโปรเจ็กต์ นอกจากนี้ ระบบอาจแจ้งให้คุณเพิ่มไฟล์โมดูลที่สร้างขึ้นใหม่ลงในการควบคุมแหล่งที่มาด้วย
เมื่อเสร็จแล้ว มุมมองโปรเจ็กต์ของ Android Studio จะแสดงโมดูลที่แชร์ใหม่พร้อมกับชุดแหล่งที่มาสำหรับแต่ละแพลตฟอร์ม
ลิงก์โมดูลที่แชร์กับแอป Android
วิซาร์ดโมดูลจะไม่เพิ่มโมดูลที่สร้างขึ้นใหม่เป็นทรัพยากร Dependency ลงในโมดูลที่มีอยู่ ขั้นตอนถัดไปคือคุณต้องลิงก์โมดูลที่แชร์กับโมดูล Gradle ที่มีอยู่โมดูลใดโมดูลหนึ่งในลักษณะเดียวกับทรัพยากร Dependency อื่นๆ ของ Android ดังนี้
dependencies {
...
implementation(project(":shared"))
}
เมื่อเปิดใช้แล้ว คุณจะเข้าถึงโค้ดได้ตามปกติ จากแอป Android คุณจะเข้าถึงโค้ดที่พร้อมใช้งานใน androidMain หรือ commonMain ได้
ดูข้อมูลเพิ่มเติมเกี่ยวกับโครงสร้างโปรเจ็กต์ Kotlin Multiplatform ได้ที่ข้อมูลพื้นฐานเกี่ยวกับโครงสร้างโปรเจ็กต์ Kotlin Multiplatform
ตั้งค่าโมดูลที่แชร์ไปยังแอป iOS
Swift ไม่สามารถใช้โมดูล Kotlin ได้โดยตรง และต้องสร้างเฟรมเวิร์กไบนารีที่คอมไพล์แล้ว
เทมเพลตโมดูลใหม่ใน Android Studio จะกำหนดค่าโมดูลที่ใช้ร่วมกันเพื่อสร้างเฟรมเวิร์กสำหรับสถาปัตยกรรม iOS แต่ละรายการ คุณจะเห็นโค้ดต่อไปนี้ในไฟล์ build.gradle.kts ของโมดูลที่แชร์
val xcfName = "sharedKit"
iosX64 {
binaries.framework {
baseName = xcfName
}
}
iosArm64 {
binaries.framework {
baseName = xcfName
}
}
iosSimulatorArm64 {
binaries.framework {
baseName = xcfName
}
}
ดูข้อมูลเกี่ยวกับการกำหนดสถาปัตยกรรมประเภทอื่นๆ ได้ที่โครงสร้างโปรเจ็กต์แบบลำดับชั้น
ลิงก์ไลบรารีที่ใช้ร่วมกันในโปรเจ็กต์ iOS
หากต้องการเปิดใช้การเข้าถึงโค้ดที่แชร์จากโปรเจ็กต์ iOS ให้เพิ่มระยะสคริปต์เพื่อสร้างเฟรมเวิร์ก Kotlin ก่อนคอมไพล์แหล่งที่มา Swift โดยทำดังนี้
- คลิกขวาที่ไฟล์ใน Android Studio แล้วเลือก Open In และ Open in Associated Application ซึ่งจะเปิดแอป iOS ใน Xcode
- เปิดการตั้งค่าโปรเจ็กต์โดยดับเบิลคลิกชื่อโปรเจ็กต์ในตัวนำทางโปรเจ็กต์
- เปลี่ยนชื่อเรียกใช้สคริปต์เริ่มต้นเป็นคอมไพล์เฟรมเวิร์ก Kotlin เพื่อให้ระบุสิ่งที่เฟสนี้ทำได้ดีขึ้น ดับเบิลคลิกชื่อเรียกใช้สคริปต์เพื่อแก้ไข
- ขยายระยะการสร้าง และในช่องข้อความ Shell ให้ป้อนโค้ดสคริปต์ต่อไปนี้
ลากเฟสเรียกใช้สคริปต์ไปไว้ก่อนเฟสคอมไพล์แหล่งที่มา
รูปที่ 6 เรียกใช้เฟสการสร้างสคริปต์ก่อนคอมไพล์แหล่งที่มา สร้างโปรเจ็กต์ใน Xcode โดยคลิก ⌘B หรือไปที่เมนูผลิตภัณฑ์ แล้วเลือกสร้าง
เมื่อสร้างสำเร็จ คุณจะเห็นไอคอนต่อไปนี้
เข้าถึงโค้ดที่แชร์ในแอป iOS
หากต้องการยืนยันว่าแอป iOS สามารถเข้าถึงโค้ดจากโมดูลที่แชร์ได้สำเร็จ ให้ทำดังนี้
- ในโปรเจ็กต์ iOS ให้เปิดไฟล์
ContentView.swiftที่Sources/View/ContentView.swift - เพิ่มการนำเข้า
sharedKitที่ด้านบนของไฟล์ - แก้ไขมุมมองข้อความเพื่อรวมข้อมูล
Platform_iosKt.platform()ในสตริงที่แสดงดังนี้
การอัปเดตนี้จะตรวจสอบว่าแอปสามารถเรียกใช้ฟังก์ชัน platform() จากโมดูลที่แชร์ได้หรือไม่ ซึ่งควรแสดงผลเป็น "iOS" เมื่อทำงานบนแพลตฟอร์ม iOS
แหล่งข้อมูลเพิ่มเติม
- หากคุณเพิ่งเริ่มพัฒนา KMP โปรดดูคำแนะนำเพิ่มเติมในเอกสารประกอบอย่างเป็นทางการของ KMP
- หากคุณเพิ่งเริ่มพัฒนา iOS โปรดดูเอกสารประกอบเกี่ยวกับพื้นฐานของ Swift
- สำหรับปัญหาการตั้งค่า KMP ที่พบบ่อย โปรดดูการแก้ปัญหาในคู่มือเริ่มต้นใช้งาน KMP ฉบับย่อ
- ดูแอปตัวอย่างได้ที่ตัวอย่าง Kotlin Multiplatform สำหรับ Android