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 entwickeln, auf dem das Android-Betriebssystem ausgeführt wird. 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 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 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 haben einige Geräte möglicherweise keinen Kompasssensor. 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 dazu optionale Features zur Laufzeit deaktivieren und Anwendungsressourcen mit Alternativen für verschiedene Konfigurationen bereitstellen, z. B. verschiedene 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 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 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 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 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. 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 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 häufig 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 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) ... } }
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. 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 kann auf Geräten verschiedener Größe wie Smartphones, Tablets und Fernsehern ausgeführt werden. Zur Kategorisierung von Geräten nach 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, werden diese Varianten von Android in Gruppen zusammengefasst, die die Ausrichtung erleichtern:
- Vier allgemeine Größen: S, Normal, L und XL
- 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. Optimierte Bitmapbilder für gängige Bildschirmdichten bereitstellen
Optimieren Sie die Nutzerfreundlichkeit, 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. So wird die Nutzerfreundlichkeit auf Geräten wie Tablets, Smartphones und faltbaren Geräten verbessert. Das ist auch hilfreich, wenn sich die Größe von Fenstern 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 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 Standorts, erfolgt jedoch immer in der Google Play Console.
Weitere Informationen:
- Übersicht über App-Ressourcen
- 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 zur Verfügung stellen kannst.
- 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 auf Android-Geräten
- 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.