ChromeOS-Lint-Regeln in Android Studio

Wir bei ChromeOS möchten Entwicklertools und Frameworks verbessern, damit Android-App-Entwickler ihre Apps nahtlos für Chromebooks optimieren können. Dabei müssen wir konsequent nach Möglichkeiten suchen, Entwicklern wirkungsvolle Tools zur Verfügung zu stellen, um die Entwicklung für große Bildschirme und ChromeOS zu verbessern.

ChromeOS hat sich im Laufe der Jahre weiterentwickelt, da immer wieder neue Herausforderungen aufgetreten sind. Eine dieser Herausforderungen besteht darin, Entwickler frühzeitig und häufig über kritische Probleme zu informieren. Lint-Regeln sind das Herzstück der Qualität, da sie Entwicklern Warnsignale für Probleme liefern, die auftreten, wenn sie nicht behoben werden. Unsere aktualisierten Lint-Regeln bieten Entwicklern mehr Einblick in die Ausführung ihrer Apps unter ChromeOS. Sie zeigen sowohl Software- als auch Hardwareprobleme auf, die zweifellos Probleme für Android-Anwendungen verursachen, die auf einem beliebigen ChromeOS-Gerät ausgeführt werden.

Weitere Informationen zum Hintergrund dieser Lint-Regeln und ihrer Bedeutung finden Sie in unserem Blogpost.

Wo finde ich diese Lint-Regeln?

Wir arbeiten seit einigen Monaten aktiv an der Entwicklung. Im Rahmen des Veröffentlichungszeitplans von Android Studio werden einige Lint-Regeln mit den Canary-Builds von Electric Eel eingeführt. Einige dieser Lint-Regeln sind jetzt auch in den Flamingo-Canary-Releases verfügbar. In den kommenden Monaten werden wir diese Funktionen in die stabilen Versionen von Android Studio einbauen.

Außerdem ist es wichtig zu wissen, dass diese Regeln in neueren Versionen von Android Studio standardmäßig aktiviert sind. Ziel ist es, eine fundiertere Anleitung zu geben, wie wir Entwickler in Zukunft bei der Entwicklung für ChromeOS und größere Bildschirme unterstützen möchten.

Neue Lint-Regeln (aktualisiert mit Flamingo Canary 3)

Unterstützung von x86/x86_64-ABIs

Die meisten Chromebooks basieren auf der Intel-Architektur und sind daher hauptsächlich x86-Architekturplattformen. Damit ChromeOS richtig unterstützt wird, wenn NDK-Code als Teil des Binärprogramms enthalten ist, ist x86 ein Leistungsschub, da die Übersetzung von ARM-Bibliotheken entfällt. Daher wird dringend empfohlen, dass Ihr Entwicklungsteam die Unterstützung für die x86- oder vorzugsweise die x86_64-Architektur hinzufügt, da dies die Leistung von nativem Code auf ChromeOS- oder Intel-Geräten erheblich verbessern würde.

Lösung

Fügen Sie nach Möglichkeit x86 und x86_64 in abiSplits in build.gradle ein. Achten Sie außerdem darauf, dass Sie den Code in die entsprechenden Ordner einfügen, um diese ABIs zu unterstützen. Weitere Informationen finden Sie in der Dokumentation zu Android-ABIs und im Vortrag ABI Support from ADS.

Hinweis:Alle verwendeten Drittanbieterbibliotheken müssen auch x86- und x86_64-Binärdateien haben.

ChromeOS-Hardwarebeschränkung

Die meisten ChromeOS-Geräte haben im Vergleich zu einem Android-Smartphone eine kleinere Auswahl an Hardwaresensoren und anderen Funktionen. Mit dieser Regel sollen Entwickler darauf hingewiesen werden, dass ihre App nicht im Google Play Store unter ChromeOS verfügbar ist, wenn sie das Flag <uses-feature> mit android:required=true verwenden. Wir empfehlen dringend, dass die Hardwarefunktion nicht standardmäßig erforderlich ist, damit Ihre App auf möglichst vielen Geräten verwendet werden kann. Stattdessen können Sie defensiven Code hinzufügen, um zur Laufzeit nach bestimmter Hardware zu suchen. Ein Beispiel dafür wäre

<uses-feature android:name="android.hardware.camera" android:required="true">

Lösung

Prüfen Sie, ob die Funktionen in Ihrer Anwendung tatsächlich erforderlich sind. Wenn nicht, ändern Sie den Parameter android:required in false und fügen Sie defensive Programmierung hinzu, wenn API-Aufrufe erforderlich sind. Weitere Informationen finden Sie in der Dokumentation zu explizit deklarierten Funktionen.

Aktivitäten, deren Größe nicht angepasst werden kann

Standardmäßig wird eine Android-App in der Smartphone- oder Tablet-Version der Anwendung gestartet, je nach Standard-UI-Status. Dies gilt für die Android-Laufzeit für ChromeOS, auf der Android R oder höher auf Chromebooks ausgeführt wird. Es gibt jedoch eine dritte Option, die für ChromeOS-Nutzer besser geeignet ist: der Modus „Resizable“ (Größe anpassbar). Wenn Sie dieses Flag als Teil Ihrer Aktivität aktivieren, können Nutzer, die Ihre Anwendung in einer beliebigen Umgebung mit mehreren Fenstern verwenden können, die Größe Ihrer Anwendung anpassen. Durch diese Änderungen können Nutzer die Benutzeroberfläche an ihre Bedürfnisse anpassen. Nachdem Sie diese Änderungen in Ihr Manifest aufgenommen haben, testen Sie Ihre Anwendung mit dem unten aufgeführten Desktop-Emulator.

Anwendung im Desktop-Emulator testen

Lösung

Fügen Sie das Attribut resizableActivity="true" Ihrer Aktivität in der Datei AndroidManifest.xml hinzu. Weitere Informationen finden Sie in der Dokumentation zu Einschränkungen für große Displays.

Konfigurationsänderungen

Ein wichtiger Hinweis zu anpassbaren Bildschirmen: Jedes Mal, wenn ein Nutzer die Größe der Anwendung ändert, wird onConfigurationChanged() aufgerufen. Wenn Ihre App innerhalb dieser Methode ein vollständiges Neuzeichnen ausführt, hat dies Auswirkungen auf die Leistung. Derzeit prüfen wir, ob finish() innerhalb von onConfigurationChanged aufgerufen wird. Sie sollten savedInstanceState nämlich mit mehr Granularität verarbeiten, anstatt ein vollständiges Neuzeichnen zu erzwingen. Wir werden weiterhin Fälle finden, in denen die Leistung beeinträchtigt wird, und diese Regel entsprechend aktualisieren.

Lösung

Achten Sie darauf, dass finish() nicht in der onConfigurationChanged() API in Ihren Aktivitäten und Fragmenten aufgerufen wird. Weitere Informationen finden Sie in der Dokumentation zum Verarbeiten von Konfigurationsänderungen.

Unterstützung von Tastatur und Maus

Da Jetpack Compose immer häufiger verwendet wird, wollten wir dafür sorgen, dass die Entwicklung mit diesen Bibliotheken künftig auch Funktionen für die Unterstützung von Maus und Tastatur umfasst. Wir werden die Bedienung mit Maus, Tastatur, Trackpad und anderen Peripheriegeräten im Laufe der Zeit weiter verbessern. Damit Sie die Baseline-Optionen erhalten, müssen Sie Ihre Gradle-Abhängigkeiten auf die mindestens erforderlichen Versionen aktualisieren.

Lösung

Aktualisieren Sie androidx.compose.foundation:foundation auf mindestens Version 1.2. Weitere Informationen finden Sie in den Versionshinweisen zu Compose.

Tipp:90% der Nutzer interagieren mit Apps auf Chromebooks über eine Tastatur und Maus. (Quelle: Interne Daten von Google, 2022*)

Feedback

Das Team arbeitet ständig daran, diese Tools und die Dokumentation zu Optimierungen für große Displays zu verbessern. Ein wichtiger Schritt in diesem Prozess ist, uns Feedback zur Genauigkeit und Nützlichkeit der in Android Studio bereitgestellten Lint-Regeln zu geben. Dazu können Sie Feedback zur Regel geben. Wenn die Lint-Regel in Android Studio angezeigt wird, klicken Sie auf „Feedback zu dieser Warnung geben“. Daraufhin sollte ein Dialogfeld ähnlich dem unten stehenden angezeigt werden. Je genauer und beschreibender die Informationen sind, desto schneller können wir die entsprechenden Änderungen vornehmen.

Dialogfeld für Feedback in Android Studio