Hallo, Android!
Inmiddels heeft iedere Java developer wel gehoord van het Google Android Platform. Afgelopen tijd ben ik wat meer bezig geweest met mobiele software en me ook meer gaan verdiepen in dit platform. In dit blog artikel zal ik uitleg geven over hoe Hello World gemaakt kan worden, en daarnaast wat meer uitleggen over Android als applicatie framework. Voor meer in-depth informatie over het Android Platform en wat de doelen van Google zijn, kun je dit filmpje bekijken met Jason Chen
Geen java
Voordat we de code induiken wil ik eerst iets ophelderen. Wanneer men over Android development praat, wordt vaak voor het gemak aangenomen dat het ‘gewoon’ om Java gaat. Dat is echter niet waar. De applicaties worden inderdaad geprogrammeerd in de taal Java, maar draaien niet op een JVM. In plaats daarvan wordt de Dalvik Virtual Machine gebruikt. Een van de gevolgen hiervan is dat Java code niet on-the-fly gegenereerd kan worden, waardoor dynamische talen (Jruby, Jython, Groovy) (nu nog) uitgesloten zijn. Daarnaast lost het wat licentieproblemen met Oracle op. Dan Bornstein kan je meer vertellen over Dalvik in zijn Dalvik VM Internals introduction
SDK
Om dit prachtige stukje uit te proberen, heb je de SDK nodig, welke je hier kan downloaden. Op het moment van schrijven is de 1.5 R2 de laatste versie. Installeer het geheel volgens de gebruiksaanwijzing.
IDE
Om te beginnen met ontwikkelen maakt het niet uit of je dat in kladblok, of in Eclipse doet. Het Google team is echter Eclipse fan en daarom hebben ze de Eclipse ADT plugin gemaakt. Volg de guide om deze te installeren. Gebruikers van andere IDEs staan echter niet in de kou. Zo is er ook een NetBeans plugin, IntelliJ plugin en een TextMate bundle. Er zijn natuurlijk ook command line tools voor puristen.
Hallo, wereld!
Wanneer je helemaal klaar bent om aan de slag te gaan, maak dan een nieuw project aan. In Eclipse kom je dan bij onderstaand scherm aan:

Hier zien hardcore developers niet zoveel raars aan, behalve misschien bij het onderste “properties” gedeelte. Een Activity komt de meeste mensen niet bekend voor. Een Activity is een van de speciale types die Android kent. In de praktijk komt het erop neer dat een klasse een Activity extend. Waar een Activity voor staat en wat dit doet komt later aan de orde, laten we eerst naar de code gaan kijken.
Structuur
Bij het maken van een nieuw project, heeft de Android SDK een mooie project structuur aangelegd. Een bekende src map, een gen map, een map voor assets en voor resources en nog wat bestanden:
World.java is de Activity die we hebben aangemaakt, waarin geen rocket science staat. Wanneer je deze inkijkt, staat er wel een referentie naar: R.layout.main. R is een raar iets. R staat voor Resource en is een on-the-fly gegenereerde klasse waarin de resources in de map res statisch worden gerefereerd. Dit is handig, aangezien we nu object georienteerd kunnen werken met onze bronnen. R staat in de map gen en wordt alleen door de IDE up to date gehouden. Wanneer je dus zonder Eclipse werkt, moet je dat zelf doen. R.layout.main verwijst naar het bestand main.xml in de map layout, in de map res. De layout is een XML bestand waarin met verschillende flows en layouts (a la Spring) een View opgebouwd kan worden. Ook hier biedt de Eclipse plugin een handig hulpmiddel in de vorm van een visual editor. In main.xml wordt een verwijzing gemaakt naar @string/hello. Hier wordt een string uit strings.xml gehaald, met de naam ‘hello’. In string.xml vertaald dit zich naar “Hello, world!”.
Virtuele apparaten
Om nu dit project daadwerkelijk op de Android Emulator te kunnen zien, moet er eerst een Android Virtual Device (AVD) voor dit project worden aangemaakt. Dit kan helaas (of gelukkig) alleen maar op de command line. Geef je terminal een kick start en cd naar de map tools in de Android SDK. Je moet nu eerst een zgn. Deployment target kiezen. Typ: | android list targets om de beschikbare te zien. Aangezien we met 1.5 aan de slag willen, kiezen we voor dat ID. Typ dan om een nieuwe virtual device te maken:
android create avd --name <your_avd_name> --target <targetID>
Met je eigen avd naam en het targetID van Android 1.5.
Emuleren
Nu we klaar zijn met de instellingen, kunnen we in Eclipse een nieuwe run configuration aanmaken. Selecteer het project en selecteer de Activity die als eerste gestart moet worden. Selecteer daarna op de Targets tab de zojuist gemaakte AVD. Start het geheel en de emulator wordt opgestart. Na even wachten komt het volgende resultaat:


Je zegt: “Waar een Activity voor staat en wat dit doet komt later aan de orde”, maar het komt niet meer aan de orde. Kan je hier nog even op ingaan? Want dit lijkt me nu juist een stukje wat specifiek Android is.
Rikkert Koppes June 22, 2009 13:51