© Excellent backgrounds/Shutterstock.com
Java Magazin
Versteckte Perlen im Android SDK - Teil 1

Android SDK - Hidden Features

Das Android SDK ist, wie wohl jeder Entwickler für Googles Mobile OS weiß, die Grundlage für die Programmierung von Android-Apps. Was allerdings viele nicht wissen, ist, dass eben dieses SDK zusätzlich über eine ganze Reihe kleiner, nützlicher Tools verfügt, die die tägliche Arbeit eines Android-Entwicklers deutlich vereinfachen können. Grund genug für die Autoren von „Good to know“, einige dieser versteckten Perlen in loser Folge vorzustellen. Den Anfang machen heute die kleinen Helferlein rund um das Thema Debugging.

Arne Limburg, Lars Röwekamp


Eigentlich ist Debugging ja nur etwas für Loser. Schließlich bedeutet es implizit, dass man bei der Entwicklung einen Fehler gemacht hat, den man nun mithilfe eines Debuggers mühsam aufspüren muss. Und mal im Ernst: Wer von uns entwickelt schon mit Fehlern? Allerdings sollte man sich spätestens bei der Einführung des zehnten System.out.println(...) die Frage stellen, ob es nicht doch bessere Methoden gibt, seinen eigenen Quellcode zu „analysieren“. Zwar wird das eben erwähnte Statement auf dem Emulator und den meisten Android Devices via Log.i() in das LogCat umgeleitet, aber echtes Debugging sieht nun einmal anders aus.

Debugging-Einmaleins

Das Debuggen von Android-Programmen ist denkbar einfach. Unabhängig von der IDE wird lediglich ein JDWP-kompatibler (Java Debug Wire Protocol, [1]) Debugger benötigt, um Step by Step durch den Code der eigenen Anwendung zu navigieren. Das gilt sowohl für den Emulator als auch für reale, über die USB-Schnittstelle verbundene Devices. Möglich ist das, da die Dalvik VM das bereits erwähnte JDWP-Protokoll unterstützt. Nutzt man als IDE Eclipse inklusive ­Android Development Toolkit, bekommt man dieses Feature quasi geschenkt. Gleiches gilt für IntelliJ IDEA aus dem Hause JetBrains. Alternativ zu den integrierten IDE-Debuggern ist aber auch die Verwendung eines Command Line Debuggers, wie jdb [2], denkbar.

DDMS

Das Android SDK enthält ein spezielles Tool namens DDMS (Dalvik Debug Monitor Server, [3]), das das Debugging erheblich vereinfacht. Der DDMS kann sowohl über die IDE als auch standalone aus dem tools-Verzeichnis des SDK heraus gestartet werden. Sobald der DDMS startet, verbindet er sich mit der adb (Android Debug Bridge). Wird nun ein Device – emuliert oder real – angebunden, wird ein VM Monitor Service zwischen adb und DDMS erzeugt, der den DDMS informiert, sobald eine VM auf dem Device gestartet oder beendet wird. Mithilfe der Prozess-ID der VM sowie dem adbd (adb deamon) kann nun eine Verbindung zwischen DDMS und dem Debugger der VM auf dem Device hergestellt werden und der DDMS gezielt mit der VM „kommunizieren“.

Es ist dabei wichtig zu verstehen, dass jede Android-Anwendung in einer eigenen VM läuft und einen eigenen Debug-Port nach außen zur Verfügung stellt. Somit können mehrere Anwendungen parallel im Debug-Modus gefahren und analysiert werden. Damit man nun aber als Entwickler nicht mühsam für jede Anwendung einen eigenen Port definieren muss, erlaubt der DDMS ein so genanntes Port-Forwarding, das die anwen...

Java Magazin
Versteckte Perlen im Android SDK - Teil 1

Android SDK - Hidden Features

Das Android SDK ist, wie wohl jeder Entwickler für Googles Mobile OS weiß, die Grundlage für die Programmierung von Android-Apps. Was allerdings viele nicht wissen, ist, dass eben dieses SDK zusätzlich über eine ganze Reihe kleiner, nützlicher Tools verfügt, die die tägliche Arbeit eines Android-Entwicklers deutlich vereinfachen können. Grund genug für die Autoren von „Good to know“, einige dieser versteckten Perlen in loser Folge vorzustellen. Den Anfang machen heute die kleinen Helferlein rund um das Thema Debugging.

Arne Limburg, Lars Röwekamp


Eigentlich ist Debugging ja nur etwas für Loser. Schließlich bedeutet es implizit, dass man bei der Entwicklung einen Fehler gemacht hat, den man nun mithilfe eines Debuggers mühsam aufspüren muss. Und mal im Ernst: Wer von uns entwickelt schon mit Fehlern? Allerdings sollte man sich spätestens bei der Einführung des zehnten System.out.println(...) die Frage stellen, ob es nicht doch bessere Methoden gibt, seinen eigenen Quellcode zu „analysieren“. Zwar wird das eben erwähnte Statement auf dem Emulator und den meisten Android Devices via Log.i() in das LogCat umgeleitet, aber echtes Debugging sieht nun einmal anders aus.

Debugging-Einmaleins

Das Debuggen von Android-Programmen ist denkbar einfach. Unabhängig von der IDE wird lediglich ein JDWP-kompatibler (Java Debug Wire Protocol, [1]) Debugger benötigt, um Step by Step durch den Code der eigenen Anwendung zu navigieren. Das gilt sowohl für den Emulator als auch für reale, über die USB-Schnittstelle verbundene Devices. Möglich ist das, da die Dalvik VM das bereits erwähnte JDWP-Protokoll unterstützt. Nutzt man als IDE Eclipse inklusive ­Android Development Toolkit, bekommt man dieses Feature quasi geschenkt. Gleiches gilt für IntelliJ IDEA aus dem Hause JetBrains. Alternativ zu den integrierten IDE-Debuggern ist aber auch die Verwendung eines Command Line Debuggers, wie jdb [2], denkbar.

DDMS

Das Android SDK enthält ein spezielles Tool namens DDMS (Dalvik Debug Monitor Server, [3]), das das Debugging erheblich vereinfacht. Der DDMS kann sowohl über die IDE als auch standalone aus dem tools-Verzeichnis des SDK heraus gestartet werden. Sobald der DDMS startet, verbindet er sich mit der adb (Android Debug Bridge). Wird nun ein Device – emuliert oder real – angebunden, wird ein VM Monitor Service zwischen adb und DDMS erzeugt, der den DDMS informiert, sobald eine VM auf dem Device gestartet oder beendet wird. Mithilfe der Prozess-ID der VM sowie dem adbd (adb deamon) kann nun eine Verbindung zwischen DDMS und dem Debugger der VM auf dem Device hergestellt werden und der DDMS gezielt mit der VM „kommunizieren“.

Es ist dabei wichtig zu verstehen, dass jede Android-Anwendung in einer eigenen VM läuft und einen eigenen Debug-Port nach außen zur Verfügung stellt. Somit können mehrere Anwendungen parallel im Debug-Modus gefahren und analysiert werden. Damit man nun aber als Entwickler nicht mühsam für jede Anwendung einen eigenen Port definieren muss, erlaubt der DDMS ein so genanntes Port-Forwarding, das die anwen...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang