Gerätekompatibilität – Übersicht

Android wurde für den Betrieb auf den verschiedensten Geräten konzipiert – von Smartphones über Tablets bis hin zu Fernsehern. Diese Bandbreite eröffnet dir eine riesige potenzielle Zielgruppe für deine App. Damit deine App auch auf allen Geräten erfolgreich läuft, solltest du für die nötige Funktionsvariabilität und eine responsive Benutzeroberfläche sorgen, die sich flexibel an verschiedene Bildschirmkonfigurationen anpasst.

Um die Gerätekompatibilität zu verbessern, bietet Android ein dynamisches App-Framework, in dem Sie konfigurationsspezifische App-Ressourcen in statischen Dateien wie verschiedenen XML-Layouts für unterschiedliche Bildschirmgrößen bereitstellen können. Android lädt dann die entsprechenden Ressourcen basierend auf der aktuellen Gerätekonfiguration. Wenn Sie Ihr App-Design und zusätzliche App-Ressourcen sorgfältig planen, können Sie ein einzelnes Anwendungspaket (APK) veröffentlichen, das die Nutzererfahrung auf einer Vielzahl von Geräten optimiert.

Bei Bedarf können Sie jedoch die Funktionsanforderungen Ihrer App angeben und festlegen, auf welchen Gerätetypen Ihre App aus dem Google Play Store installiert werden kann. In diesem Dokument wird erläutert, wie Sie festlegen können, welche Geräte auf Ihre Apps zugreifen dürfen, und wie Sie Ihre Apps für die richtige Zielgruppe optimieren.

Was bedeutet „Kompatibilität“?

Bei der Android-Entwicklung gibt es zwei Arten der Kompatibilität: Gerätekompatibilität und App-Kompatibilität.

Da Android ein Open-Source-Projekt ist, kann jeder Hardwarehersteller ein Gerät entwickeln, auf dem das Android-Betriebssystem ausgeführt wird. Ein Gerät ist jedoch nur dann „Android-kompatibel“, wenn darauf Apps, die für die Android-Ausführungsumgebung geschrieben wurden, korrekt ausgeführt werden können. Die genauen Details der Android-Ausführungsumgebung werden durch das Android-Kompatibilitätsprogramm definiert. Jedes Gerät muss die Compatibility Test Suite (CTS) bestehen, um als kompatibel zu gelten.

Als App-Entwickler müssen Sie sich keine Gedanken darüber machen, ob ein Gerät mit Android kompatibel ist, da nur Geräte, die mit Android kompatibel sind, den Google Play Store enthalten. Wenn ein Nutzer Ihre App also über den Google Play Store installiert, verwendet er ein Android-kompatibles Gerät.

Sie müssen jedoch berücksichtigen, ob Ihre App mit jeder potenziellen Gerätekonfiguration kompatibel ist. Da Android auf einer Vielzahl von Gerätekonfigurationen ausgeführt wird, sind einige Funktionen nicht auf allen Geräten verfügbar. Beispielsweise sind manche Geräte eventuell nicht mit einem Kompasssensor ausgestattet. Falls die Hauptfunktionen Ihrer App einen Kompasssensor erfordern, ist die App nur mit Geräten kompatibel, die diese Funktion bieten.

Verfügbarkeit Ihrer App für Geräte steuern

Android unterstützt eine Vielzahl von Funktionen, die Ihre App über Plattform-APIs nutzen kann. Einige Funktionen basieren auf Hardware, z. B. ein Kompasssensor, andere auf Software, z. B. App-Widgets, und wieder andere hängen von der Plattformversion ab. Nicht jedes Gerät unterstützt jede Funktion. Daher müssen Sie die Verfügbarkeit Ihrer App für Geräte möglicherweise anhand der erforderlichen Funktionen Ihrer App steuern.

Um die größtmögliche Nutzerbasis für Ihre App zu erreichen, sollten Sie mit einem einzigen APK oder AAB so viele Gerätekonfigurationen wie möglich unterstützen. In den meisten Fällen können Sie dies tun, indem Sie optionale Funktionen zur Laufzeit deaktivieren und App-Ressourcen mit Alternativen für verschiedene Konfigurationen bereitstellen, z. B. verschiedene Layouts für verschiedene Bildschirmgrößen. Bei Bedarf können Sie die Verfügbarkeit Ihrer App im Google Play Store anhand der folgenden Gerätefunktionen auf bestimmte Geräte beschränken:

Gerätefunktionen

Zur Verwaltung der Verfügbarkeit Ihrer App basierend auf Gerätefunktionen definiert Android Funktions-IDs für alle Hardware- oder Softwarefunktionen, die möglicherweise nicht auf allen Geräten verfügbar sind. Die Funktions-ID für den Kompasssensor ist beispielsweise FEATURE_SENSOR_COMPASS und die Funktions-ID für App-Widgets ist FEATURE_APP_WIDGETS.

Bei Bedarf können Sie verhindern, dass Nutzer Ihre App installieren, wenn ihre Geräte eine erforderliche Funktion nicht unterstützen. Dazu deklarieren Sie die Funktion mit einem <uses-feature>-Element in der Manifestdatei Ihrer App.

Wenn Ihre App beispielsweise auf einem Gerät ohne Kompasssensor nicht sinnvoll ist, können Sie den Kompasssensor mit dem folgenden Manifest-Tag als Voraussetzung deklarieren:

<manifest ... >
    <uses-feature android:name="android.hardware.sensor.compass"
                  android:required="true" />
    ...
</manifest>

Im Google Play Store werden die von Ihrer App benötigten Funktionen mit den Funktionen verglichen, die auf dem Gerät des jeweiligen Nutzers verfügbar sind. So wird ermittelt, ob Ihre App mit dem jeweiligen Gerät kompatibel ist. Wenn das Gerät nicht alle Funktionen bietet, die für Ihre App erforderlich sind, kann der Nutzer Ihre App nicht installieren.

Wenn die Hauptfunktion Ihrer App jedoch keine Gerätefunktion erfordert, setzen Sie das Attribut required auf "false" und prüfen Sie die Gerätefunktion zur Laufzeit. Wenn die App-Funktion auf dem aktuellen Gerät nicht verfügbar ist, sollte sie auf elegante Weise deaktiviert werden. Sie können beispielsweise abfragen, ob eine Funktion verfügbar ist, indem Sie hasSystemFeature() so aufrufen:

Kotlin

if (!packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {
    // This device doesn't have a compass. Turn off the compass feature.
    disableCompassFeature()
}

Java

PackageManager pm = getPackageManager();
if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {
    // This device doesn't have a compass. Turn off the compass feature.
    disableCompassFeature();
}

Informationen zu allen Filtern, mit denen Sie die Verfügbarkeit Ihrer App über den Google Play Store steuern können, finden Sie in der Dokumentation Filter bei Google Play.

Plattform-Version

Auf verschiedenen Geräten werden möglicherweise unterschiedliche Versionen der Android-Plattform ausgeführt, z. B. Android 12 oder Android 13. Mit jeder neuen Plattformversion werden oft APIs hinzugefügt, die in der vorherigen Version nicht verfügbar waren. Um anzugeben, welche APIs verfügbar sind, wird für jede Plattformversion ein API-Level angegeben. Android 12 hat beispielsweise API‑Level 31 und Android 13 hat API‑Level 33.

Sie müssen die Werte minSdkVersion und targetSdkVersion in der Datei build.gradle angeben:

Kotlin

android {
    defaultConfig {
        applicationId = "com.example.myapp"

        // Defines the minimum API level required to run the app.
        minSdkVersion(30)

        // Specifies the API level used to test the app.
        targetSdkVersion(33)
        ...
    }
}

Groovy

android {
    defaultConfig {
        applicationId 'com.example.myapp'

        // Defines the minimum API level required to run the app.
        minSdkVersion 30

        // Specifies the API level used to test the app.
        targetSdkVersion 33
        ...
    }
}

Weitere Informationen zur Datei build.gradle finden Sie unter Build konfigurieren.

Jede nachfolgende Version von Android bietet Kompatibilität für Apps, die mit den APIs aus früheren Plattformversionen erstellt wurden. Ihre App ist also mit zukünftigen Versionen von Android kompatibel, wenn Sie die dokumentierten Android-APIs verwenden.

Wenn Ihre App jedoch APIs verwendet, die in einer neueren Plattformversion hinzugefügt wurden, aber für die primäre Funktion nicht erforderlich sind, prüfen Sie das API-Level zur Laufzeit und reduzieren Sie die entsprechenden Funktionen, wenn das API-Level zu niedrig ist. In diesem Fall legen Sie minSdkVersion auf den niedrigsten Wert fest, der für die primäre Funktion Ihrer App möglich ist. Vergleichen Sie dann die aktuelle Systemversion SDK_INT mit der Codenamenkonstante in Build.VERSION_CODES, die der API-Ebene entspricht, die Sie prüfen möchten, wie im folgenden Beispiel gezeigt:

Kotlin

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
    // Running on something older than API level 11, so disable
    // the drag and drop features that use ClipboardManager APIs.
    disableDragAndDrop()
}

Java

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
    // Running on something older than API level 11, so disable
    // the drag and drop features that use ClipboardManager APIs.
    disableDragAndDrop();
}

Bildschirmkonfiguration

Android läuft auf Geräten unterschiedlicher Größe, z. B. auf Smartphones, Tablets und Fernsehern. Um Geräte nach ihrem Displaytyp zu kategorisieren, definiert Android zwei Merkmale für jedes Gerät: die Displaygröße (die physische Größe des Displays) und die Displaydichte (die physische Dichte der Pixel auf dem Display, auch DPI genannt). Um die verschiedenen Konfigurationen zu vereinfachen, werden diese Varianten in Android in Gruppen zusammengefasst, die leichter zu verwenden sind:

  • Vier allgemeine Größen: klein, normal, groß und extragroß
  • Mehrere verallgemeinerte Dichten: mdpi (mittel), hdpi (hoch), xhdpi (extra hoch), xxhdpi (extra-extra hoch) und andere

Ihre App ist standardmäßig mit allen Bildschirmgrößen und ‑dichten kompatibel, da das System das UI-Layout und die Bildressourcen nach Bedarf für jeden Bildschirm anpasst. Stellen Sie optimierte Bitmap-Bilder für gängige Bildschirmdichten bereit.

Nutzerfreundlichkeit durch flexible Layouts optimieren Wenn es Layouts für große Konfigurationsänderungen gibt, z. B. Hoch- und Querformat oder große und kleine Fenstergrößen, sollten Sie alternative Layouts bereitstellen, die flexibel auf kleinere Änderungen in der Konfiguration reagieren. Dadurch wird die Nutzerfreundlichkeit auf Formfaktoren wie Tablets, Smartphones und faltbaren Geräten verbessert. Das ist auch hilfreich, wenn sich die Größe von Fenstern im Mehrfenstermodus ändert.

Informationen zum Erstellen alternativer Ressourcen für verschiedene Bildschirme und zum Beschränken Ihrer App auf bestimmte Bildschirmgrößen finden Sie in der Übersicht zur Bildschirmkompatibilität und in den Qualitätsrichtlinien für Apps für große Displays.

Verfügbarkeit Ihrer App aus geschäftlichen Gründen steuern

Neben der Einschränkung der Verfügbarkeit Ihrer App basierend auf Gerätefunktionen müssen Sie die Verfügbarkeit Ihrer App möglicherweise aus geschäftlichen oder rechtlichen Gründen einschränken. Für solche Situationen bietet der Google Play Store in der Play Console Filteroptionen, mit denen Sie die Verfügbarkeit Ihrer App aus nicht technischen Gründen wie dem Standort des Nutzers oder dem Mobilfunkanbieter steuern können.

Die Filterung nach technischer Kompatibilität, z. B. nach erforderlichen Hardwarekomponenten, basiert immer auf Informationen in Ihrer APK- oder AAB-Datei. Die Filterung aus nicht technischen Gründen, z. B. nach geografischem Standort, erfolgt jedoch immer in der Google Play Console.

Weitere Informationen:

App-Ressourcen – Übersicht
Informationen zur Strukturierung von Android-Apps, um App-Ressourcen vom App-Code zu trennen, einschließlich der Bereitstellung alternativer Ressourcen für bestimmte Gerätekonfigurationen.
Filter bei Google Play
Informationen zu den verschiedenen Möglichkeiten, wie der Google Play Store die Installation Ihrer App auf verschiedenen Geräten verhindern kann.
Berechtigungen unter Android
Wie Android den App-Zugriff auf bestimmte APIs mit einem Berechtigungssystem einschränkt, das die Einwilligung des Nutzers erfordert, damit Ihre App diese APIs verwenden kann.