Auf ChromeOS-Geräten wie Chromebooks werden der Google Play Store und Android-Apps unterstützt. In diesem Dokument gehen wir davon aus, dass du schon eine Android-App für Smartphones oder Tablets entwickelt hast und sie jetzt für Chromebooks optimieren möchtest. Die Grundlagen der Entwicklung von Android-Apps finden Sie unter Erste Android-App erstellen.
Manifestdatei Ihrer App aktualisieren
Aktualisieren Sie zuerst Ihre Manifestdatei, um einige wichtige Hardware- und Softwareunterschiede zwischen Chromebooks und anderen Geräten mit Android zu berücksichtigen.
Ab ChromeOS-Version M53 funktionieren alle Android-Apps, für die die Funktion android.hardware.touchscreen nicht explizit erforderlich ist, auch auf ChromeOS-Geräten, die die Funktion android.hardware.faketouch unterstützen. Damit deine App aber tatsächlich auf allen Chromebooks verwendet werden kann, solltest du in deiner Manifestdatei die Einstellungen so anpassen, dass die Funktion android.hardware.touchscreen nicht erforderlich ist – unten siehst du ein Beispiel dazu.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
... >
<!-- Some Chromebooks don't support touch. Although not essential,
it's a good idea to explicitly include this declaration. -->
<uses-feature android:name="android.hardware.touchscreen"
android:required="false" />
</manifest>
Unterschiedliche Geräte haben unterschiedliche Sensoren. Chromebooks haben möglicherweise nicht alle Sensoren, die auf Android-Mobilgeräten verfügbar sind, z. B. GPS und Beschleunigungsmesser. Manchmal erfüllen allerdings andere Komponenten die gleiche Funktion wie ein bestimmter Sensor. Chromebooks haben beispielsweise keinen GPS-Sensor, liefern aber trotzdem Standortdaten – und zwar mithilfe von WLAN-Verbindungen. In der Sensoren-Übersicht findest du weitere Informationen zu den von der Android-Plattform unterstützten Sensoren.
Wenn deine App unabhängig von der Sensorverfügbarkeit auf Chromebooks laufen soll, musst du deine Manifestdatei so aktualisieren, dass keine Sensoren erforderlich sind.
Einige Softwarefunktionen werden auf Chromebooks nicht unterstützt. Das gilt beispielsweise für Apps mit benutzerdefinierten IMEs, App-Widgets, Live-Hintergründen und App Launchern – auf Chromebooks können sie deshalb nicht installiert werden. Eine vollständige Liste der Softwarefunktionen, die auf Chromebooks nicht unterstützt werden, findest du hier.
SDK-Zielversion aktualisieren
Aktualisieren Sie das Attribut targetSdkVersion Ihrer App auf den neuesten verfügbaren API-Level, um alle Verbesserungen der Android-Plattform nutzen zu können.
Sehen Sie sich die Verbesserungen auf der Android-Plattform in den verschiedenen Versionen an.
Netzwerkanforderungen prüfen
Auf Chromebooks wird das gesamte Android-Betriebssystem in einem Container ausgeführt, ähnlich wie bei Docker oder LXC. Dadurch hat Android keinen direkten Zugriff auf die LAN-Schnittstelle des Systems. Stattdessen wird IPv4-Traffic über eine interne NAT-Ebene (Network Address Translation) und IPv6-Unicast-Traffic über einen gesonderten Hop weitergeleitet.
Ausgehende Unicast-Verbindungen von einer Android-App ins Internet funktionieren größtenteils normal. Eingehende Verbindungen werden aber in der Regel blockiert. Multicast- oder Broadcast-Pakete aus Android werden nicht durch die Firewall ans LAN weitergeleitet.
Als Ausnahme von der Multicast-Einschränkung wird in ChromeOS ein Dienst ausgeführt, der mDNS-Traffic zwischen Android und der LAN-Schnittstelle weiterleitet. Daher sind die standardmäßigen Network Service Discovery-APIs die empfohlene Methode, um andere Geräte im LAN-Segment zu erkennen. Nachdem ein Gerät im LAN gefunden wurde, kann eine Android-App über standardmäßige TCP- oder UDP-Unicast-Sockets mit ihm kommunizieren.
Für IPv4-Verbindungen aus Android wird die IPv4-Adresse des ChromeOS-Hosts verwendet. In der Android-App wird intern eine private IPv4-Adresse als Zuordnung für die Netzwerkschnittstelle angezeigt. Für IPv6-Verbindungen aus Android wird eine andere Adresse als die des ChromeOS-Hosts verwendet, weil der Android-Container eine eigene öffentliche IPv6-Adresse hat.
Cloud- und lokalen Speicher effektiv nutzen
Mit Chromebooks können Nutzer ihre Daten ganz einfach zwischen Geräten migrieren. Wenn ein Nutzer von einem Chromebook auf ein neues wechselt, braucht er sich nur anzumelden und schon sind alle seine Apps verfügbar.
Sichere die Daten deiner App in der Cloud, damit sie zwischen Geräten synchronisiert werden können. Für den normalen Betrieb sollte Ihre App aber nicht auf eine Internetverbindung angewiesen sein. Speichere die Daten von Nutzern stattdessen lokal, solange das Gerät offline ist, und synchronisiere sie mit der Cloud, wenn das Gerät wieder online ist.
Chromebooks lassen sich außerdem von vielen Nutzern gemeinsam verwenden, zum Beispiel in Schulen. Da der lokale Speicher natürlich nicht unbegrenzt groß ist, können ganze Konten – zusammen mit ihrem Speicher – jederzeit vom Gerät entfernt werden. Das ist gerade für Schulen sehr hilfreich.
Neue Testläufe für Ihre App entwickeln
Wenn Sie Testfälle für Ihre App entwickeln möchten, müssen Sie zuerst die richtigen Manifest-Flags angeben. Insbesondere sollten Sie screenOrientation auf unspecified setzen. Wenn Sie eine Ausrichtung im Querformat angeben möchten, sollten Sie sensorLandscape verwenden, um dafür zu sorgen, dass die Ausrichtung auch auf Tablets richtig funktioniert.
Wenn Sie spezielle Anforderungen an Größe oder Ausrichtung für Desktopumgebungen haben, können Sie Meta-Tags als Hinweise für Größe oder Ausrichtung hinzufügen. Wenn Sie Größe und Ausrichtung auf Smartphones angeben möchten, verwenden Sie stattdessen die Attribute „layout“ defaultHeight, defaultWidth oder minHeight.
Falls die Eingabegeräte spezifischer Kategorien auf bestimmte Weise behandelt werden sollen, kannst du android.hardware.type.pc angeben. Damit wird der Kompatibilitätsmodus für die Eingabe deaktiviert.
Wenn du irgendeine Art von Netzwerk verwendest, muss die App sich wieder mit dem Netzwerk verbinden können, nachdem ein Verbindungsproblem behoben wurde oder der Ruhemodus auf dem Gerät beendet wird.
Wir empfehlen, die Liste der Testläufe für Android-Apps unter Chrome OS zu prüfen, die Sie in Ihrem Testplan verwenden können. In diesen Fällen werden gängige Szenarien beschrieben, auf die deine Android-Apps vorbereitet sein sollten, wenn du sie auf ChromeOS-Geräten ausführen möchtest.
Mehrfenstermodus und Änderungen der Ausrichtung
Damit deine App auch im Mehrfenstermodus von ChromeOS ihren aktuellen Zustand beibehält und wieder richtig aufgerufen wird, kannst du ["ViewModel"](https://developer.android.com/topic/libraries/architecture/viewmodel) verwenden. So wird der Zustand gespeichert und bei Bedarf wiederhergestellt. Verwenden Sie ViewModel, um den Status bei Bedarf zu speichern und wiederherzustellen.
Ob der Zustand beibehalten wird, lässt sich ganz einfach testen: Minimiere deine App für eine Weile und starte einen anderen Prozess mit einem hohen Ressourcenverbrauch. Stelle dann deine App wieder her und prüfe, ob sie sich noch im selben Zustand befindet.
Ob deine App bei Änderungen der Fenstergröße gleich bleibt, kannst du testen, indem du die Vollbildtaste (F4) drückst, das Fenster maximierst und dann wiederherstellst. Um die kostenlose Größenanpassung zu testen, musst du die Funktion erst in den Entwickleroptionen aktivieren. Anschließend kannst du prüfen, ob sich die Größe problemlos ändern lässt, ohne dass deine App abstürzt.
Wenn Ihr ChromeOS-Gerät es unterstützt, wechseln Sie vom Laptop- in den Tablet-Modus und vergewissern Sie sich, dass alles richtig funktioniert. Drehe das Gerät einmal im Tablet-Modus, um zu sehen, ob sich die Ausrichtung ändert, und wechsle dann wieder in den Laptop-Modus. Wiederholen Sie diesen Schritt einige Male.
Achte darauf, dass UI-Elemente oder die positionsbasierte Toucheingabe in der oberen Leiste sichtbar bleiben, damit deine App weiter genutzt werden kann. Bei ChromeOS-Geräten solltest du keine wichtigen App-Informationen im Bereich der Statusleiste platzieren.
Wenn du die Kamera oder anderes Hardwarezubehör wie den Stift verwendest, mache die gleichen Tests wie oben und prüfe, ob alles wie erwartet funktioniert.