Android ist für viele verschiedene Geräte konzipiert, z. B. Smartphones, Tablets und Fernseher. Diese Bandbreite eröffnet dir eine riesige potenzielle Zielgruppe für deine App. Damit deine App auch auf allen Geräten erfolgreich läuft, 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. Wenn du dein App-Design und zusätzliche App-Ressourcen im Voraus planst, kannst du ein einzelnes Anwendungspaket (APK) veröffentlichen, das die Nutzererfahrung 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 du festlegen kannst, welche Geräte Zugriff auf deine Apps haben, und wie du deine Apps so vorbereiten kannst, dass sie die richtige Zielgruppe erreichen.
Was bedeutet „Kompatibilität“?
Im Hinblick 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 darauf Apps korrekt ausgeführt werden können, 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 musst du dir keine Gedanken darüber machen, ob ein Gerät Android-kompatibel ist, da der Google Play Store nur auf Android-kompatiblen Geräten verfügbar ist. Wenn ein Nutzer deine App also aus dem Google Play Store installiert, verwendet er ein Android-kompatibles Gerät.
Du musst jedoch prüfen, ob deine 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. Einige Geräte haben beispielsweise keinen Kompasssensor. Wenn für die Hauptfunktionen deiner App ein Kompasssensor erforderlich ist, ist deine App nur mit Geräten kompatibel, die diese Funktion bieten.
Verfügbarkeit deiner 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 einige hängen von der Plattformversion ab. Nicht jedes Gerät unterstützt alle Funktionen. Daher musst du möglicherweise die Verfügbarkeit deiner App für Geräte basierend auf den erforderlichen Funktionen deiner App steuern.
Um die größtmögliche Nutzerbasis für deine App zu erreichen, solltest du so viele Gerätekonfigurationen wie möglich mit einem einzelnen APK oder AAB unterstützen. In den meisten Fällen kannst du dies tun, indem du optionale Funktionen zur Laufzeit deaktivierst und App -Ressourcen mit Alternativen für verschiedene Konfigurationen bereitstellst, z. B. verschiedene Layouts für unterschiedliche Bildschirmgrößen. Bei Bedarf kannst du die Verfügbarkeit deiner App im Google Play Store auf bestimmte Geräte beschränken. Die Beschränkung basiert auf den folgenden Gerätecharakteristiken:
Gerätefunktionen
Um die Verfügbarkeit deiner 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 ist beispielsweise FEATURE_SENSOR_COMPASS und die Funktions-ID für App-Widgets ist FEATURE_APP_WIDGETS.
Bei Bedarf kannst du verhindern, dass Nutzer deine App installieren, wenn ihre
Geräte eine erforderliche Funktion nicht bieten. Dazu deklarierst du die Funktion mit einem
<uses-feature>
Element in der
Manifestdatei deiner App.
Wenn deine App beispielsweise auf einem Gerät ohne Kompasssensor nicht sinnvoll ist, kannst du den Kompasssensor mit dem folgenden Manifest-Tag als Voraussetzung deklarieren:
<manifest ... > <uses-feature android:name="android.hardware.sensor.compass" android:required="true" /> ... </manifest>
Der Google Play Store vergleicht die Funktionen, die deine App benötigt, mit den Funktionen, die auf dem Gerät des jeweiligen Nutzers verfügbar sind, um zu ermitteln, ob deine App mit dem Gerät kompatibel ist. Wenn das Gerät nicht alle Funktionen bietet, die deine App benötigt, kann der Nutzer deine App nicht installieren.
Wenn für die Hauptfunktionen deiner App jedoch keine Gerätefunktion erforderlich ist, setze das
required
Attribut auf "false" und prüfe zur Laufzeit, ob die Gerätefunktion verfügbar ist.
Wenn die App-Funktion auf dem aktuellen Gerät nicht verfügbar ist, deaktiviere die entsprechende App-Funktion auf kontrollierte Weise. Du kannst beispielsweise abfragen, 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 du die Verfügbarkeit deiner App über den 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 nachfolgenden Plattformversion werden häufig APIs hinzugefügt, die in der vorherigen Version nicht verfügbar sind. Um anzugeben, welche APIs verfügbar sind, wird für jede Plattformversion ein API-Level festgelegt. Android 12 hat beispielsweise API-Level 31 und Android 13 hat API-Level 33.
Du musst die
minSdkVersion
und
targetSdkVersion
Werte in deiner build.gradle Datei 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 build.gradle Datei findest du unter
Build konfigurieren.
Jede nachfolgende Version von Android bietet Kompatibilität für Apps, die mit den APIs aus früheren Plattformversionen erstellt wurden. Deine App ist also mit zukünftigen Versionen von Android kompatibel, wenn du die dokumentierten Android-APIs verwendest.
Wenn deine App jedoch APIs verwendet, die in einer neueren Plattformversion hinzugefügt wurden, aber für die Hauptfunktionen nicht erforderlich sind, prüfe zur Laufzeit das API-Level und deaktiviere die entsprechenden Funktionen auf kontrollierte Weise, wenn das API-Level zu niedrig ist. Setze in diesem Fall minSdkVersion auf den niedrigstmöglichen Wert für die Hauptfunktionen deiner App und vergleiche dann die aktuelle Systemversion SDK_INT mit der Codenamenkonstante in Build.VERSION_CODES, die dem API-Level entspricht, das du prüfen möchtest. Das folgende Beispiel zeigt, wie das geht:
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 wird auf Geräten unterschiedlicher Größe ausgeführt, z. B. Smartphones, Tablets und Fernsehern. Um Geräte nach Bildschirmtyp zu kategorisieren, definiert Android zwei Merkmale für jedes Gerät: Bildschirmgröße (die physische Größe des Bildschirms) und Pixeldichte (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 einfacher zu targetieren sind:
- Vier allgemeine Größen: klein, normal, groß und extragroß
- Mehrere allgemeine Dichten: mdpi (mittel), hdpi (hoch), xhdpi (extra hoch), xxhdpi (extra-extra hoch) und andere
Standardmäßig ist deine App mit allen Bildschirmgrößen und -dichten kompatibel, da das System das UI-Layout und die Bildressourcen nach Bedarf für jeden Bildschirm anpasst. Stelle optimierte Bitmap-Bilder für gängige Pixeldichten bereit.
Optimiere die Nutzererfahrung, indem du so oft wie möglich flexible Layouts verwendest. 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 Nutzererfahrung auf Formfaktoren wie Tablets, Smartphones und faltbaren Geräten verbessert. Außerdem ist es hilfreich, wenn sich die Größe von Fenstern im Multifenstermodus ändert.
Informationen zum Erstellen alternativer Ressourcen für verschiedene Bildschirme und zum Beschränken deiner App auf bestimmte Bildschirmgrößen findest du in der Übersicht zur Bildschirmkompatibilität und in den Qualitätsrichtlinien für Apps auf großen Displays.
Verfügbarkeit deiner App aus geschäftlichen Gründen steuern
Neben der Beschränkung der Verfügbarkeit deiner App basierend auf Gerätecharakteristiken musst du die Verfügbarkeit deiner App möglicherweise aus geschäftlichen oder rechtlichen Gründen einschränken. Für diese Situation 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. basierend auf dem Gebietsschema des Nutzers oder dem Mobilfunkanbieter.
Die Filterung nach technischer Kompatibilität, z. B. erforderliche Hardwarekomponenten, basiert immer auf Informationen in deiner APK- oder AAB-Datei. Die Filterung aus nichttechnischen Gründen, z. B. geografisches Gebietsschema, erfolgt immer in der Google Play Console.
Weitere Informationen:
- Übersicht über App-Ressourcen
- Informationen zur Struktur 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, mit denen der Google Play Store verhindern kann, dass deine App auf verschiedenen Geräten installiert wird.
- Berechtigungen in 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.