Für Android-Apps können verschiedene Eigenschaften der SDK-Version in ihrem
build.gradle
-Datei. In der Android build.gradle
-Dokumentation wird erläutert,
Bedeutung für die Anwendung im Allgemeinen. In diesem Dokument wird erläutert,
wirken sich diese Eigenschaften auf NDK-Builds aus.
CompilSdkVersion
Diese Eigenschaft hat keine Auswirkungen auf NDK-Builds. Die API-Verfügbarkeit für das NDK ist
unterliegt stattdessen minSdkVersion
. Das liegt daran, dass C++-Symbole
bei der Ladezeit der Bibliothek und nicht erst beim ersten Aufruf (wie
sondern in Java). Die Verwendung von Symbolen, die in der
minSdkVersion
führt dazu, dass die Bibliothek bei Betriebssystemversionen, die
nicht über die neuere API verfügen, unabhängig davon, ob diese APIs aufgerufen werden oder nicht.
Wenn Sie eine neue App verwenden möchten, wählen Sie die neueste verfügbare Version aus. Aktualisieren Sie bei einer vorhandenen App auf die neueste Version.
targetSdkVersion
Ähnlich wie bei Java kann der targetSdkVersion
deiner App die Laufzeit ändern
Verhalten des nativen Codes. Verhaltensänderungen im System sind, wenn möglich, nur
wird auf Apps mit einer targetSdkVersion
angewendet, die größer oder gleich dem Betriebssystem ist
der die Änderung eingeführt hat.
Wenn Sie eine neue App verwenden möchten, wählen Sie die neueste verfügbare Version aus. Aktualisieren Sie bei einer vorhandenen App
auf die neueste Version aktualisieren (nach der Aktualisierung von compileSdkVersion
).
App-Entwickler kennen in der Regel die targetSdkVersion
ihrer App. Dies ist jedoch
Die API ist nützlich für Bibliotheksentwickler, die nicht wissen, welche targetSdkVersion
die ihre Nutzenden auswählen.
Zur Laufzeit können Sie den von einer Anwendung verwendeten targetSdkVersion
abrufen, indem Sie folgenden Befehl aufrufen:
android_get_application_target_sdk_version()
. Diese API ist in der API verfügbar
ab Level 24. Diese Funktion hat die folgende Signatur:
/**
* Returns the `targetSdkVersion` of the caller, or `__ANDROID_API_FUTURE__` if
* there is no known target SDK version (for code not running in the context of
* an app).
*
* The returned values correspond to the named constants in `<android/api-level.h>`,
* and is equivalent to the AndroidManifest.xml `targetSdkVersion`.
*
* See also android_get_device_api_level().
*
* Available since API level 24.
*/
int android_get_application_target_sdk_version() __INTRODUCED_IN(24);
Andere Verhaltensänderungen können vom API-Level des Geräts abhängen. Sie können die API abrufen,
Ebene des Geräts an, auf dem Ihre Anwendung ausgeführt wird, indem Sie
android_get_device_api_level()
Diese Funktion hat die folgende Signatur:
/**
* Returns the API level of the device we're actually running on, or -1 on failure.
* The returned values correspond to the named constants in `<android/api-level.h>`,
* and is equivalent to the Java `Build.VERSION.SDK_INT` API.
*
* See also android_get_application_target_sdk_version().
*/
int android_get_device_api_level();
maxSdkVersion
Diese Eigenschaft hat keine Auswirkungen auf NDK-Builds.
minSdkVersion
Der in Ihrer build.gradle
-Datei festgelegte minSdkVersion
bestimmt, welche APIs
bei der Build-Erstellung verfügbar. Informationen zu den Unterschieden finden Sie unter compileSdkVersion.
aus Java-Builds) und bestimmt die Mindestversion des Betriebssystems,
kompatibel sein werden.
Das minSdkVersion
wird vom NDK verwendet, um zu bestimmen, welche Funktionen verwendet werden können
wenn Sie den Code kompilieren. Diese Property bestimmt beispielsweise, welche FORTIFY-
-Funktionen werden in libc verwendet und können auch Leistungs- oder Größenverbesserungen ermöglichen
(z. B. GNU-Hashes oder RELR) für Ihre Binärdateien, die nicht kompatibel sind mit
ältere Android-Versionen. Auch wenn Sie keine neuen APIs verwenden,
bestimmt weiterhin die unterstützte Mindestversion des Betriebssystems Ihres Codes.
Für eine neue App kannst du dir die Daten zur Nutzerverteilung im neuen Projekt von Android Studio ansehen.
oder apilevels.com aufrufen. Wähle dein Guthaben aus zwischen
potenziellen Marktanteil und Wartungskosten. Je niedriger der Wert für „minSdkVersion
“,
desto mehr Zeit verbringen Sie damit, alte Fehler zu umgehen und Fallback-Verhaltensweisen hinzuzufügen.
für Funktionen, die noch nicht implementiert wurden.
Erhöhen Sie für eine vorhandene App den Wert für minSdkVersion
, wenn die alten API-Ebenen nicht mehr gültig sind
die Wartungskosten länger wert sind, oder senken, wenn Ihre Nutzer es fordern und es
die neuen Wartungskosten zu rechtfertigen. In der Play Console findest du Messwerte, die speziell für dein
die Verteilung der Nutzer der App.
Die minSdkVersion
Ihrer Anwendung wird dem Präprozessor zur Verfügung gestellt
über das __ANDROID_MIN_SDK_VERSION__
-Makro (die alte __ANDROID_API__
ist
identisch sind, bevorzugen aber die erstgenannte, da ihre Bedeutung klarer ist). Dieses Makro ist
wird automatisch von Clang definiert, sodass für die Verwendung kein Header eingefügt werden muss. Für
NDK erstellt, ist dieses Makro immer definiert.