Apps für ChromeOS erstellen

ChromeOS-Geräte wie Chromebooks unterstützen den Google Play Store und Android-Apps. In diesem Artikel gehen wir davon aus, dass Sie schon eine Android-App für Smartphones oder Tablets entwickelt haben und sie jetzt für Chromebooks optimieren möchten. Informationen zu den Grundlagen des Erstellens 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 Android-Geräten 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 Ihre App aber tatsächlich auf allen Chromebooks verwendet werden kann, sollten Sie in Ihrer 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 Hardwaregeräte sind mit unterschiedlichen Sensoren ausgestattet. Chromebooks haben möglicherweise nicht alle Sensoren, die auf Android-Mobilgeräten zu finden 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. Weitere Informationen zu den von der Android-Plattform unterstützten Sensoren finden Sie in der Sensorenübersicht.

Wenn Ihre App unabhängig von der Sensorverfügbarkeit auf Chromebooks laufen soll, müssen Sie Ihre 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, finden Sie hier.

Ziel-SDK aktualisieren

Aktualisieren Sie das Attribut targetSdkVersion Ihrer App auf das neueste verfügbare API-Level, um alle Verbesserungen der Android-Plattform nutzen zu können. Sehen Sie sich die Verbesserungen 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 führt ChromeOS einen Dienst aus, der mDNS-Traffic zwischen Android und der LAN-Schnittstelle weiterleitet. Daher werden die standardmäßigen APIs zur Netzwerkdienste-Erkennung empfohlen, um andere Geräte im LAN-Segment zu finden. Nachdem ein Gerät 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 ganz einfach von einem Gerät zu einem anderen migrieren. Wenn ein Nutzer von einem Chromebook auf ein anderes wechselt, muss er sich nur anmelden und schon sind alle seine Apps verfügbar.

Sichern Sie daher die Daten Ihrer App in der Cloud, um die geräteübergreifende Synchronisierung zu ermöglichen. Ihre App sollte jedoch nicht auf eine Internetverbindung angewiesen sein, um normal zu funktionieren. Speichern Sie stattdessen die Arbeit des Nutzers lokal, wenn das Gerät offline ist, und synchronisieren Sie sie mit der Cloud, sobald 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 Testfälle 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. Setzen Sie insbesondere screenOrientation auf unspecified. Wenn du die Ausrichtung als „landscape“ angeben möchtest, empfehlen wir, stattdessen sensorLandscape zu verwenden. So sorgst du dafür, dass die Ausrichtung auch auf Tablets richtig funktioniert.

Wenn du besondere Anforderungen an Größe oder Ausrichtung für Desktopumgebungen hast, kannst du entsprechende Hinweise auch über Meta-Tags hinzufügen. Wenn Sie Größe und Ausrichtung auf Smartphones berücksichtigen möchten, geben Sie stattdessen die Layoutattribute defaultHeight, defaultWidth oder minHeight an.

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 Ihnen, sich die Liste der Testfälle für Android-Apps unter ChromeOS anzusehen. Sie können sie in Ihrem Testplan verwenden. In diesen Fällen wird eine Reihe von gängigen Szenarien beschrieben, auf die deine Android-Apps vorbereitet sein sollten, wenn du sie auf ChromeOS-Geräten ausführen möchtest.

Änderungen am Mehrfenstermodus und an der Ausrichtung

Im Mehrfenstermodus von ChromeOS können Probleme mit der Zustandsspeicherung und -wiederherstellung deutlicher werden. Verwende ViewModel, um den Status bei Bedarf zu speichern und wiederherzustellen.

Ob der Zustand beibehalten wird, lässt sich ganz einfach testen: Minimieren Sie Ihre App für eine Weile und starten Sie einen anderen Prozess mit einem hohen Ressourcenverbrauch. Stellen Sie dann Ihre App wieder her und prüfen Sie, ob sie sich noch im selben Zustand befindet.

Ob Ihre App bei Änderungen der Fenstergröße gleich bleibt, können Sie testen, indem Sie die Vollbildtaste (F4) drücken, das Fenster maximieren und dann wiederherstellen. 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 prüfen Sie, ob alles wie erwartet funktioniert. Drehen Sie das Gerät einmal im Tablet-Modus, um die Ausrichtung zu testen, und wechseln Sie dann zurück in den Laptop-Modus. Wiederholen Sie diesen Schritt einige Male.

Achten Sie darauf, dass UI-Elemente oder die positionsbasierte Toucheingabe in der oberen Leiste sichtbar bleiben, damit Ihre App weiter genutzt werden kann. Bei ChromeOS-Geräten sollten Sie keine wichtigen App-Informationen im Bereich der Statusleiste platzieren.

Wenn Sie die Kamera oder eine andere Hardwarefunktion wie den Stift verwenden, prüfen Sie, ob alles wie erwartet funktioniert, wenn Sie die oben beschriebenen Fenster- und Geräteänderungen vornehmen.