Gerätekompatibilität – Übersicht

Android wurde für den Betrieb auf vielen verschiedenen Geräten entwickelt, z. B. Smartphones, Tablets und Fernsehern. Die Bandbreite der Geräte stellt eine riesige potenzielle Zielgruppe für deine App dar. Damit deine 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 du konfigurationsspezifische App-Ressourcen in statischen Dateien bereitstellen kannst, z. B. verschiedene XML-Layouts für unterschiedliche Bildschirmgrößen. Android lädt dann die entsprechenden Ressourcen basierend auf der aktuellen Gerätekonfiguration. Mit Blick auf das App-Design und zusätzliche App-Ressourcen kannst du ein einzelnes Anwendungspaket (APK) veröffentlichen, das die Nutzerfreundlichkeit auf einer Vielzahl von Geräten optimiert.

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

Was bedeutet „Kompatibilität“?

Im Hinblick auf die Android-Entwicklung gibt es zwei Kompatibilitätstypen: 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 vom Android-Kompatibilitätsprogramm festgelegt. 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 der Google Play Store auf Android-Geräten verfügbar ist. Wenn also ein Nutzer deine App über den Google Play Store installiert, verwendet er ein mit Android kompatibles Gerät.

Sie müssen jedoch prüfen, ob Ihre App mit den einzelnen potenziellen Gerätekonfigurationen kompatibel ist. Da Android auf einer Vielzahl von Gerätekonfigurationen ausgeführt wird, sind einige Funktionen nicht auf allen Geräten verfügbar. Beispielsweise haben einige Geräte möglicherweise keinen Kompasssensor. Wenn für die Hauptfunktion Ihrer App ein Kompasssensor erforderlich ist, ist sie nur mit Geräten kompatibel, die diese Funktion enthalten.

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

Um die größtmögliche Nutzerbasis für deine App zu erreichen, 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 Features zur Laufzeit deaktivieren und Anwendungsressourcen mit Alternativen für verschiedene Konfigurationen bereitstellen, z. B. verschiedene Layouts für unterschiedliche Bildschirmgrößen. Bei Bedarf kannst du die Verfügbarkeit deiner App über den Google Play Store auf bestimmten Geräten anhand der folgenden Geräteeigenschaften einschränken:

Gerätefunktionen

Um die Verfügbarkeit deiner App auf Grundlage 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 Feature-ID für den Kompasssensor lautet beispielsweise FEATURE_SENSOR_COMPASS und die Feature-ID für App-Widgets FEATURE_APP_WIDGETS.

Falls erforderlich, kannst du verhindern, dass Nutzer deine App installieren, wenn ihre Geräte eine erforderliche Funktion nicht bieten. Dazu deklarierst du die Funktion mithilfe eines <uses-feature>-Elements in der Manifestdatei deiner 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 Anforderung deklarieren:

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

Der Google Play Store vergleicht die für deine App erforderlichen Funktionen mit den Funktionen, die auf den Geräten der einzelnen Nutzer verfügbar sind, um festzustellen, ob deine App mit den einzelnen Geräten kompatibel ist. Wenn das Gerät nicht über alle für deine App erforderlichen Funktionen verfügt, kann der Nutzer deine App nicht installieren.

Wenn die Hauptfunktion deiner App jedoch keine Gerätefunktion erfordert, setzen Sie das Attribut required auf "false" und prüfen Sie zur Laufzeit, ob die Gerätefunktion vorhanden ist. Wenn die App-Funktion auf dem aktuellen Gerät nicht verfügbar ist, schränke die entsprechende App-Funktion ordnungsgemäß ein. Sie können beispielsweise abfragen, ob ein Feature verfügbar ist. Dazu rufen Sie hasSystemFeature() so 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 über den 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 nachfolgenden Plattformversion werden häufig APIs hinzugefügt, die in der vorherigen Version nicht verfügbar waren. Damit Sie sehen können, welche APIs verfügbar sind, wird für jede Plattformversion ein API-Level angegeben. Android 12 ist z. B. 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)
        ...
    }
}

Cool

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 früherer Plattformversionen erstellt wurden. Ihre App ist also mit zukünftigen Android-Versionen kompatibel und verwendet die dokumentierten Android APIs.

Wenn Ihre Anwendung jedoch APIs verwendet, die in einer neueren Plattformversion hinzugefügt wurden, aber für ihre Hauptfunktion nicht benötigt werden, prüfen Sie die API-Ebene zur Laufzeit und stufen Sie die entsprechenden Funktionen 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, und vergleiche dann die aktuelle Systemversion SDK_INT mit der Codenamenskonstante in Build.VERSION_CODES, die der zu prüfenden API-Ebene entspricht. Beispiel:

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 Smartphones, Tablets und Fernsehern. Zur Kategorisierung von Geräten nach ihrem Bildschirmtyp 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, die als DPI bezeichnet wird). Um die verschiedenen Konfigurationen zu vereinfachen, verallgemeinert Android diese Varianten in Gruppen, die das Targeting erleichtern:

  • Vier allgemeine Größen: S, Normal, L und XL
  • Verschiedene allgemeine Dichten: mdpi (mittel), hdpi (hoch), xhdpi (extra hoch), xxhdpi (besonders hoch) und weitere

Ihre App ist standardmäßig mit allen Bildschirmgrößen und -dichten kompatibel, da das System das UI-Layout und die Bildressourcen je nach Bildschirm entsprechend anpasst. Optimierte Bitmapbilder für gängige Bildschirmdichten bereitstellen

Optimieren Sie die Nutzererfahrung, indem Sie nach Möglichkeit flexible Layouts verwenden. Wenn Layouts für große Konfigurationsänderungen wie Hoch- und Querformat oder große oder kleine Fenstergrößen vorhanden sind, sollten Sie alternative Layouts bereitstellen, die auch für kleinere Konfigurationsänderungen geeignet sind. Dies verbessert die Nutzererfahrung auf Formfaktoren wie Tablets, Smartphones und faltbaren Geräten. Das ist auch hilfreich, wenn sich die Größe von Fenstern im Mehrfenstermodus ändert.

Informationen dazu, wie du alternative Ressourcen für verschiedene Bildschirme erstellen und 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.

Die Verfügbarkeit deiner App aus geschäftlichen Gründen steuern

Neben der Einschränkung der Verfügbarkeit deiner App aufgrund von Geräteeigenschaften musst du möglicherweise die Verfügbarkeit deiner App auch aus geschäftlichen oder rechtlichen Gründen einschränken. In diesem Fall bietet der Google Play Store in der Play Console Filteroptionen, mit denen du die Verfügbarkeit deiner App aus nichttechnischen Gründen steuern kannst, z. B. anhand der Sprache des Nutzers oder des Mobilfunkanbieters.

Das Filtern nach technischer Kompatibilität – z. B. nach erforderlichen Hardwarekomponenten – basiert immer auf den Informationen in deiner APK- oder AAB-Datei. Das Filtern aus nicht technischen Gründen, z. B. aufgrund der geografischen Sprache, erfolgt immer in der Google Play Console.

Weitere Informationen:

App-Ressourcen – Übersicht
Informationen dazu, wie Android-Apps so strukturiert sind, dass sie App-Ressourcen vom App-Code trennen, und wie du alternative Ressourcen für bestimmte Gerätekonfigurationen bereitstellen kannst.
Filter bei Google Play
Informationen dazu, wie der Google Play Store die Installation deiner App auf verschiedenen Geräten verhindern kann.
Berechtigungen auf Android-Geräten
Wie Android den App-Zugriff auf bestimmte APIs mit einem Berechtigungssystem einschränkt, das die Einwilligung des Nutzers zur Verwendung dieser APIs durch deine App erfordert.