Teknologian jakaminen

Kotlin MultiPlatform (KMP)

2024-07-12

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

Kotlin MultiPlatform

Lisää kuvan kuvaus tähän

1. Mikä on KMP?

Kotlin Multiplatform on työkalu, jonka avulla voimme kirjoittaa koodia samalla ohjelmointikielellä (Kotlin), joka voi toimia eri laitteilla samanaikaisesti, kuten matkapuhelimissa, tietokoneissa ja verkkosivuilla. Tämä säästää aikaa, koska sinun ei tarvitse kirjoittaa uudelleen samoja toimintoja jokaiselle laitteelle.

2. Mitkä ovat ominaisuudet?

Ominaisuus 1: Code Sharing – Logiikkakoodi, kuten laskentatoiminto, voidaan kirjoittaa kerran ja käyttää sitten sekä Android- että iOS-sovelluksissa.
Ominaisuus 2: Alustakohtainen koodi – Kullekin alustalle voidaan kirjoittaa erityinen koodi, joka käsittelee alustalle ainutlaatuisia ominaisuuksia, kuten laitteen kameran käyttöä. Käytä esimerkiksi Androidin Camera API:ta kuvien ottamiseen Android-sovelluksessa ja iOS:n UIImagePickerControlleria iOS-sovelluksessa kuvien ottamiseen.
Ominaisuus 3: Yhteentoimivuus – Kotlin Multiplatform voi toimia yhdessä olemassa olevan Java-, Swift- tai Objective-C-koodin kanssa, mikä tekee siitä helpon integroinnin olemassa oleviin projekteihin.
Ominaisuus 4: Eri käännösjaksot – androidMainin koodi käännetään kotlin/jvm:n avulla koodiksi, jota Android voi ymmärtää, ja iosMainin koodi käännetään kotlin/natiivia käyttäen koodiksi, jota ios voi ymmärtää.

3. Miten rajat päätetoimintoja

vaihe:
1. Määrittele jaettu logiikka: Määritä ensin yhteinen liiketoimintalogiikka jaetussa moduulissa (eli commonMainissa). Nämä koodit eivät ole riippuvaisia ​​mistään alustasta, joten ne voivat toimia millä tahansa alustalla. Tämä jaettu moduuli vastaa myös ristiin -jakamisen loppu.
Jaettu logiikka (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

Yllä oleva koodi on jaettu KMP-koodissa. Nämä koodit voivat toimia sekä Androidissa että iOS:ssä. Tämä koodi kuitenkin palauttaa merkkijonomuodon tästä merkkijonosta. terminaaliin, koska kotlin-syntaksi platform.nimen hankkimiseen on erilainen Androidissa ja iosissa, joten meidän on määritettävä tekosyy kertoaksemme androidMainille ja iosMainille, ja te kaksi annatte logiikan platform.name:n hankkimiseen, minä käsittelen sen. ja sitten he alkavat toteuttaa tätä logiikkaa Koodi on seuraava

interface Platform {
    val name: String
}

expect fun getPlatform(): Platform

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

2. Alustakohtainen toteutus: Anna androidMainissa ja iosMainissa käyttöliittymän erityinen toteutus commonMainissa ja kirjoita koodi tiettyjä alustakohtaisia ​​vaatimuksia varten.
Android-alustan toteutus (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

iOS-alustan toteutus (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

He sanoivat tottelevaisesti: "Okei, veli, me toteutamme sen puolestasi." se~~~"