SDK-Erweiterungen nutzen modulare Systeme Komponenten zum Hinzufügen von APIs für bestimmte zuvor veröffentlichte API-Levels beim öffentlichen SDK. Diese APIs sind an Geräte gesendet, wenn Endnutzer Modul-Updates über Google Play System Aktualisierungen. App-Kampagnen können Entwickelnde diese APIs in ihren Apps nutzen, um zusätzliche Funktionen, die ursprünglich im SDK nicht verfügbar waren, Versionen von Android.
API-Versionsverwaltung
Ab Android 11 (API-Level 30) enthalten Android-Geräte eine Reihe von SDKs
Erweiterungen. Neue APIs sind zwar Teil einer API-Ebene, können jedoch
auch in einer SDK-Erweiterung einer bestimmten Version enthalten sein. Beispiel: Der Parameter
ACTION_PICK_IMAGES
Die API für die Bildauswahl wurde dem öffentlichen SDK in Android 13 (API-Level 33) hinzugefügt.
ist aber auch über SDK-Erweiterungen ab Version 2 von R-Erweiterungen verfügbar.
SDK-Erweiterungsnamen entsprechen einer Ganzzahlkonstante, entweder
eine Konstante von
Build.VERSION_CODES
oder eine
die in der Klasse SdkExtensions
definiert sind (z. B.
SdkExtensions.AD_SERVICES
.
Festlegen, welche SDK-Erweiterungen verwendet werden sollen
Bevor Sie SDK Extension APIs verwenden können, müssen Sie zuerst ermitteln, welche SDKs APIs enthalten, die die Anwendungsfälle deiner App unterstützen.
Auf den API-Referenzseiten für SDK Extension APIs ist das früheste SDK angegeben. Erweiterungsversion, mit der Ihre App auf eine API zugreifen kann. Wenn die Dokumentation eine Version der Android-Plattform angibt, auf die durch das API-Level verwiesen wird, Die API ist auch für alle Geräte mit dieser Android-Version oder höher verfügbar.
ACTION_PICK_IMAGES
ist beispielsweise im öffentlichen SDK allgemein verfügbar
ab Android 13 (API-Level 33), ist aber auch auf Geräten
wieder als Android 11 (API-Level 30) verfügbar, solange das Gerät mindestens R
Erweiterungen Version 2:
Um diese API zu verwenden, musst du sie für ein SDK kompilieren, das mindestens das API-Level hat 33 oder Erweiterungsebene mindestens 2.
So verwenden Sie ein Erweiterungs-SDK:
- Die mindestens erforderliche Version der Erweiterungen findest du in der entsprechenden Funktion Dokumentation und API-Referenz für die APIs, die Sie verwenden möchten.
- Nachdem Sie die erforderliche Erweiterungsversion für den Funktionsumfang ermittelt haben, öffnen Sie den SDK-Manager in Android Studio.
- Wählen Sie den Eintrag „Android SDK Platform“ mit der entsprechenden Erweiterung aus. Version (oder eine höhere Version, da die APIs additiv sind). Hier einige Beispiele: Android SDK Platform 33, Extension Level 4
Deklariere diese Werte in der
build.gradle.kts
oderbuild.gradle
deiner App Datei:Cool
android { compileSdk 33 compileSdkExtension 4 ... }
Kotlin
android { compileSdk = 33 compileSdkExtension = 4 ... }
Verfügbarkeit von SDK-Erweiterungen prüfen
Ihre App kann prüfen, welche Versionen der SDK-Erweiterung zur Laufzeit verfügbar sind, und Während der Entwicklung können Sie die Versionen der Erweiterung mit Android Debug abrufen. ADB-Befehle (Bridge-Befehle), wie in den folgenden Abschnitten beschrieben.
Während der Laufzeit prüfen
Deine App kann während der Laufzeit prüfen, ob SDK-Erweiterungen für eine bestimmte
Plattformversion mithilfe des
getExtensionVersion()
. Beispielsweise würde der folgende Code überprüfen, ob die Erweiterung Version 2
Die SDK-Erweiterung für Android 11 (API-Level 30) ist verfügbar:
Kotlin
fun isPhotoPickerAvailable(): Boolean { return SdkExtensions.getExtensionVersion(Build.VERSION_CODES.R) >= 2 // Safely use extension APIs that are available with Android 11 (API level 30) Extensions Version 2, such as Photo Picker. }
Java
public static final boolean isPhotoPickerAvailable() { return SdkExtensions.getExtensionVersion(Build.VERSION_CODES.R) >= 2; }
Dies ist vergleichbar mit
einer Prüfung basierend auf
Build.VERSION.SDK_INT
:
Kotlin
fun isPhotoPickerAvailable(): Boolean { return Build.VERSION.SDK_INT >= 33 }
Java
public static final boolean isPhotoPickerAvailable() { return Build.VERSION.SDK_INT >= 33; }
Diese SDK_INT
-Prüfung ist weiterhin sicher und gültig, isPhotoPickerAvailable
würde aber
Auf einigen Geräten wird „false“ zurückgegeben, obwohl die Erweiterungs-API verfügbar ist. Als
führt, ist die SDK_INT
-Prüfung nicht optimal und die Prüfung der Erweiterungsversion ist eine
um die API-Verfügbarkeit
zu prüfen. Alle Geräte mit SDK_INT
mehr
mindestens 33
(Android 13 oder höher) enthalten die Bildauswahl-APIs in der
öffentliches SDK, aber es gibt Geräte mit SDK_INT
unter 33 (z. B. Android
11, 12 und 12L), die auch auf die APIs zugreifen könnten, wenn sie die R-Erweiterung haben
Versionen von mindestens 2
.
In diesem Fall kann Ihre App durch eine Prüfung auf Erweiterungsversionen mehr Funktionen zur Verfügung. Weitere Informationen finden Sie unter SDK-Erweiterungsnamen und Konstanten finden Sie eine Liste aller Konstanten, mit denen Sie nach bestimmten SDK-Erweiterungen auf einem Gerät zu suchen.
Erweiterungen für Anzeigendienste
Ähnlich wie bei den allgemeinen SDK-Erweiterungen kann auch die AdServices
API-Referenz
gibt manchmal an, dass eine API Teil einer „Anzeigendienst-Erweiterung“ ist Version.
Im Gegensatz zu den allgemeinen SDK-Erweiterungen verwenden Erweiterungen für Anzeigendienste die
SdkExtensions.AD_SERVICES
-Konstante, um zu ermitteln, welche Version auf einem Gerät installiert ist:
Kotlin
fun isAdServicesAvailable(): Boolean { return SdkExtensions.getExtensionVersion(SdkExtensions.AD_SERVICES) >= 4 }
Java
public static final boolean isAdServicesAvailable() { return SdkExtensions.getExtensionVersion(SdkExtensions.AD_SERVICES) >= 4; }
Weitere Informationen zu den Funktionen von Anzeigendienst-Erweiterungen und dazu, wie Sie finden Sie unter Erweiterungen für Anzeigendienste Dokumentation.
Dienstprogrammmethoden
In einigen Fällen verfügen SDK-Erweiterungen über Jetpack-Dienstprogrammmethoden, mit denen die der APIs für SDK-Erweiterungen. Sie können beispielsweise ein Jetpack- Bibliotheksfunktion auf, um nach PhotoPicker zu suchen Verfügbarkeit, das die bedingten Versionsprüfungen abstrahiert.
Support für Tools
In Android Studio Flamingo | 2022.2.1 oder höher, kann das Lint-Tool nach Probleme mit SDK-Erweiterungsversionen als Teil der NewAPI-Prüfung. Außerdem Android Studio kann automatisch die richtige Versionsüberprüfung für APIs generieren, die mit SDK-Erweiterungen eingeführt.
<ph type="x-smartling-placeholder">SDK-Erweiterungsnamen und -konstanten
In der folgenden Tabelle wird beschrieben, wie die verschiedenen Gruppen von SDK-Erweiterungen, die
die in der API-Referenzdokumentation den Konstanten zugeordnet sind, mit denen Ihre App
die API-Verfügbarkeit während der Laufzeit prüfen. Der allgemeine Satz von SDK-Erweiterungen für
ist jedes öffentliche SDK den Werten
Build.VERSION_CODES
Name der SDK-Erweiterung | Konstante | Berechtigte Geräte |
---|---|---|
R-Erweiterungen | VERSION_CODES.R |
Android 11 (API-Level 30) und höher |
S-Erweiterungen | VERSION_CODES.S |
Android 12 (API-Level 31) und höher |
T-Erweiterungen | VERSION_CODES.TIRAMISU |
Android 13 (API-Level 33) und höher |
Erweiterungen für Anzeigendienste | SdkExtensions.AD_SERVICES |
Android 13 (API-Level 33) und höher |
Mit ADB prüfen
Um zu prüfen, welche SDK-Erweiterungen mit ADB auf einem Gerät verfügbar sind, führe den folgenden Befehl:
adb shell getprop | grep build.version.extensions
Nachdem Sie den Befehl ausgeführt haben, sieht die Ausgabe in etwa so aus:
[build.version.extensions.r]: [3] # Android 11 (API level 30) and higher
[build.version.extensions.s]: [3] # Android 12 (API level 31) and higher
[build.version.extensions.t]: [3] # Android 13 (API level 33) and higher
In jeder Zeile wird eine SDK-Erweiterung angezeigt, die auf dem Gerät vorhanden ist, der entsprechenden Erweiterungsversion (in diesem Fall 3).