Gerätekompatibilität – Übersicht

Android ist für die Ausführung auf vielen verschiedenen Geräten wie Smartphones, Tablets und Fernsehern konzipiert. Die Vielfalt der Geräte bietet ein enormes Potenzial für Ihre App. Damit Ihre App auf allen Geräten erfolgreich ist, muss sie mit unterschiedlichen Funktionen kompatibel sein und eine flexible Benutzeroberfläche bieten, die sich 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 bereitstellen können, z. B. verschiedene XML-Layouts für unterschiedliche Bildschirmgrößen. Android lädt dann die entsprechenden Ressourcen basierend auf der aktuellen Gerätekonfiguration. Wenn du das App-Design und zusätzliche App-Ressourcen im Voraus planst, kannst du ein einzelnes APK veröffentlichen, das die Nutzerfreundlichkeit auf einer Vielzahl von Geräten optimiert.

Bei Bedarf kannst du jedoch die Funktionsanforderungen deiner App angeben und festlegen, auf welchen Gerätetypen deine App aus dem Google Play Store installiert werden kann. In diesem Dokument wird erläutert, wie Sie festlegen können, welche Geräte Zugriff auf Ihre Apps haben, und wie Sie Ihre Apps so vorbereiten, dass sie die richtige Zielgruppe erreichen.

Was bedeutet „Kompatibilität“?

In Bezug auf die Android-Entwicklung gibt es zwei Arten von 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 es Apps, die für die Android-Ausführungsumgebung geschrieben wurden, korrekt ausführen kann. 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 musst du dir keine Gedanken darüber machen, ob ein Gerät Android-kompatibel ist, da nur Android-kompatible Geräte den Google Play Store enthalten. Wenn ein Nutzer Ihre App also aus dem 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 deine App über Plattform-APIs nutzen kann. Einige Funktionen sind hardwarebasiert, z. B. ein Kompasssensor, andere sind softwarebasiert, z. B. App-Widgets, und wieder andere hängen von der Plattformversion ab. Nicht jedes Gerät unterstützt jede Funktion. Daher musst du die Verfügbarkeit deiner App für Geräte möglicherweise anhand der erforderlichen Funktionen deiner App steuern.

Wenn du eine möglichst große Nutzerbasis für deine App erreichen möchtest, solltest du so viele Gerätekonfigurationen wie möglich mit einem einzigen APK oder AAB unterstützen. In den meisten Fällen können Sie dazu optionale Funktionen zur Laufzeit deaktivieren und App-Ressourcen mit Alternativen für verschiedene Konfigurationen bereitstellen, z. B. unterschiedliche Layouts für verschiedene Bildschirmgrößen. Bei Bedarf kannst du die Verfügbarkeit deiner App im Google Play Store anhand der folgenden Gerätemerkmale auf bestimmte Geräte beschränken:

Gerätefunktionen

Um die Verfügbarkeit deiner App anhand von Gerätefunktionen zu verwalten, 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 lautet beispielsweise FEATURE_SENSOR_COMPASS und die Funktions-ID für App-Widgets FEATURE_APP_WIDGETS.

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

Wenn deine App beispielsweise auf einem Gerät ohne Kompasssensor nicht sinnvoll ist, kannst du den Kompasssensor mit dem folgenden Manifest-Tag als Anforderung deklarieren:

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

Der Google Play Store vergleicht die von deiner App benötigten Funktionen mit den auf dem Gerät des Nutzers verfügbaren Funktionen, um festzustellen, ob deine App mit dem Gerät kompatibel ist. Wenn das Gerät nicht alle Funktionen hat, die Ihre App benötigt, 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 die entsprechende App-Funktion schrittweise deaktiviert werden. Sie können beispielsweise mit hasSystemFeature() abfragen, ob eine Funktion verfügbar ist:

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 du die Verfügbarkeit deiner App im Google Play Store steuern kannst, findest du in der Dokumentation zu Filtern bei Google Play.

Plattformversion

Auf verschiedenen Geräten können unterschiedliche Versionen der Android-Plattform ausgeführt werden, 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 entspricht beispielsweise API-Level 31 und Android 13 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(36)
        ...
    }
}

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 36
        ...
    }
}

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

Jede neue Android-Version ist mit Apps kompatibel, die mit den APIs früherer Plattformversionen erstellt wurden. Ihre App ist also mit zukünftigen Android-Versionen kompatibel, wenn Sie die dokumentierten Android APIs verwenden.

Wenn deine App jedoch APIs verwendet, die in einer neueren Plattformversion hinzugefügt wurden, diese aber nicht für die primäre Funktionalität benötigt, solltest du das API-Level zur Laufzeit prüfen und die entsprechenden Funktionen schrittweise herabstufen, wenn das API-Level zu niedrig ist. Setze in diesem Fall minSdkVersion auf den niedrigsten Wert, der für die Hauptfunktion deiner App möglich ist, und vergleiche dann die aktuelle Systemversion SDK_INT mit der Codenamenkonstante in Build.VERSION_CODES, die dem zu prüfenden API-Level entspricht, 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 verschiedener Größen, z. B. Smartphones, Tablets und Fernsehern. Um Geräte nach ihrem Displaytyp zu kategorisieren, definiert Android für jedes Gerät zwei Merkmale: die Displaygröße (die physische Größe des Displays) und die Pixeldichte (die physische Dichte der Pixel auf dem Display, auch als DPI bezeichnet). Um die verschiedenen Konfigurationen zu vereinfachen, fasst Android diese Varianten in Gruppen zusammen, die sich leichter ansprechen lassen:

  • 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

Standardmäßig ist Ihre App mit allen Bildschirmgrößen und -dichten kompatibel, da das System Ihr UI-Layout und Ihre Bildressourcen nach Bedarf für jeden Bildschirm anpasst. Stelle optimierte Bitmap-Bilder für gängige Pixeldichten bereit.

Optimieren Sie die Nutzerfreundlichkeit, indem Sie so oft wie möglich flexible Layouts verwenden. Wenn es Layouts für große Konfigurationsänderungen gibt, z. B. Hoch- und Querformat oder große und kleine Fenstergrößen, solltest du 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. Außerdem ist es hilfreich, wenn sich die Fenstergröße im Mehrfenstermodus ändert.

Informationen zum Erstellen alternativer Ressourcen für verschiedene Bildschirme und zum Einschrä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 Bildschirme.

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

Zusätzlich zur Einschränkung der Verfügbarkeit Ihrer App anhand von Gerätemerkmalen müssen Sie die Verfügbarkeit Ihrer App möglicherweise aus geschäftlichen oder rechtlichen Gründen einschränken. Für diese Art von Situation bietet der Google Play Store Filteroptionen in der Play Console, mit denen du die Verfügbarkeit deiner App aus nicht technischen Gründen wie dem Standort des Nutzers oder dem Mobilfunkanbieter steuern kannst.

Die Filterung nach technischer Kompatibilität, z. B. nach erforderlichen Hardwarekomponenten, basiert immer auf den Informationen in deiner 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:

Übersicht über App-Ressourcen
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 für Google Play
Informationen zu den verschiedenen Möglichkeiten, wie der Google Play Store verhindern kann, dass deine App auf verschiedenen Geräten installiert wird.
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.