iX 2/2018
S. 54
Review
App-Entwicklung
Aufmacherbild

Android Studio Version 3.0

Aller guten Dinge

Mit der dritten Major Release erweitert Google seine offizielle IDE noch einmal deutlich. Android Studio macht neue Sprachfeatures und verbesserte Diagnosewerkzeuge zugänglich.

Ende 2018 veröffentlichte Google Android Studio 3.0. Wie gehabt lassen sich mit der kostenlosen Entwicklungsumgebung komfortabel neue Apps für Smartphones und Tablets schreiben – viel mehr Funktionen bieten selbst kommerzielle Programme zum Beispiel aus dem Hause Microsoft in der Regel nicht. Trotzdem war noch Luft nach oben: In der neuen Version hat Google insbesondere bei den Sprachen Hand angelegt.

So war bislang ein Zusatzwerkzeug namens Jack notwendig, um Sprachsyntax und Bibliotheksfunktionen von Java 8 zu nutzen. Nun kann der Programmierer auf einige Features der Sprache wie Lambda-Ausdrücke, Methodenreferenzen, Type Annotations, statische und Standardschnittstellenmethoden, Try-with-Resources, java.util.stream und java.util.function zurückgreifen. Da Android Studio 3.0 auf JetBrains’ IntelliJ IDEA 2017.1 basiert, stehen außerdem Java-8-Refactoring-Funktionen zur Verfügung. All diese Features lassen sich mit allen Android-API-Levels einsetzen, während Jack ausschließlich mit API-Level 24 und höher funktionierte.

Desugaring: Googles Werkzeugkette für das Übersetzen in Android Studio 3.0 (Abb. 1)

Verantwortlich für die Java-8-Features sind direkt der Compiler javac und die Erweiterung für Gradle 3.0, die wiederum Gradle 4.1 voraussetzt. Hier stößt der Entwickler ebenfalls auf das neue Desugaring. Hierunter versteht Google das Umwandeln des Java-8-Bytescodes in einen äquivalenten älteren Bytecode, den ältere Plattformen weiterhin verstehen (siehe Abbildung 1). Das Desugaring umfasst aber nicht alle Java-8-Features, unter anderem fehlen Funktionen des SDK wie die neue, funktional programmierte Stream-API java.lang.stream.

Mehr Tempo dank neuer Werkzeugkette

Mit der neuen Werkzeugkette verspricht Google eine höhere Übersetzungsgeschwindigkeit bei Projekten, die aus vielen Modulen bestehen. Es gibt allerdings einige Breaking Changes in der Build-Beschreibung, die jeder Entwickler beim Upgrade auf die Version 3.0 des Gradle-Plug-ins manuell beheben muss.

Kompiliert: Die Werkzeugkette beim neuen D8-Dexer im Vergleich zu DX (Abb. 2)

Für die notwendige Übersetzung zwischen Java-Bytecode und dem DEX-Bytecode für die Android Runtime (früher: Dalvik Runtime) beim Erstellen einer .APK-Datei führt Google nun schrittweise einen neuen Cross-Compiler – Dexer genannt – mit Namen D8 ein. Er ist schneller als der bisherige DX-Compiler und produziert kleinere Ausgabedateien (siehe ix.de/ix1802054). Während D8 Android Studio 3.0 noch als optionales Preview beiliegt – zu aktivieren mit android.enableD8=true in der Datei gradle.properties –, ist der Compiler in der bei Erscheinen des Artikels in einer Vorschau verfügbaren Version 3.1 automatisch aktiv und lässt sich auf Wunsch per android.enableD8=false abschalten. App-Entwickler profitieren von D8 ohne Änderungen am Programmcode; Werkzeuge, die auf Bytecode aufsetzen, müssen Anbieter für die neue Werkzeugkette (siehe Abbildung 2) jedoch anpassen.

Die JVM-basierte Programmiersprache Kotlin von JetBrains, die Entwickler bisher per Plug-in nachrüsten mussten, ist mit Android Studio 3.0 im Lieferumfang enthalten. Kotlin-Programmcode lässt sich in bestehenden Projekten direkt verwenden. Bei neuen Projektelementen wie Android-Aktivitäten kann der Entwickler im Erstellungsdialog als „Source Language“ einfach „Kotlin“ wählen; über „File –> New –> Kotlin File/Class“ kann er eine Kotlin-Datei erstellen.

Ferner lässt sich Java-Programmcode in Kotlin überführen, zu finden unter „Code –> Convert Java File to Kotlin File“. Die umgekehrte Konvertierung von Kotlin zu Java fehlt jedoch. Immerhin kann ein Entwickler mit „Zurück“ die Konvertierung widerrufen, solange er sie nicht gespeichert hat.

Bessere Profiling-Werkzeuge

Überwacht: Der Android Profiler bietet mehr Details als das bisherige Monitoring Tool (Abb. 3).

Schon bisher konnte sich der Entwickler im Android Monitor Tool während des Laufs einer Anwendung Speicher-, CPU- und Netzwerklast grafisch ausgeben lassen. Der in Version 3.0 der IDE eingeführte Android Profiler unter „View –> Tool Windows –> Android Profiler“ ersetzt komplett das bisherige Werkzeug. Die neue Zeitliniendarstellung bietet mehr Informationen (siehe Abbildung 3), so befindet sich oberhalb der Diagramme eine Aktivitätszeitlinie, die die Ereignisse der App, die Touch- und Tasteninteraktion des Nutzers mit dem Gerät sowie Bildschirmrotationen sammelt. Der Entwickler kann die Zeitlinien jederzeit anhalten und Ausschnitte vergrößern. Für die Textausgabe von Ereignissen, im Fenster des Monitor-Tools unter der Registerkarte „Logcat“ enthalten, gibt es im Profiler ein eigenständiges Fenster („View –> Tool Windows –> Logcat“).