Gerätekompatibilität – Übersicht

Android wurde für den Betrieb auf vielen verschiedenen Geräten wie Smartphones, Tablets und Fernsehern entwickelt. Die Bandbreite der Geräte bietet eine riesige potenzielle Zielgruppe für Ihre App. Damit Ihre App auf allen Geräten erfolgreich ist, muss sie Funktionsvariabilität tolerieren 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 Sie Ihr App-Design und zusätzliche App-Ressourcen gut durchdacht haben, können Sie ein einzelnes Anwendungspaket (APK) veröffentlichen, das die Nutzererfahrung auf einer Vielzahl von Geräten optimiert.

Bei Bedarf kannst du die Funktionsanforderungen deiner App festlegen und festlegen, über welche Arten von Geräten deine App aus dem Google Play Store installiert werden kann. In diesem Dokument erfahren Sie, wie Sie steuern können, welche Geräte Zugriff auf Ihre Apps haben, und wie Sie Ihre Apps vorbereiten, um die richtige Zielgruppe zu 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 entwickeln, auf dem das Android-Betriebssystem ausgeführt wird. Ein Gerät ist jedoch nur dann "Android-kompatibel", wenn es Anwendungen, die für die Android-Ausführungsumgebung geschrieben wurden, ordnungsgemäß ausführen kann. Die genauen Details der Android-Ausführungsumgebung werden im Android-Kompatibilitätsprogramm definiert. Jedes Gerät muss die Kompatibilitätstest-Suite (CTS) bestehen, um als kompatibel zu gelten.

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

Sie müssen jedoch prüfen, ob Ihre App mit jeder potenziellen Gerätekonfiguration kompatibel ist. Da Android auf zahlreichen Gerätekonfigurationen ausgeführt wird, sind einige Funktionen nicht auf allen Geräten verfügbar. Einige Geräte haben beispielsweise keinen Kompasssensor. Wenn für die Hauptfunktion Ihrer App ein Kompasssensor erforderlich ist, ist sie nur mit Geräten kompatibel, die diese Funktion bieten.

Verfügbarkeit der 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, einige softwarebasiert, z. B. App-Widgets, und andere sind von der Plattformversion abhängig. Nicht jedes Gerät unterstützt alle Funktionen. Daher musst du möglicherweise die Verfügbarkeit deiner App für Geräte je nach den erforderlichen Funktionen deiner App steuern.

Unterstütze so viele Gerätekonfigurationen wie möglich mit einem einzigen APK oder AAB, um die größtmögliche Nutzerbasis für deine App zu erreichen. In den meisten Situationen können Sie dazu optionale Features zur Laufzeit deaktivieren und Anwendungsressourcen durch Alternativen für verschiedene Konfigurationen wie etwa verschiedene Layouts für unterschiedliche Bildschirmgrößen bereitstellen. Bei Bedarf kannst du die Verfügbarkeit deiner 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 Feature-ID für den Kompasssensor ist beispielsweise FEATURE_SENSOR_COMPASS und die Feature-ID für App-Widgets lautet FEATURE_APP_WIDGETS.

Bei Bedarf kannst du verhindern, dass Nutzer deine App installieren, wenn ihre Geräte eine erforderliche Funktion nicht enthalten. Deklariere dazu die Funktion mithilfe eines <uses-feature>-Elements in der Manifestdatei deiner 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>

Im Google Play Store werden die für Ihre App erforderlichen Funktionen mit den auf dem jeweiligen Nutzergerät verfügbaren Funktionen verglichen, um festzustellen, ob Ihre App mit dem jeweiligen Gerät kompatibel ist. Wenn das Gerät nicht alle für die App erforderlichen Funktionen bietet, kann der Nutzer die App nicht installieren.

Wenn für die Hauptfunktion deiner App jedoch keine Gerätefunktion erforderlich ist, setze das Attribut required auf "false" und prüfe die Gerätefunktion zur Laufzeit. Wenn die App-Funktion auf dem aktuellen Gerät nicht verfügbar ist, stufen Sie die entsprechende App-Funktion ordnungsgemäß ein. Beispielsweise können Sie so abfragen, ob ein Feature verfügbar ist. Dazu rufen Sie hasSystemFeature() auf:

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 den verschiedenen Geräten wird möglicherweise unterschiedliche Versionen der Android-Plattform ausgeführt, z. B. Android 12 oder Android 13. Mit jeder neuen Plattformversion werden häufig APIs hinzugefügt, die in der vorherigen Version nicht verfügbar waren. Für jede Plattformversion wird ein API-Level angegeben, um anzugeben, welche APIs verfügbar sind. Beispiel: Android 12 ist API-Level 31 und Android 13 ist 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)
        ...
    }
}

Groovig

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 Android-Version bietet Kompatibilität für Apps, die mit den APIs vorheriger Plattformversionen erstellt wurden. So ist Ihre App mit zukünftigen Android-Versionen kompatibel, wenn die dokumentierten Android-APIs verwendet werden.

Wenn Ihre Anwendung jedoch APIs verwendet, die in einer neueren Plattformversion hinzugefügt wurden, aber für ihre Hauptfunktion keine APIs benötigt werden, prüfen Sie das API-Level während der Laufzeit und stufen Sie die entsprechenden Funktionen schrittweise ein, 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. 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 unterschiedlicher Größe, wie zum Beispiel Smartphones, Tablets und Fernseher. Um Geräte nach Bildschirmtyp zu kategorisieren, definiert Android zwei Eigenschaften für jedes Gerät: die Bildschirmgröße (die physische Größe des Bildschirms) und die Bildschirmdichte (die physische Dichte der Pixel auf dem Bildschirm, auch als DPI bezeichnet). Um die verschiedenen Konfigurationen zu vereinfachen, fasst Android diese Varianten in Gruppen zusammen, die ein einfacheres Targeting ermöglichen:

  • Vier allgemeine Größen: „klein“, „normal“, „groß“ und „xlarge“
  • Mehrere allgemeine 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 Anpassungen des UI-Layouts und der Bildressourcen vornimmt, wenn es für jeden Bildschirm erforderlich ist. Stellen Sie optimierte Bitmapbilder für gängige Bildschirmdichten bereit.

Optimieren Sie die Nutzererfahrung, indem Sie so viel wie möglich flexible Layouts verwenden. Wenn es Layouts für große Konfigurationsänderungen gibt, z. B. Hochformat und Querformat oder große oder kleine Fenster, sollten Sie alternative Layouts bereitstellen, die auch für kleinere Änderungen der Konfiguration flexibel sind. Dies verbessert die Nutzererfahrung auf Formfaktoren wie Tablets, Smartphones und faltbaren Smartphones. Es ist auch hilfreich, wenn die Größe des Fensters im Mehrfenstermodus geändert wird.

Informationen zum Erstellen alternativer Ressourcen für verschiedene Bildschirme und dazu, wie du deine App bei Bedarf auf bestimmte Bildschirmgrößen beschränken kannst, findest du in der Übersicht zur Bildschirmkompatibilität und in den Qualitätsrichtlinien für Apps für große Bildschirme.

Verfügbarkeit deiner App aus geschäftlichen Gründen verwalten

Zusätzlich zur Einschränkung der Verfügbarkeit Ihrer Anwendung anhand der Geräteeigenschaften müssen Sie möglicherweise aus geschäftlichen oder rechtlichen Gründen die Verfügbarkeit Ihrer Anwendung einschränken. In diesem Fall bietet der Google Play Store in der Play Console Filteroptionen, mit denen Sie die Verfügbarkeit Ihrer App aus nichttechnischen Gründen steuern können, z. B. aus der Sprache des Nutzers oder dem drahtlosen Mobilfunkanbieter.

Das Filtern nach technischer Kompatibilität, z. B. nach erforderlichen Hardwarekomponenten, basiert immer auf den Informationen in der APK- oder AAB-Datei. Das Filtern aus nichttechnischen Gründen (z. B. anhand der geografischen Sprache) wird jedoch immer in der Google Play Console verarbeitet.

Weitere Informationen:

App-Ressourcen – Übersicht
Informationen zur Strukturierung von Android-Apps, 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 dazu, wie der Google Play Store die Installation deiner 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 deine App diese APIs verwenden kann.