2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Kotlin Multiplatform est un outil qui nous permet d'écrire du code dans le même langage de programmation (Kotlin), qui peut s'exécuter sur différents appareils en même temps, comme les téléphones mobiles, les ordinateurs et les pages Web. Cela permet de gagner du temps car vous n'avez pas besoin de réécrire la même fonctionnalité pour chaque appareil.
Fonctionnalité 1 : Partage de code – Le code logique, tel qu'une fonction de calcul, peut être écrit une seule fois puis utilisé dans les applications Android et iOS.
Fonctionnalité 2 : Code spécifique à la plate-forme – Un code spécifique peut être écrit pour chaque plate-forme afin de gérer des fonctionnalités uniques à la plate-forme, telles que l'utilisation de la caméra de l'appareil. Par exemple, utilisez l'API Camera d'Android pour prendre des photos dans une application Android et utilisez UIImagePickerController d'iOS dans une application iOS pour prendre des photos.
Caractéristique 3 : Interopérabilité – Kotlin Multiplatform peut interagir avec le code Java, Swift ou Objective-C existant, ce qui facilite son intégration dans les projets existants.
Caractéristique 4 : Différentes périodes de compilation – le code sur androidMain est compilé à l'aide de kotlin/jvm dans un code qu'Android peut comprendre, et le code sur iosMain est compilé à l'aide de kotlin/native dans un code que iOS peut comprendre.
étape:
1. Définir la logique partagée : définissez d'abord la logique métier commune dans un module partagé (c'est-à-dire commonMain). Ces codes ne dépendent d'aucune plateforme, ils peuvent donc s'exécuter sur n'importe quelle plateforme. Ce module partagé est également équivalent à la base de cross. -fin du partage.
Logique partagée (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()}!"
}
}
Le code ci-dessus est le code partagé dans kmp cross-end. Ces codes peuvent s'exécuter à la fois sur Android et iOS. Cependant, ce code renvoie finalement un format de chaîne. Platform.name doit être obtenu à partir de cette chaîne, ce qui nécessite un cross-end. terminal, car la syntaxe kotlin pour obtenir platform.name est différente sur Android et iOS, nous devons donc définir une excuse pour le dire à androidMain et iosMain, et vous donnez respectivement la logique d'obtention de platform.name, je vais m'en occuper, puis ils commenceront à mettre en œuvre cette logique. Le code est le suivant.
interface Platform {
val name: String
}
expect fun getPlatform(): Platform
2. Implémentation spécifique à la plate-forme : dans androidMain et iosMain, fournissez une implémentation spécifique de l'interface dans commonMain et écrivez du code pour certaines exigences spécifiques à la plate-forme.
Implémentation de la plateforme Android (androidMain) :
import android.os.Build
class AndroidPlatform : Platform {
override val name: String = "Android ${Build.VERSION.SDK_INT}"
}
actual fun getPlatform(): Platform = AndroidPlatform()
Implémentation de la plateforme iOS (iosMain) :
import platform.UIKit.UIDevice
class IOSPlatform: Platform {
override val name: String = UIDevice.currentDevice.systemName() + " " + UIDevice.currentDevice.systemVersion
}
actual fun getPlatform(): Platform = IOSPlatform()
Les deux ont dit docilement : « D'accord, frère, nous allons l'implémenter pour vous. » Le côté Android a dit : « Frère, c'est comme ça que je l'ai implémenté », et le côté iOS a dit : « Frère, c'est comme ça que je l'ai implémenté. ça~~~"