Berbagi teknologi

Kotlin MultiPlatform (KMP)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Kotlin Multiplatform

Masukkan deskripsi gambar di sini

1.Apa itu KMP?

Kotlin Multiplatform adalah alat yang memungkinkan kita menulis kode dalam bahasa pemrograman yang sama (Kotlin), yang dapat dijalankan di perangkat berbeda secara bersamaan, seperti ponsel, komputer, dan halaman web. Melakukan hal ini menghemat waktu karena Anda tidak perlu menulis ulang fungsi yang sama untuk setiap perangkat.

2. Apa saja ciri-cirinya?

Fitur 1: Berbagi Kode – Kode logika, seperti fungsi penghitungan, dapat ditulis satu kali dan kemudian digunakan di aplikasi Android dan iOS.
Fitur 2: Kode khusus platform – Kode spesifik dapat ditulis untuk setiap platform guna menangani fitur unik pada platform, seperti penggunaan kamera perangkat. Misalnya, gunakan API Kamera Android untuk mengambil gambar di aplikasi Android, dan gunakan UIImagePickerController iOS di aplikasi iOS untuk mengambil gambar.
Fitur 3: Interoperabilitas – Multiplatform Kotlin dapat berinteroperasi dengan kode Java, Swift, atau Objective-C yang sudah ada, sehingga memudahkan integrasi ke dalam proyek yang sudah ada.
Fitur 4: Periode kompilasi berbeda – kode di androidMain dikompilasi menggunakan kotlin/jvm menjadi kode yang dapat dipahami Android, dan kode di iosMain dikompilasi menggunakan kotlin/native menjadi kode yang dapat dipahami ios.

3. Bagaimana fungsi lintas terminal

melangkah:
1. Tentukan logika bersama: Pertama-tama tentukan logika bisnis umum dalam modul bersama (yaitu, commonMain). Kode-kode ini tidak bergantung pada platform apa pun, sehingga dapat dijalankan pada platform apa pun. Modul bersama ini juga setara dengan basis untuk lintas -akhir berbagi.
Logika bersama (commonMain):

import kotlin.random.Random
class Greeting {
    private val platform: Platform = getPlatform()

    fun greet(): String {
        val firstWord = if (Random.nextBoolean()) "Hi!" else "Hello!"

        return "$firstWord Guess what this is! > ${platform.name.reversed()}!"
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

Kode di atas adalah kode bersama dalam kmp cross-end. Kode ini dapat berjalan di Android dan iOS. Namun, kode ini akhirnya mengembalikan format string. Platform.name perlu diperoleh dari string ini, yang memerlukan cross-end. terminal, karena cara mendapatkan platform.name berbeda dalam sintaks kotlin di Android dan ios, jadi kita harus menentukan alasan untuk memberi tahu androidMain dan iosMain, dan kalian berdua memberikan logika untuk mendapatkan platform.name masing-masing yang akan saya tangani itu, dan kemudian mereka akan mulai menerapkan logika ini

interface Platform {
    val name: String
}

expect fun getPlatform(): Platform

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2. Implementasi khusus platform: Di androidMain dan iosMain, berikan implementasi spesifik antarmuka di commonMain, dan tulis kode untuk beberapa persyaratan khusus platform.
Implementasi platform Android (androidMain):

import android.os.Build

class AndroidPlatform : Platform {
    override val name: String = "Android ${Build.VERSION.SDK_INT}"
}

actual fun getPlatform(): Platform = AndroidPlatform()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Implementasi platform iOS (iosMain):

import platform.UIKit.UIDevice

class IOSPlatform: Platform {
    override val name: String = UIDevice.currentDevice.systemName() + " " + UIDevice.currentDevice.systemVersion
}

actual fun getPlatform(): Platform = IOSPlatform()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Keduanya berkata dengan patuh, "Baiklah saudara, kami akan menerapkannya untuk Anda." Sisi Android berkata, "Saudaraku, saya menerapkannya seperti ini," dan pihak iOS berkata, "Saudaraku, saya menerapkannya seperti ini~ ~~"