Verschiedene Plattformversionen unterstützen

Die neuesten Android-Versionen bieten zwar oft großartige APIs für Ihre App, Sie sollten aber weiterhin ältere Android-Versionen unterstützen, bis mehr Geräte aktualisiert werden. In dieser Lektion erfahren Sie, wie Sie die neuesten APIs nutzen und gleichzeitig ältere Versionen unterstützen können.

Mit dem Assistenten Neues Projekt in Android Studio können Sie die Verteilung der aktiven Geräte ermitteln, auf denen die einzelnen Android-Versionen ausgeführt werden. Diese Verteilung basiert auf der Anzahl der Geräte, die den Google Play Store aufrufen. Im Allgemeinen empfehlen wir, etwa 90% der aktiven Geräte zu unterstützen und Ihre App auf die neueste Version auszurichten.

Tipp:Damit Sie die besten Funktionen und Features für mehrere Android-Versionen bereitstellen können, sollten Sie die Android Support Library in Ihrer App verwenden. So können Sie mehrere aktuelle Plattform-APIs in älteren Versionen nutzen.

Mindest- und Ziel-API-Levels angeben

In der Datei AndroidManifest.xml werden Details zu Ihrer App beschrieben und es wird angegeben, welche Android-Versionen unterstützt werden. Insbesondere die Attribute minSdkVersion und targetSdkVersion für das Element <uses-sdk> geben das niedrigste API-Level an, mit dem Ihre App kompatibel ist, und das höchste API-Level, für das Sie Ihre App entwickelt und getestet haben.

Beispiel:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
    ...
</manifest>

Mit der Veröffentlichung neuer Android-Versionen können sich einige Stile und Verhaltensweisen ändern. Damit Ihre App diese Änderungen nutzen kann und zum Stil des Geräts jedes Nutzers passt, sollten Sie den Wert targetSdkVersion auf die neueste verfügbare Android-Version festlegen.

Da Nebenversionen des SDK nicht an Verhaltensänderungen gebunden sind, ist es nicht möglich, targetSdkVersion so festzulegen, dass eine Nebenversion des SDK berücksichtigt wird. Wenn Sie eine API in einer Nebenversion des SDK aufrufen möchten, die neuer als minSdkVersion ist, prüfen Sie die Systemversion zur Laufzeit.

Systemversion zur Laufzeit prüfen

Android stellt in der Konstantenklasse Build einen eindeutigen Code für jede Plattformversion bereit. Verwenden Sie diese Codes in Ihrer App, um Bedingungen zu erstellen, die dafür sorgen, dass der Code, der von höheren API-Levels abhängt, nur ausgeführt wird, wenn diese APIs auf dem System verfügbar sind.

Kotlin

private fun setUpActionBar() {
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        actionBar.setDisplayHomeAsUpEnabled(true)
    }
}

Java

private void setUpActionBar() {
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
    }
}

Mit Build.VERSION.SDK_INT_FULL können Sie prüfen, ob eine Haupt- oder Nebenversion des SDK vorhanden ist.

Kotlin

if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) {
  // Use APIs introduced in a major or minor SDK release
}

Java

if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) {
  // Use APIs introduced in a major or minor SDK release
}

Hinweis:Beim Parsen von XML-Ressourcen ignoriert Android XML-Attribute, die vom aktuellen Gerät nicht unterstützt werden. Sie können also XML-Attribute, die nur von neueren Versionen unterstützt werden, bedenkenlos verwenden, ohne sich Sorgen machen zu müssen, dass ältere Versionen bei diesem Code abstürzen. Wenn Sie beispielsweise targetSdkVersion="11" festlegen, enthält Ihre App unter Android 3.0 und höher standardmäßig ActionBar. Wenn Sie der Aktionsleiste Menüelemente hinzufügen möchten, müssen Sie android:showAsAction="ifRoom" in Ihrem Menüressourcen-XML festlegen. Das ist in einer versionsübergreifenden XML-Datei problemlos möglich, da die älteren Android-Versionen das Attribut showAsAction einfach ignorieren. Sie benötigen also keine separate Version in res/menu-v11/.

Plattformstile und ‑designs verwenden

Android bietet Themes für die Benutzeroberfläche, die Apps das Erscheinungsbild des zugrunde liegenden Betriebssystems verleihen. Diese Designs können in der Manifestdatei auf Ihre App angewendet werden. Wenn Sie diese integrierten Stile und Designs verwenden, entspricht Ihre App mit jedem neuen Release automatisch dem aktuellen Look and Feel von Android.

So lassen Sie Ihre Aktivität wie ein Dialogfeld aussehen:

<activity android:theme="@android:style/Theme.Dialog">

So machen Sie den Hintergrund Ihrer Aktivität transparent:

<activity android:theme="@android:style/Theme.Translucent">

So wenden Sie Ihr eigenes benutzerdefiniertes Design an, das in /res/values/styles.xml definiert ist:

<activity android:theme="@style/CustomTheme">

Wenn Sie ein Design auf Ihre gesamte App (alle Aktivitäten) anwenden möchten, fügen Sie dem <application>-Element das Attribut android:theme hinzu:

<application android:theme="@style/CustomTheme">

Weitere Informationen zum Erstellen und Verwenden von Designs finden Sie im Leitfaden Stile und Designs.