Android Graphics Pipeline
inovex

Android Studio 1.3: Neue Features im Überblick

Lesezeit
10 ​​min

Hinweis:
Dieser Blogartikel ist älter als 5 Jahre – die genannten Inhalte sind eventuell überholt.

Android Studio ist die offizielle IDE, um Android Applikationen zu entwickeln, und hat sich seit der überraschenden Ankündigung auf der Google I/O 2013 schnell weiterentwickelt. Das erste „fertige“ 1.0 Release wurde im Dezember 2014 veröffentlicht und hatte gegenüber dem klassischen ADT PlugIn für eclipse noch einige Defizite. Auf der diesjährigen I/O wurde ein Preview der Version 1.3 gezeigt, die seit Ende Juli als finales Release verfügbar ist. In diesem Artikel werfen wir einen Blick auf die neuen Features von Android Studio 1.3

SDK Manager

Der bisher als Standalone-Applikation verfügbare SDK-Manager wurde ins Android Studio integriert. Der SDK Manager ist der Paket-Manager des Android SDKs, er sorgt für die Updates der einzelnen Pakete und bietet dem Entwickler die gezielte Auswahl benötigter SDK-Komponenten an. Ein großer Vorteil der Integration ins Android Studio ist der damit verbundene regelmässige Check auf aktuellere Pakete wie etwa der Support Library, da beim Start der IDE direkt eine Benachrichtigung angezeigt wird, falls neue Versionen verfügbar sind. In diesem Zuge wurde auch die Installation des NDKs (Native Development Kit) mit in den SDK-Manager integriert.

Der SDK-Manager in Android Studion 1.3
Abb.1: SDK Manager

Neue Tools

Im Zuge der Migration des eclipse-basierten ADT-PlugIn auf Android Studio wurden weitere Tools direkt ins Android Studio integriert und dabei zum Teil wesentlich verbessert. Nachdem schon Trace View fester Bestandteil von Android Studio geworden ist, finden sich jetzt auch der Allocation Tracker und der Heap Dump Viewer in der neuen IDE ein.

Allocation Tracker

Der Allocation Tracker visualisiert die Anzahl neu erstellter Objekte über einen dedizierten Zeitraum. Dies ist zum Beispiel hilfreich, wenn die Applikation ungewünscht oft durch einen Garbage-Collector-Lauf unterbrochen wird und es damit zu Unterbrechungen bei Animationen oder dem Scrolling kommt. Der Allocation Tracker wird zur Laufzeit der Anwendung gestartet, den entsprechenden Button findet man im „Android“-Tool-Fenster unter dem „Memory“-Tab. Nach dem Start wird jedes neu erstellte Objekt erfasst, bis die Aufzeichnung beendet wird. Die Auswertung der Ergebnisse erfolgt tabellarisch, wie aus eclipse bekannt und zusätzlich auch grafisch, entweder als rundes „Sunburst“ Diagramm oder rechteckig. Wichtig bei der Darstellung ist die korrekte Sortierung entweder nach Anzahl der erstellten Objekte (wenn man z.B. auf der Suche nach unnötiger Garbage-Collector-Ausführung ist), oder nach Größe der Objekte (um z.B. Speicher-Probleme zu identifizieren).

Der Allocation Tracker in Android Studio 1.3
Abb.2: Allocation Tracker

Heap Snapshot Viewer (HPROF)

Der neue Heap Snapshot Viewer ist die Alternative zum MAT-PlugIn (Memory Analyzer) unter eclipse. Per Knopfdruck wird aus einer laufenden Applikation ein vollständiger Heap Dump erzeugt, also ein Abbild aller Objekte und deren Beziehungen. Dies ist hilfereich bei der Suche nach Memory Leaks, denn für jedes Objekt zeigt der Referenzbauman der Wurzel das sogenannte GC-Root auf, also die Referenz, die dafür verantwortlich ist, dass dieses Objekt im Speicher gehalten wird und nicht vom Garbage Collector gelöscht werden kann. Spannend hierbei sind vor allem größere Objekte wie Activities oder Bitmaps. Tauchen diese öfter als benötigt im Heap Dump auf, sollte man auf jeden Fall nach der Ursache forschen. Ein Heap Dump lässt sich per Klick während der App-Ausführung im „Memory“-Tab des „Android“-Tool-Fensters erstellen. Die Konvertierung in das HPROF Format und das Parsen erfolgt automatisch. Die Darstellung ist dreigeteilt und zeigt links oben eine Ansicht der erfassten Klassen. Selektiert man eine Klasse, erhält man rechts daneben eine Ansicht der jeweiligen Objekte, also Instanzen der Klasse mit ihren jeweiligen Eigenschaften und Heap-Größen. Möchte man herausfinden, warum eine Instanz im Speicher gehalten wird, sieht man im unteren Bereich auf den Referenzbaum: Dieser gibt uns die Möglichkeit, die Referenzen auf die Instanz zu überprüfen und die Ursache zu ermitteln.

 

Der Heap Snapshot Viewer in Android Studio 1.3
Abb.3: Heap Snapshot Viewer

Captures-Ansicht

Schon etwas länger vorhanden ist im Android Studio das „Captures“-Tool-Window. Hier werden alle erzeugten Snapshots und traces gesammelt und angzeigt. Ein Doppelklick auf eine Datei öffnet das entsprechende Tool. Die Dateien werden im „/captures“ Verzeichnis des jeweiligen Projektes abgelegt und können bei Bedarf mit eingecheckt werden.

Captures Window in Android Studio 1.3
Abb.4: Captures Window

Native Code

Eine der größten Neuerungen in Android Studio 1.3 wird die Entwickler sehr freuen, die sich täglich mit dem NDK, also dem Native Development Kit, beschäftigen. Google spendiert den Android-Entwicklern eine ausgezeichnete C/C++ Unterstützung in der IDE. Öffnet man eine entsprechende .c/.cpp-Datei, erhält man vollständigen Support für die typische Sprachfeatures von C/C++ inklusive Refactorings, Code-Analyse etc. Google integriert hier die kommerzielle CLion IDE von Jetbrains in Android Studio und bietet sie der Android Community damit for free an! Mit CLion kommt auch Native Debugging mit in die IDE. Hier kann der Entwickler zwischen dem GDB und dem neuen LLDB Debugger wählen (unter Run/Debug Configurations > Android Native > „Native Debugger“). Doch damit nicht genug – Android Studio bietet noch ein ganz spezielles Feature an: Die IDE hat ein vollständiges Verständnis von JNI, dem Java Native Interface und kann somit schon während der Entwicklungzeit sowohl die Java- also auch die native Seite des Codes analysieren und frühzeitig auf Fehler hinweisen. So checkt die IDE, ob die aus Java mit dem Keyword „native“ markierten Methoden im C-Code vorhanden sind und den von JNI vorgeschriebenen Namenskonventionen entsprechen. Über Code Completion lassen sich die Methoden im C-Code erzeugen. Zusätzlich generiert die IDE schon typische Parameter-Konvertierungen, etwa für den Datentyp String. Damit werden dem Entwickler viele Arbeitsschritte speziell im JNI-Bereich erspart. Leider ist der Support für C/ C++ zur Zeit noch als Beta-Feature markiert. Dies dürfte unter anderem an der Problematik des Build-Systems liegen. Denn um alle Features nutzen zu können, muss der Entwickler auf das experimentelle Gradle-PlugIn für Android umsteigen, das sich zur Zeit mit Version 0.2 in der Beta-Phase befindet und eine modifizierte Syntax der build.gradle erfordert. Das „alte“ NDK-Build System wird noch unterstützt, allerdings muss hier das Property „android.useDeprecatedNdk=true“ in der lokalen gradle.properties-Datei gesetzt werden. Es bleibt abzuwarten, wie schnell das experimentelle Gradle-PlugIn zum Standard wird und welcher Migrationspfad für bestehende Projekte aufgezeigt wird.

 

Der C/C++ Editor in Android Studio 1.3
Abb.5: C/C++ Editor

Marshmallow kommt

… und damit einige Neuigkeiten für den Android-Entwickler. Viel diskutiert und an anderen Stellen ausführlichst besprochen: Das neue Permission System. Android Studio respektiert die Tatsache, dass der App zur Laufzeit Permissions gegeben und entzogen werden können. So überpüft die IDE, ob der Entwickler den aktuellen Zustand der Permission abfragt. Tut er das nicht, wird ein Fehler angezeigt und ein QuickFix angeboten. Weiterhin bietet die IDE einfachen Boilerplate-Code, um den Benutzer nach der Berechtigung zu fragen. Dies wird für Applikationen aktiviert, die das Target SDK auf 23 oder höher gesetzt haben.

 

Runtime Permissions in Android Studio 1.3
Abb.6: Runtime Permissions

Annotations

Android Studio unterstützt eine Reihe von Android-spezifischen Annotationen, um die Codequalität und Inspektion zur Compile-Zeit zu unterstützen. So können Methoden markiert werden, die zum Beispiel die Ausführung im UI-Thread erfordern. Ebenso können Integer Konstanten markiert werden, um zu verdeutlichen, dass hier z.B. die ID einer Ressource oder ein Farbwert erwartet wird. Eine vollständige Liste findet sich bei den Android Developers. Dies Annotation sollten auch in eigenen Methoden und Klassen verwendet werden, daher lohnt sich hier ein tiefergehender Blick!

Debugger

Der ohnehin schon ausgezeichnete Java-Debugger von IntelliJ, der natürlich auch im Android Studio zum Einsatz kommt, wurde um ein paar Android-spezifische Features erweitert. In der Android API kommen häufig Integer-Werte oder Konstanten zum Einsatz, zum Beispiel für Farbwerte oder Ressource IDs. Der Debugger ist jetzt in der Lage, etwa auf Basis der zuvor beschriebenen Annotations Integer Werte zur Laufzeit zu interpretieren. Dies funktioniert leider noch nicht überall aber es lohnt sich, während einer Debug-Session bei einer nicht aussagekräftigen Integer-Zahl auf View as > Android Typed Integer zu klicken, wie in der Abbildung zu sehen ist.

 

Der Debugger in Android Studio 1.3
Abb.7: Debugger

Data Binding

Ebenfalls in beta ist das Data Binding Framework, das zur Compile-Zeit durch Codegenerierung ein direktes Verbinden von View-Properties in XML mit Java-Properties ermöglicht. Android Studio unterstützt die dafür eingeführte Expression language in XML (wenn auch leider noch ohne Code-Completion) sowie die Einbindung der generierten Klassen in den Classpath. Weiter Informationen zum Databinding findet man im Entsprechenden Abschnitt der Android Developer Guidelines.

Und sonst?

Neben den besprochenen „größeren“ Features finden sich noch allerhand kleine aber praktische Details in der neuen Android-Studio-Version. So wurden zum Beispiel einige Live Templates integriert, die es zum Beispiel ermöglichen, log-Statments einzufügen oder einen „Parcelable“-Block zu generieren. Eine gute Übersicht der neuen Live-Templates findet man unter Preferences > Editor > Live Templates (siehe Abbildung 8). Ebenfalls vereinfacht wurde die Einbindung von Google-Diensten, zum Beispiel GCM oder Google Analytics. Diese lassen sich jetzt aus dem „Project Structure“ Dialog auswählen, danach werden automatisch die Abhängigkeiten dem Projekt hinzugefügt und wenn möglich schon Boilerplate Code generiert.

 

Live Templates in Android Studio 1.3
Abb.8: Live Templates

Wie geht es weiter?

Aktuell ist bereits die 1.4 Version von Android Studio im „Canary“-Kanal verfügbar. Das Release gibt einen Ausblick auf neue Features, darunter ein Theme-Editor sowie ein Vektorgrafikeditor mit der Option, die benötigten PNGs programmatisch zu generieren. Auch wenn leider noch nicht alle Tools in Android Studio integriert wurden (Hierarchy Viewer, anyone?) zeigt sich, dass an dieser IDE kein Weg mehr vorbei geht. Die Qualität und Effizienz der App-Entwicklung ist mit Android Studio stark gestiegen – Auch wenn es nach einem eclipse-Umstieg am Anfang etwas ungewohnt ist, lohnt es sich langfristig auf jeden Fall.

Mehr zur App-Entwicklung

Mehr Informationen zur App-Entwicklung für Android, iOS und das Web finden sich auf unserer Website. Gerne geben wir auch Auskunft per E-Mail an list-blog@inovex.de oder telefonisch unter +49 721 619 021-0.

Dieser Artikel erschien ebenfalls bei Jaxenter.

Hat dir der Beitrag gefallen?

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert