https://a.storyblok.com/f/270183/1368x665/fd3704a54c/25sep_dev-blog_android-memory.jpg

Achtung Android-Entwickler: 16 KB Speicher Seitengrößen Update

Zuletzt aktualisiert am September 18, 2025

Lesedauer: 3 Minuten

Einführung

Google hat einige Ankündigungen die für Android-Entwickler sehr wichtig sind. Alle neuen Apps und Updates für bestehende Apps, die auf Android 15+ Geräte abzielen müssen ab dem 1. November 2025 auf 64-Bit-Geräten 16-KB-Speicher-Seitengrößen unterstützen. Zuvor mussten nur 4 KB Speicherseitengrößen unterstützt werden.

In diesem Beitrag wird nicht nur erklärt, was und warum die Änderung stattfindet, sondern auch, wie Sie Ihre Android-Anwendung aktualisieren, die das Vonage Client SDK. Außerdem wird eine Lösung für die Audioaufzeichnung auf Android 14-Geräten vorgestellt.

Hinweis: Das Vonage Video Client SDK unterstützt Speicherseitengrößen von 16 KB ab Version 2.30.0.

Was und Warum

Android ändert die Art und Weise, wie es den Speicher auf der Systemebene verwaltet, und das könnte sich auf Ihre App auswirken. Hier ist, was Sie wissen müssen:

Was ist eine Seitengröße? Eine Seite ist ein fester Speicherblock, den das Betriebssystem Ihres Geräts den Anwendungen zuweist. Stellen Sie sich das wie einen Container in Standardgröße vor - der Speicher Ihrer Anwendung muss in diese Container gepackt werden. Derzeit verwendet Android 4 KB-Seiten (wie kleine Container), aber neuere Geräte verwenden 16 KB-Seiten (größere Container).

Wenn Ihre Anwendung 20 MB RAM benötigt, stellt Ihnen das System derzeit 5.120 kleine Container (je 4 KB) zur Verfügung. Mit 16KB-Seiten würden Sie stattdessen 1.280 größere Container erhalten.

Warum nimmt Android diese Änderung vor? Größere Seitengrößen bringen mehrere Vorteile mit sich:

  • Schnellerer Start von Anwendungen bei geringerem Stromverbrauch

  • Kürzere Bootzeiten für Geräte

  • Bessere Gesamtleistung des Systems

Hat dies Auswirkungen auf meine Anwendung? Diese Änderung wirkt sich in erster Linie auf Anwendungen aus, die nativen Code - Bedeutung:

  • Anwendungen, die das Android NDK verwenden

  • Anwendungen mit nativen Bibliotheken (C/C++-Code)

  • Apps, die SDKs von Drittanbietern verwenden, die native Komponenten enthalten (wie das Vonage Client SDK)

Wenn Ihre Anwendung ein reines Java/Kotlin-System ohne native Abhängigkeiten ist, können Sie hier aufhören zu lesen.

Welche Probleme können auftreten? Bei Apps mit nativem Code können Probleme auftreten:

  • Probleme bei der Speicherausrichtung führen zu Abstürzen

  • Kompatibilitätsprobleme mit älteren nativen Bibliotheken

  • Unerwartetes Verhalten bei der Speicherzuweisung

Was sollten Sie tun? Google Play wird verlangen, dass Apps mit einer Seitengröße von 16 KB kompatibel sind. Zur Vorbereitung:

  1. Folgen Sie dieser Anleitung, um Ihre Implementierung des Vonage Client SDK zu aktualisieren

  2. Aktualisieren Sie alle nativen Bibliotheken auf Versionen, die 16KB-Seiten unterstützen

  3. Testen Sie Ihre Anwendung auf Geräten mit 16KB-Seiten (oder auf dafür konfigurierten Emulatoren)

  4. Überprüfen Sie Ihren NDK-Code auf hartkodierte Annahmen zur Seitengröße

Damit wird sichergestellt, dass Ihre Anwendung reibungslos funktioniert, wenn die ersten Geräte mit 16 KB Seitengröße auf den Markt kommen.

Aktualisieren Ihrer Bewerbung

Voraussetzungen

  • Ein Android-Projekt mit Gradle-Einrichtung.

  • Zugriff auf das Vonage Client SDK.

  • Minimum Android API 36 als Kompilier- und Ziel-SDK.

1. Aktualisieren Sie die Vonage Android SDK Version

Aktualisieren Sie zunächst Ihre Gradle-Konfiguration, um das neue SDK und die Android API 36 zu verwenden.

In Ihrer app/build.gradle Datei:

android {
    ...
    compileSdk 36
    defaultConfig {
        ...
        targetSdk 36
        ...
    }
}

dependencies {
    ...
    // Vonage Client SDK
    implementation("com.vonage:client-sdk-voice:2.1.0")
}

2. Wenden Sie den Android 14+ Audio Hotfix an

Ab API-Level 34 (Android 14) benötigt Android einen Foreground Service (FGS), um Audio aufzuzeichnen - auch wenn sich die App im Vordergrund befindet.

Starten Sie eine FGS, wenn Sie einen ausgehenden oder eingehenden Anruf entgegennehmen.

Ausgehende Anrufe

Wenn Sie einen ausgehenden Anruf tätigen:

client.serverCall(context) { err, callId ->
    err?.let {
        println("Error starting outbound call: $it")
    } ?: callId?.let {
        println("Start outbound Call success: $it")
        requireActivity().getSharedPreferences("legid", Context.MODE_PRIVATE).edit().apply {
            putString("legid", it)
            apply()
        }
        activeCallId = it
        telecomHelper.startOutgoingCall(it, "SERVER-CALL")        

        // Required on API 34+: Start FGS for audio recording
        startForegroundService(requireContext())
    }
}

Eingehende Anrufe

Bei der Bearbeitung eingehender Anrufe:

client.setCallInviteListener { callId, from, type ->
    activeCallId = callId
    println("Call from: $from, via channel $callId, channelType: $type")
    telecomHelper.startIncomingCall(callId, from, type)

    // Required on API 34+: Start FGS for audio recording
    startForegroundService(requireContext())
}

3. Hinzufügen eines Vordergrunddienstes mit Benachrichtigung

Android verlangt, dass jeder FGS, der Audio aufnimmt, eine dauerhafte Benachrichtigung anzeigt, die den Benutzer darüber informiert, dass die Aufnahme aktiv ist.

Sie müssen eine AudioRecorderService. Eine Referenzimplementierung ist hier verfügbar: AudioRecorderService.kt (GitHub)

Zusammenfassung

Zur Unterstützung von Android 16 KB Speicherseitengrößen mit Vonage Client SDK:

  1. Aktualisieren Sie Gradle, um API 36 zu erreichen und die neueste SDK-Version einzubinden.

  2. Für Android 14+:

    • Starten Sie bei der Bearbeitung von Anrufen einen Vordergrunddienst.

    • Stellen Sie sicher, dass der Dienst eine Benachrichtigung über die Audioaufnahme versendet.

Dies gewährleistet die Einhaltung der neuen Android-Richtlinien und verhindert Audioprobleme bei Anrufen.

Dank an Nathan und Salvatore vom Client SDK-Team für ihr technisches Know-how bei der Zusammenstellung dieser Anleitung. Haben Sie bereits eine Anwendung aktualisiert oder eine neue Anwendung erstellt, die 16 KB Speicherseitengrößen unterstützt? Wie waren Ihre Erfahrungen? Lassen Sie es uns in unserer Entwickler-Community auf Slack.

Teilen Sie:

https://a.storyblok.com/f/270183/384x384/1a06993970/dwanehemmings.png
Dwane HemmingsFürsprecher für JavaScript-Entwickler