Compartilhamento de tecnologia

Kotlin Multiplataforma (KMP)

2024-07-12

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

Kotlin Multiplataforma

Insira a descrição da imagem aqui

1.O que é KMP?

Kotlin Multiplatform é uma ferramenta que nos permite escrever código na mesma linguagem de programação (Kotlin), que pode ser executado em diferentes dispositivos ao mesmo tempo, como celulares, computadores e páginas web. Isso economiza tempo porque você não precisa reescrever a mesma funcionalidade para cada dispositivo.

2. Quais são as características?

Recurso 1: Compartilhamento de código – O código lógico, como uma função de cálculo, pode ser escrito uma vez e usado em aplicativos Android e iOS.
Recurso 2: Código específico da plataforma – Código específico pode ser escrito para cada plataforma para lidar com recursos exclusivos da plataforma, como o uso da câmera do dispositivo. Por exemplo, use a API Camera do Android para tirar fotos em um aplicativo Android e use o UIImagePickerController do iOS em um aplicativo iOS para tirar fotos.
Recurso 3: Interoperabilidade – Kotlin Multiplatform pode interoperar com código Java, Swift ou Objective-C existente, facilitando a integração em projetos existentes.
Recurso 4: Diferentes períodos de compilação – o código em androidMain é compilado usando kotlin/jvm em um código que o Android pode entender, e o código em iosMain é compilado usando kotlin/native em um código que o ios pode entender.

3. Como cruzar funções de terminal

etapa:
1. Defina a lógica compartilhada: primeiro defina a lógica de negócios comum em um módulo compartilhado (ou seja, commonMain). Esses códigos não dependem de nenhuma plataforma, portanto, podem ser executados em qualquer plataforma. -fim de compartilhamento.
Lógica compartilhada (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

O código acima é o código compartilhado em kmp cross-end. Esses códigos podem ser executados em Android e iOS. No entanto, esse código finalmente retorna um formato de string Platform.name que precisa ser obtido a partir desta string. terminal, porque a sintaxe kotlin para obter platform.name é diferente no Android e iOS, então temos que definir uma desculpa para informar androidMain e iosMain, e vocês dois fornecem a lógica de obtenção de platform.name respectivamente. e então eles começarão a implementar essa lógica. O código é o seguinte.

interface Platform {
    val name: String
}

expect fun getPlatform(): Platform

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

2. Implementação específica da plataforma: em androidMain e iosMain, forneça implementação específica da interface em commonMain e escreva código para alguns requisitos específicos da plataforma.
Implementação da plataforma 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

Implementação da plataforma 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

Os dois disseram obedientemente: “Ok, irmão, vamos implementar isso para você”. O lado Android disse: “Irmão, foi assim que eu implementei”, e o lado iOS disse: “Irmão, foi assim que eu implementei”. isso~~~"