
Achtung Android-Entwickler: 16 KB Speicher Seitengrößen Update
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:
Folgen Sie dieser Anleitung, um Ihre Implementierung des Vonage Client SDK zu aktualisieren
Aktualisieren Sie alle nativen Bibliotheken auf Versionen, die 16KB-Seiten unterstützen
Testen Sie Ihre Anwendung auf Geräten mit 16KB-Seiten (oder auf dafür konfigurierten Emulatoren)
Ü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:
Aktualisieren Sie Gradle, um API 36 zu erreichen und die neueste SDK-Version einzubinden.
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.