Κοινή χρήση τεχνολογίας

Kotlin MultiPlatform (KMP)

2024-07-12

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

Kotlin MultiPlatform

Εισαγάγετε την περιγραφή της εικόνας εδώ

1.Τι είναι το KMP;

Το Kotlin Multiplatform είναι ένα εργαλείο που μας επιτρέπει να γράφουμε κώδικα στην ίδια γλώσσα προγραμματισμού (Kotlin), ο οποίος μπορεί να εκτελεστεί σε διαφορετικές συσκευές ταυτόχρονα, όπως κινητά τηλέφωνα, υπολογιστές και ιστοσελίδες. Κάνοντας αυτό εξοικονομείτε χρόνο, επειδή δεν χρειάζεται να ξαναγράψετε την ίδια λειτουργία για κάθε συσκευή.

2. Ποια είναι τα χαρακτηριστικά;

Δυνατότητα 1: Κοινή χρήση κώδικα – Ο λογικός κώδικας, όπως μια συνάρτηση υπολογισμού, μπορεί να γραφτεί μία φορά και στη συνέχεια να χρησιμοποιηθεί σε εφαρμογές Android και iOS.
Δυνατότητα 2: Κωδικός για συγκεκριμένη πλατφόρμα – Μπορεί να γραφτεί συγκεκριμένος κώδικας για κάθε πλατφόρμα για να χειριστεί χαρακτηριστικά μοναδικά για την πλατφόρμα, όπως η χρήση της κάμερας της συσκευής. Για παράδειγμα, χρησιμοποιήστε το API Camera του Android για να τραβήξετε φωτογραφίες σε μια εφαρμογή Android και χρησιμοποιήστε το UIImagePickerController του iOS σε μια εφαρμογή iOS για να τραβήξετε φωτογραφίες.
Χαρακτηριστικό 3: Διαλειτουργικότητα – Η πολυπλατφόρμα Kotlin μπορεί να διαλειτουργήσει με υπάρχοντα κώδικα Java, Swift ή Objective-C, καθιστώντας εύκολη την ενσωμάτωση σε υπάρχοντα έργα.
Δυνατότητα 4: Διαφορετικές περίοδοι μεταγλώττισης – ο κώδικας στο androidMain μεταγλωττίζεται με χρήση kotlin/jvm σε κώδικα που μπορεί να κατανοήσει το Android και ο κώδικας στο iosMain μεταγλωττίζεται με χρήση kotlin/native σε κώδικα που μπορεί να κατανοήσει το ios.

3. Τρόπος διασταύρωσης συναρτήσεων

βήμα:
1. Ορισμός της κοινής λογικής: Πρώτα ορίστε την κοινή επιχειρηματική λογική σε μια κοινόχρηστη ενότητα (δηλαδή, commonMain Αυτοί οι κώδικες δεν εξαρτώνται από καμία πλατφόρμα, επομένως μπορούν να εκτελεστούν σε οποιαδήποτε πλατφόρμα). - Τέλος κοινής χρήσης.
Κοινή λογική (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

Ο παραπάνω κώδικας είναι ο κοινόχρηστος κώδικας σε kmp cross-end. Αυτοί οι κωδικοί μπορούν να εκτελεστούν τόσο σε Android όσο και σε iOS. τερματικό, επειδή η σύνταξη kotlin για τη λήψη του platform.name είναι διαφορετική σε Android και ios, οπότε πρέπει να ορίσουμε μια δικαιολογία για να πούμε στο androidMain και στο iosMain, και εσείς οι δύο δίνετε τη λογική απόκτησης του platform.name αντίστοιχα. και μετά θα αρχίσουν να εφαρμόζουν αυτή τη λογική Ο κώδικας είναι ο εξής

interface Platform {
    val name: String
}

expect fun getPlatform(): Platform

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

2. Υλοποίηση συγκεκριμένης πλατφόρμας: Στο androidMain και στο iosMain, παρέχετε συγκεκριμένη υλοποίηση της διεπαφής στο commonMain και γράψτε κώδικα για ορισμένες απαιτήσεις συγκεκριμένης πλατφόρμας.
Υλοποίηση πλατφόρμας 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

Υλοποίηση πλατφόρμας 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

Οι δυο τους είπαν υπάκουα, "Εντάξει, αδερφέ, θα το εφαρμόσουμε για σένα." αυτό~~~"