Google Home reduziert die häufigste Ursache für Abstürze um 33%

Mit der Google Home App kannst du Google Home-, Google Nest- und Chromecast-Geräte sowie Tausende weitere Smart-Home-Produkte wie Lampen, Kameras und Thermostate einrichten, verwalten und steuern.

Das Entwicklungsteam hinter der Google Home App profitiert von der Verwendung von Kotlin und Android Jetpack-Bibliotheken, da dies die Produktivität und Zufriedenheit der Entwickler steigert.

Vorgehensweise

Das Google Home-Team hat sich entschieden, Kotlin in seinen Code aufzunehmen, um die Programmierung produktiver zu gestalten und die Verwendung moderner Sprachfunktionen wie var/val, Smart Casts und Coroutines zu ermöglichen. Seit Juni 2020 sind etwa 30% des Codes in Kotlin geschrieben. Die Entwicklung in Kotlin wird für alle neuen Funktionen empfohlen.

Das Team hat außerdem Jetpack-Bibliotheken eingeführt, um die Entwicklungsgeschwindigkeit zu erhöhen, den Wartungsaufwand für Boilerplate-Code zu verringern und die erforderliche Menge an Code zu reduzieren. Jetpack-Bibliotheken haben auch dazu beigetragen, den Code besser testbar zu machen, da es klarere funktionale Grenzen und APIs gibt.

Ergebnisse

„Effizienz und weniger Code schreiben, der mehr leistet, ist die ‚Geschwindigkeitssteigerung‘, die Sie mit Kotlin erreichen können.“ – Jared Burrows, Software Engineer bei Google Home

Durch die Umstellung auf Kotlin konnte die Menge des erforderlichen Codes im Vergleich zum entsprechenden vorhandenen Java-Code reduziert werden. Ein Beispiel ist die Verwendung von Datenklassen und des Parcelize-Plug-ins: Eine Klasse, die in Java 126 Zeilen umfasste, kann jetzt in nur 23 Zeilen in Kotlin dargestellt werden – eine Reduzierung um 80 %. Außerdem können Methoden für Gleichheit und Aufteilung automatisch generiert und auf dem neuesten Stand gehalten werden. Viele verschachtelte Schleifen und Filterprüfungen wurden ebenfalls mithilfe der in Kotlin verfügbaren funktionalen Methoden vereinfacht.

Da Kotlin Nullable-Typen in die Sprache integriert, können schwierige Situationen vermieden werden, z. B. wenn eine inkonsistente Verwendung von Nullable-Annotationen in Java zu einem übersehenen Fehler führen könnte. Seitdem das Team neue Funktionen mit Kotlin entwickelt, sind NullPointerExceptions um 33% zurückgegangen. Da dies die häufigste Art von Abstürzen in der Google Play Console ist, führte die Reduzierung zu einer erheblichen Verbesserung der Nutzerfreundlichkeit.

Bei einer großen, ausgereiften App wie Google Home mit über einer Million Codezeilen ist es hilfreich, Jetpack-Bibliotheken nach und nach hinzufügen zu können. Durch die Einbindung konnten maßgeschneiderte Lösungen konsolidiert und ersetzt werden, manchmal sogar durch eine einzige Bibliothek. Da Jetpack-Bibliotheken Entwicklern helfen können, Best Practices zu befolgen und weniger ausführlich zu sein (z. B. durch die Verwendung von Room oder ConstraintLayout), wurde auch die Lesbarkeit verbessert. Das Team betrachtet viele der neueren Jetpack-Bibliotheken als „Must-haves“, darunter ViewModel und LiveData, die beide in der Google Home-Codebasis häufig verwendet werden.

Das Google Home App-Team fand die Jetpack KTX-Integrationen mit Kotlin-Coroutinen besonders hilfreich. Das Team kann jetzt schwierige asynchrone Programmierfehler vermeiden, indem es Coroutinen mit lebenszyklusbewussten Komponenten wie ViewModel verknüpft.

Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.

Jetzt starten

Weitere Informationen zum Schreiben von Android-Apps in Kotlin und zur Verwendung von Android Jetpack-Bibliotheken