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 an Geräten 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.

Zur Unterstützung der Gerätekompatibilität bietet Android ein dynamisches App-Framework, in dem Sie konfigurationsspezifische App-Ressourcen in statischen Dateien bereitstellen können, z. B. unterschiedliche XML-Layouts für unterschiedliche Bildschirmgrößen. Android lädt dann die entsprechenden Ressourcen basierend auf der aktuellen Gerätekonfiguration. Wenn Sie Ihr App-Design und zusätzliche App-Ressourcen im Voraus planen, können Sie ein einzelnes Anwendungspaket (APK) veröffentlichen, das die Nutzerfreundlichkeit auf einer Vielzahl von Geräten optimiert.

Sie können jedoch bei Bedarf die Funktionsanforderungen Ihrer App angeben und festlegen, auf welchen Gerätetypen Ihre App im 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“?

Bei der 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 mit dem Android-Betriebssystem entwickeln. Ein Gerät ist jedoch nur dann „Android-kompatibel“, wenn es Apps ausführen kann, die für die Android-Ausführungsumgebung geschrieben wurden. 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 auf Android-kompatiblen Geräten der Google Play Store installiert ist. Wenn ein Nutzer Ihre App also über den Google Play Store installiert, verwendet er ein Android-kompatibles Gerät.

Sie müssen jedoch prüfen, ob Ihre App mit jeder möglichen 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. Wenn die Hauptfunktionen Ihrer App einen Kompasssensor erfordern, ist die App nur mit Geräten kompatibel, die diese Funktion haben.

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 sind hardwarebasiert, z. B. ein Kompasssensor, andere softwarebasiert, 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 möglicherweise die Verfügbarkeit Ihrer App für Geräte basierend auf den erforderlichen Funktionen Ihrer App steuern.

Um möglichst viele Nutzer 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. unterschiedliche Layouts für unterschiedliche Bildschirmgrößen. Sie können die Verfügbarkeit Ihrer App über den Google Play Store anhand der folgenden Gerätemerkmale auf bestimmte Geräte beschränken:

Gerätefunktionen

Um die Verfügbarkeit Ihrer App basierend auf 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 für App-Widgets FEATURE_APP_WIDGETS.

Falls erforderlich, 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 Ihre App beispielsweise auf einem Gerät ohne Kompasssensor keinen Sinn ergibt, können Sie 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 für Ihre App erforderlichen Funktionen mit den auf dem Gerät jedes Nutzers verfügbaren Funktionen, um festzustellen, ob Ihre App mit jedem 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 für die Hauptfunktion Ihrer App jedoch keine Gerätefunktion erforderlich ist, 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, reduzieren Sie die entsprechende App-Funktion mit gradueller Fehlertoleranz. So kannst du beispielsweise prüfen, ob eine Funktion verfügbar ist, indem du hasSystemFeature() so aufrufst:

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 im Google Play Store steuern können, finden Sie in der Dokumentation zu Filtern 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, gibt jede Plattformversion eine API-Ebene an. 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(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 neue Android-Version ist mit Apps kompatibel, die mit den APIs der vorherigen Plattformversionen erstellt wurden. Ihre App ist also mit zukünftigen Android-Versionen kompatibel, wenn Sie die dokumentierten Android APIs verwenden.

Wenn Ihre App jedoch APIs verwendet, die in einer neueren Plattformversion hinzugefügt wurden, diese aber nicht für die Hauptfunktionen benötigt, prüfen Sie die API-Ebene zur Laufzeit und reduzieren Sie die entsprechenden Funktionen bei zu niedrigem API-Level schrittweise. Legen Sie in diesem Fall minSdkVersion auf den niedrigsten Wert für die Hauptfunktionen Ihrer App fest und vergleichen Sie dann die Version des aktuellen Systems, 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 kann auf Geräten verschiedener Größe wie Smartphones, Tablets und Fernsehern ausgeführt werden. Um Geräte nach Bildschirmtyp zu kategorisieren, definiert Android für jedes Gerät zwei Merkmale: Bildschirmgröße (die physische Größe des Displays) und Bildschirmdichte (die physische Dichte der Pixel auf dem Display, auch DPI genannt). Um die verschiedenen Konfigurationen zu vereinfachen, werden diese Varianten von Android in Gruppen zusammengefasst, die die Ausrichtung erleichtern:

  • Vier allgemeine Größen: klein, normal, groß und sehr groß
  • Mehrere generalisierte 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 das UI-Layout und die Bildressourcen für jeden Bildschirm entsprechend anpasst. Stellen Sie optimierte Bitmapbilder für gängige Bildschirmdichten bereit.

Optimieren Sie die Nutzerfreundlichkeit, indem Sie nach Möglichkeit 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, sollten Sie auch alternative Layouts bereitstellen, die für kleinere Konfigurationsänderungen flexibel sind. So wird die Nutzerfreundlichkeit auf Geräten wie Tablets, Smartphones und faltbaren Mobilgeräten verbessert. Außerdem ist es hilfreich, wenn Fenster im Modus mit mehreren Fenstern ihre Größe ändern.

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 mit großem Bildschirm.

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

Sie können die Verfügbarkeit Ihrer App nicht nur aufgrund von Gerätemerkmalen einschränken, sondern auch aus geschäftlichen oder rechtlichen Gründen. Für solche Fälle 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 Nutzerstandort oder Mobilfunkanbieter steuern können.

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

Weitere Informationen:

App-Ressourcen – Übersicht
Informationen dazu, wie Android-Apps strukturiert sind, um App-Ressourcen vom App-Code zu trennen, einschließlich Informationen dazu, wie Sie alternative Ressourcen für bestimmte Gerätekonfigurationen bereitstellen können.
Filter bei Google Play
Informationen zu den verschiedenen Möglichkeiten, wie der Google Play Store verhindern kann, dass Ihre 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 für die Verwendung dieser APIs durch Ihre App erfordert.