Apps für ChromeOS erstellen

ChromeOS-Geräte wie Chromebooks unterstützen den Google Play Store und Android-Apps. In diesem Artikel wird davon ausgegangen, dass Sie eine für Smartphones oder Tablets entwickelte Android-App haben, die Sie für Chromebooks optimieren möchten. Die Grundlagen zum Erstellen von Android-Apps finden Sie unter Erste Android-App erstellen.

Manifestdatei Ihrer App aktualisieren

Aktualisiere zuerst deine 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, die die Funktion android.hardware.touchscreen nicht explizit benötigen, auch auf ChromeOS-Geräten, die die Funktion android.hardware.faketouch unterstützen. Damit deine App auf allen Chromebooks funktioniert, musst du die Manifestdatei jedoch so aktualisieren, dass die Funktion android.hardware.touchscreen nicht erforderlich ist, wie im folgenden Beispiel gezeigt.

<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>

Verschiedene Hardwaregeräte sind mit unterschiedlichen Sensoren ausgestattet und Chromebooks verfügen möglicherweise nicht über alle Sensoren, die in Android-Handheld-Geräten wie GPS und Beschleunigungsmessern zu finden sind. In manchen Fällen wird die Funktionalität eines Sensors jedoch auf andere Weise bereitgestellt. Chromebooks haben beispielsweise keine GPS-Sensoren, aber sie liefern Standortdaten basierend auf der WLAN-Verbindung. Weitere Informationen zu den von der Android-Plattform unterstützten Sensoren finden Sie in der Sensorübersicht.

Wenn Ihre App unabhängig von der Sensorverfügbarkeit auf Chromebooks ausgeführt werden soll, aktualisieren Sie Ihre Manifestdatei so, dass keine Sensoren erforderlich sind.

Einige Softwarefunktionen werden auf Chromebooks nicht unterstützt. Beispielsweise werden Apps mit benutzerdefinierten IMEs, App-Widgets, Live-Hintergründen und App Launchern nicht unterstützt und können nicht auf Chromebooks installiert werden. Eine vollständige Liste der Softwarefunktionen, die von Chromebooks nicht unterstützt werden, finden Sie unter Inkompatible Softwarefunktionen.

Ziel-SDK aktualisieren

Aktualisieren Sie das Attribut targetSdkVersion Ihrer App auf das neueste verfügbare API-Level, um von allen Verbesserungen der Android-Plattform zu profitieren. Hier erfährst du mehr über die Verbesserungen der Android-Plattform in den verschiedenen Versionen.

Netzwerkanforderungen prüfen

Auf Chromebooks wird das gesamte Android-Betriebssystem in einem Container ausgeführt, ähnlich wie bei Docker oder LXC. Das bedeutet, dass Android keinen direkten Zugriff auf die LAN-Schnittstelle des Systems hat. Stattdessen wird IPv4-Traffic über eine interne Ebene der Network Address Translation (NAT) und IPv6-Unicast-Traffic über einen zusätzlichen Hop weitergeleitet.

Ausgehende Unicast-Verbindungen von einer Android-App zum Internet funktionieren größtenteils unverändert. Eingehende Verbindungen werden in der Regel blockiert. Multicast- oder Broadcast-Pakete von Android werden nicht über die Firewall an das LAN weitergeleitet.

Abgesehen 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 Netzwerkdiensterkennung empfohlen, 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.

IPv4-Verbindungen von Android verwenden die IPv4-Adresse des ChromeOS-Hosts. Intern erkennt die Android-App eine private IPv4-Adresse, die der Netzwerkschnittstelle zugewiesen ist. IPv6-Verbindungen von Android verwenden eine andere Adresse als der ChromeOS-Host, da der Android-Container eine dedizierte öffentliche IPv6-Adresse hat.

Cloud-Speicher und lokalen Speicher effektiv nutzen

Mit Chromebooks können Nutzer ganz einfach von einem Gerät zum anderen migrieren. Wenn ein Nutzer ein Chromebook nicht mehr verwendet, sondern ein anderes nutzt, muss er sich nur noch anmelden und alle seine Anwendungen werden angezeigt.

Sichern Sie aufgrund dieser Funktion die Daten Ihrer App in der Cloud, um die geräteübergreifende Synchronisierung zu ermöglichen. Verlassen Sie sich jedoch nicht auf eine Internetverbindung, damit Ihre Anwendung normal funktioniert. Speichern Sie stattdessen die Arbeit des Nutzers lokal, wenn das Gerät offline ist, und synchronisieren Sie es mit der Cloud, sobald es wieder online ist.

Chromebooks können auch von einer großen Anzahl von Personen gemeinsam genutzt werden, z. B. in Bildungseinrichtungen. Da der lokale Speicher nicht unbegrenzt ist, können ganze Konten – zusammen mit ihrem Speicher – jederzeit vom Gerät entfernt werden. Im Bildungsbereich empfiehlt es sich, dieses Szenario im Hinterkopf zu behalten.

NDK-Bibliotheken aktualisieren

Wenn deine App die Android-NDK-Bibliotheken verwendet und die SDK-Zielversion 23 oder höher ist, achte darauf, dass Textverschiebungen sowohl aus den ARM- als auch aus den x86-Versionen deiner NDK-Bibliotheken entfernt werden, da sie nicht mit Android 6.0 (API-Level 23) und höher kompatibel sind. Wenn Sie Textverschiebungen in den NDK-Bibliotheken beibehalten, können auch Kompatibilitätsfehler mit Chromebooks auftreten, insbesondere wenn das Gerät auf einem Gerät mit einer x86-Architektur ausgeführt wird.

Neue Testläufe für deine App entwickeln

Gib beim Entwickeln von Testläufen für deine App zuerst die richtigen Manifest-Flags an. Sie sollten insbesondere screenOrientation auf unspecified setzen. Wenn du ein Querformat festlegen möchtest, solltest du sensorLandscape verwenden, damit das Tablet optimal genutzt werden kann.

Wenn Sie besondere Anforderungen an die Größe oder Ausrichtung von Desktop-Umgebungen haben, können Sie Meta-Tags als Hinweise auf Größe oder Ausrichtung hinzufügen. Wenn Sie auch Größe und Ausrichtung auf Smartphones berücksichtigen möchten, geben Sie stattdessen die Layoutattribute defaultHeight, defaultWidth oder minHeight an.

Wenn Sie an einer bestimmten Handhabung von Eingabegeräten für bestimmte Gerätekategorien interessiert sind, geben Sie android.hardware.type.pc an, um den Eingabekompatibilitätsmodus zu deaktivieren.

Wenn Sie ein Netzwerk verwenden, achten Sie darauf, dass sich die App wieder mit dem Netzwerk verbinden kann, nachdem ein Verbindungsproblem behoben wurde oder der Ruhemodus des Geräts beendet wird.

Wir empfehlen, die Liste der Testfälle für Android-Apps unter Chrome OS zu prüfen, die du in deinem Testplan verwenden kannst. Die Testläufe decken häufige Szenarien ab, auf die Android-Apps vorbereitet sein sollten, wenn sie voraussichtlich auf ChromeOS-Geräten ausgeführt werden.

Mehrfenstermodus und Ausrichtungsänderungen

Die Mehrfensterumgebung von ChromeOS macht die Zustandspersistenz und die Fehlererinnerung deutlicher. Verwenden Sie ViewModel, um den Status zu speichern und gegebenenfalls wiederherzustellen.

Minimieren Sie zum Testen der Zustandspersistenz Ihre Anwendung für einige Zeit, starten Sie einen weiteren ressourcenintensiven Prozess und stellen Sie die Anwendung wieder her, um zu bestätigen, dass sie in den Zustand zurückkehrt, in dem Sie sie belassen haben.

Testen Sie die Größe des Fensters durch Drücken der Vollbildtaste (F4) zum Maximieren und Wiederherstellen. Wenn Sie die kostenlose Größenanpassung testen möchten, aktivieren Sie sie zuerst in den Entwickleroptionen und prüfen Sie dann, ob sich die Größe Ihrer App reibungslos ändert, ohne abstürzen zu müssen.

Wenn Ihr ChromeOS-Gerät dies unterstützt, wechseln Sie vom Laptop- zum Tablet-Modus, um zu prüfen, ob alles wie erwartet funktioniert. Drehen Sie das Gerät einmal im Tablet-Modus, um Änderungen der Ausrichtung zu testen, und wechseln Sie dann zurück in den Laptop-Modus. Wiederholen Sie diesen Schritt einige Male.

Achte darauf, dass die obere Leiste deine App nicht beeinträchtigt, indem du UI-Elemente oder die standortbasierte Toucheingabe verlegst. Achten Sie bei ChromeOS-Geräten darauf, dass Ihre App keine wichtigen Informationen im Bereich der Statusleiste enthält.

Wenn du die Kamera oder eine andere Hardwarefunktion wie den Eingabestift verwendest, achte darauf, dass sie bei den oben beschriebenen Änderungen an Fenster und Gerät einwandfrei funktioniert.