0Pricing
Kotlin Academy · Lektion

Plattform-APIs

Greifen Sie auf native Funktionen zu

Plattform-APIs ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Kotlin Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.

Auf native Funktionen zugreifen

Gemeinsam genutzter Code benötigt manchmal Gerätefunktionen – etwa Speicher, Einstellungen, die Uhrzeit oder Netzwerkfunktionen. KMM bietet mehrere Möglichkeiten, sauber auf native APIs zuzugreifen.

expect/actual für primitive Werte

Für kleine plattformabhängige Werte verwenden Sie expect/actual. Der gemeinsame Code bleibt übersichtlich, während jede Plattform die Details bereitstellt.

// commonMain
expect fun currentTimeMillis(): Long

// androidMain
actual fun currentTimeMillis(): Long = System.currentTimeMillis()

Dependency Injection von Plattformcode

Ein flexiblerer Ansatz: Definieren Sie im gemeinsamen Code ein Interface und injizieren Sie aus jeder App eine plattformspezifische Implementierung.

// commonMain
interface Storage {
    fun save(key: String, value: String)
    fun load(key: String): String?
}

Android-Implementierung

Android implementiert das Interface mit SharedPreferences und stellt es dem gemeinsamen Code bereit.

// androidMain
import android.content.SharedPreferences

class AndroidStorage(private val prefs: SharedPreferences) : Storage {
    override fun save(key: String, value: String) {
        prefs.edit().putString(key, value).apply()
    }
    override fun load(key: String): String? = prefs.getString(key, null)
}

iOS-Implementierung

iOS implementiert dasselbe Interface mit NSUserDefaults aus dem Foundation-Framework.

// iosMain
import platform.Foundation.NSUserDefaults

class IosStorage : Storage {
    private val defaults = NSUserDefaults.standardUserDefaults
    override fun save(key: String, value: String) = defaults.setObject(value, key)
    override fun load(key: String): String? = defaults.stringForKey(key)
}

Native iOS-APIs aufrufen

Von iosMain aus können Sie Apple-Frameworks direkt aufrufen, da Kotlin/Native dafür Interoperabilitätsbindungen generiert.

import platform.UIKit.UIDevice

fun deviceModel(): String = UIDevice.currentDevice.model

Android-APIs aufrufen

In androidMain steht Ihnen das gesamte Android SDK zur Verfügung, da der Code gegen die Android-Plattform kompiliert wird.

import android.os.Build

fun deviceModel(): String = Build.MODEL

Fertige Multiplatform-Bibliotheken

Oft benötigen Sie keine eigene Interoperabilität. Bibliotheken kapseln gängige Funktionen bereits:

  • multiplatform-settings – Schlüssel-Wert-Speicher
  • Ktor – Netzwerkkommunikation
  • SQLDelight – lokale Datenbank

Implementierungen bereitstellen

Injizieren Sie plattformspezifische Implementierungen beim Start der App, typischerweise über ein DI-Framework wie Koin, damit der gemeinsame Code die passende Implementierung erhält.

// Android: provide AndroidStorage(prefs)
// iOS: provide IosStorage()
// Shared Repository(storage) uses whichever was injected

Den passenden Ansatz wählen

Leitlinien:

  • Kleiner Wert → expect/actual
  • Verhalten mit mehreren Methoden → Interface plus Injection
  • Häufig benötigte Funktion → eine vorhandene Multiplatform-Bibliothek verwenden

Ausführbares Beispiel für eine Abstraktion

Die Idee mit dem Interface lässt sich in einfachem Kotlin umsetzen. Hier dient eine In-Memory-Implementierung als Ersatz für einen plattformspezifischen Speicher.

interface Storage {
    fun save(key: String, value: String)
    fun load(key: String): String?
}

class MemoryStorage : Storage {
    private val map = mutableMapOf<String, String>()
    override fun save(key: String, value: String) { map[key] = value }
    override fun load(key: String): String? = map[key]
}

fun main() {
    val s: Storage = MemoryStorage()
    s.save("name", "Ada")
    println(s.load("name"))
}

Kurzer Test

Sie benötigen eine Speicherfunktion mit mehreren Methoden, die auf jeder Plattform unterschiedlich implementiert wird und sich leicht testen lässt. Welcher Ansatz wird empfohlen?

Zusammenfassung

Sie können sauber auf native Funktionen zugreifen:

  • expect/actual für primitive Werte
  • Gemeinsames Interface plus injizierte plattformspezifische Implementierung für Verhalten
  • Direkte Interoperabilität in androidMain/iosMain
  • Nach Möglichkeit Multiplatform-Bibliotheken wiederverwenden

Damit ist der Kurs KMM Basics abgeschlossen.

Häufig gestellte Fragen

Ist die Lektion „Plattform-APIs“ kostenlos?

Ja — der vollständige Text von „Plattform-APIs“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kotlin Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Plattform-APIs“?

Greifen Sie auf native Funktionen zu Du übst Kotlin Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Kotlin Academy zu starten?

Keine Vorkenntnisse erforderlich. Kotlin Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Plattform-APIs“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Kotlin Academy-Lektion Code schreiben und ausführen?

Ja. Jede Kotlin Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. KMM-Projektstruktur
  2. expect und actual
  3. Geschäftslogik gemeinsam nutzen
  4. Plattform-APIs
← Zurück zu Kotlin Academy