Verschiedene Plattformversionen unterstützen

Auch wenn die neuesten Android-Versionen oft hervorragende APIs für deine App bieten, solltest du ältere Android-Versionen weiterhin unterstützen, bis mehr Geräte aktualisiert werden. In dieser Lektion erfahren Sie, wie Sie die neuesten APIs nutzen und gleichzeitig auch ältere Versionen unterstützen können.

Verwenden Sie den Android Studio-Assistenten Neues Projekt, um die Verteilung der aktiven Geräte zu ermitteln, auf denen die einzelnen Android-Versionen ausgeführt werden. Diese Verteilung basiert auf der Anzahl der Geräte, die den Google Play Store besuchen. Im Allgemeinen empfehlen wir, etwa 90% der aktiven Geräte zu unterstützen, während Sie Ihre App auf die neueste Version ausrichten.

Tipp:Damit Sie in mehreren Android-Versionen die besten Funktionen bieten können, sollten Sie die Android Support Library in Ihrer App verwenden. Damit können Sie mehrere aktuelle Plattform-APIs unter älteren Versionen nutzen.

Mindest- und Ziel-API-Level angeben

Die Datei AndroidManifest.xml enthält Details zu Ihrer App und gibt an, welche Android-Versionen sie unterstützt. Die Attribute minSdkVersion und targetSdkVersion für das Element <uses-sdk> identifizieren die niedrigste API-Ebene, mit der Ihre App kompatibel ist, und die höchste API-Ebene, für die Sie Ihre App entworfen und getestet haben.

Beispiele:

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

Wenn neue Versionen von Android veröffentlicht werden, können sich Stil und Verhaltensweisen ändern. Damit deine App von diesen Änderungen profitieren und sie zum Gerät des jeweiligen Nutzers passt, solltest du den Wert targetSdkVersion so festlegen, dass er der neuesten verfügbaren Android-Version entspricht.

Systemversion zur Laufzeit prüfen

Android stellt für jede Plattformversion in der Build-Konstantenklasse einen eindeutigen Code zur Verfügung. Verwenden Sie diese Codes in Ihrer App, um Bedingungen zu erstellen, die dafür sorgen, dass der von höheren API-Levels abhängende Code nur ausgeführt wird, wenn die entsprechenden 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);
    }
}

Hinweis:Beim Parsen von XML-Ressourcen ignoriert Android XML-Attribute, die vom aktuellen Gerät nicht unterstützt werden. So können Sie XML-Attribute bedenkenlos verwenden, die nur von neueren Versionen unterstützt werden, ohne befürchten zu müssen, dass ältere Versionen nicht mehr funktionieren, wenn dieser Code auftritt. Wenn Sie beispielsweise targetSdkVersion="11" festlegen, enthält Ihre App unter Android 3.0 und höher standardmäßig ActionBar. Damit Sie der Aktionsleiste Menüpunkte hinzufügen können, müssen Sie in der XML-Datei Ihrer Menüressource android:showAsAction="ifRoom" festlegen. Du kannst dies bedenkenlos in einer versionsübergreifenden XML-Datei tun, da die älteren Versionen von Android das Attribut showAsAction einfach ignorieren. Du benötigst also keine separate Version in res/menu-v11/.

Plattformstile und -designs verwenden

Android bietet Designs, die Apps das Erscheinungsbild des zugrunde liegenden Betriebssystems verleihen. Diese Designs können in der Manifestdatei auf deine App angewendet werden. Wenn Sie diese integrierten Stile und Designs verwenden, entspricht Ihre App bei jeder neuen Version dem neuesten Design von Android.

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

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

So legen Sie fest, dass Ihre Aktivitäten einen transparenten Hintergrund haben:

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

So wenden Sie Ihr eigenes in /res/values/styles.xml definiertes Design an:

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

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

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

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