Ontwikkelen op het Android platform

 
05 juni 2009

Naast de iPhone is de Android bezig met een opmars in de mobiele telefonie markt. Het Android–platform waarop een Android telefoon draait, werd eind 2007 door Google vrijgegeven. Hiermee gaf zij de mogelijkheid aan ontwikkelaars om ook applicaties te bouwen op dit platform, i.p.v. dat Google zelf applicaties bouwt.

HTC was de eerste die met een Android telefoon (HTC Dream, G1) kwam. Meer telefoons zullen snel volgen (HTC Magic en Samsung Galaxy).

Het succes van de Android komt voornamelijk omdat ontwikkelaars hun eigen applicatie kunnen bouwen met de Android SDK. Om de stap voor ontwikkelaars zo klein mogelijk te maken, heeft Google gekozen voor java als programmeertaal, omdat dit veel gebruikt wordt.

In deze blog zal ik iets vertellen over het ontwikkelen met Android. Ik zal een aantal Android specifieke ontwikkel methoden aanstippen en vertellen wat er nodig is om te beginnen met ontwikkelen op dit platform.

Laat ik beginnen met de tools die nodig zijn om te beginnen. Een goede plek om te beginnen is om rond te kijken op de developers site http://developer.android.com. Op deze site staat ook wat er nodig is om te beginnen.

Het is aan te raden om te Android applicaties te ontwikkelen met Eclipse (versie 3.3 of hoger) met de ADT (Android Development Tools) plugin. Deze plugin zorgt ervoor dat automatisch de juiste projectstructuur wordt aangemaakt bij een nieuw Android project; bouwt een APK (Android Application Package) bestand voor je dat gedeployed kan worden, en geeft je toegang tot DDMS (Dalvik Debug Monitor Service, Dalvik is de VM, waar de Android processen in draaien).

De ADT plugin kan via Software Updates binnen Eclipse binnengehaald worden of rechtstreeks van de site gedownload worden. Hier wordt uitgelegd hoe je dat kunt doen: http://developer.android.com/sdk/1.5_r2/upgrading.html.

Wanneer Eclipse niet de favoriete IDE is, dan moeten veel zaken handmatig gedaan worden met tools die bij de SDK meegeleverd worden.

De SDK is hier te downloaden: http://developer.android.com/sdk/1.5_r2/index.html. Meest recente versie is 1.5. Bij deze SDK wordt dus ook een aantal tools meegeleverd die nodig zijn als je geen Eclipse gebruikt, zoals het aanmaken van de juiste projectstructuur of het bouwen van een APK bestand.

Een Android applicatie is opgezet uit een aantal onderdelen, dat doet denken aan een MVC applicatie. De grenzen tussen deze lagen zijn echter niet duidelijk gedefinieerd. Een Android-project (binnen Eclipse) is op te delen in:

  • src, de sourcecode. Deze bevat de business logica.
    • R.java. In dit bestand staat het overzicht van alle gebruikte componenten met hun id. Vanuit de source code kan men refereren aan dit bestand om zo de verschillende componenten te benaderen.
  • res, de resources. Deze is onderverdeeld in:
    • drawable, alles wat ‘drawable’ is; plaatjes en icoontjes.
    • layout, bevat de views voor de schermen.
    • values, vergelijkbaar met de message bundel.
  • AndroidManifest.xml, hiermee kan de Android applicatie geconfigureerd worden. Zaken die hierin staan, bevatten o.a. gebruikers rechten en welke intents (zie sectie over intents) er gebruikt worden.Projectstructuur

Het java bestand R.java speelt een centrale rol binnen het project. Hierin staan alle componenten (activities, views, images etc.) gedefinieerd met een automatisch gegenereerd id. Dit bestand wordt automatisch aangemaakt en mag niet handmatig aangepast worden. Dit heeft als gevolg dat alle componenten in de juiste map moeten worden gezet. Is dit niet het geval, dan wordt er geen id gegenereerd en kan er niet gerefereerd worden aan een component. Een voorbeeld van R.java is hieronder weergegeven.

 

/* AUTO-GENERATED FILE.  DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found.  It
* should not be modified by hand.
*/

package mypackage.com;

public final class R {
   public static final class attr {
   }
   public static final class drawable {
      public static final int accept_icon=0x7f020001;
   }
public static final class id {
   public static final int button_accept=0x7f05000b;
}
public static final class layout {
   public static final int myLayout=0x7f030000;
}
public static final class string {
    public static final int button_accept=0x7f04000a;
}
} 

Voordeel hiervan is, is dat een ontwikkelaar gedwongen wordt om over de structuur van de applicatie na te denken. Het dwingt de ontwikkelaar om de views te scheiden van de business logica.

Processen binnen Android worden gerepresenteerd als Activities. De business logica bevindt zich in een activity en is meestal gekoppeld aan een view. Hiermee kan de activity reageren op handelingen van een gebruiker. Een activity heeft een life-cycle, met een duidelijk begin en eind.

De aanroep van een activity gebeurt met een Intent. Een intent is een soort wrapper om een activity heen. Android gebruikt een intent om een activity op te starten.

Intent intent = new Intent(this, MyActivity.class);
startActivityForResult(intent, 1);

startActivityForResult() start de activity indien deze bestaat, anders gooit deze een ActivityNotFoundException. Wanneer de activity succesvol is afgesloten, komt de flow weer hier terug.

Activities kunnen een view aan zich binden met setContentView(). Een referentie naar een view (via het R.java bestand) wordt hier aan meegegeven.

setContentView(R.layout.myLayout);

Let op: de activity moet wel gedeclareerd zijn in de AndroidManifest.xml voordat het gebruikt kan worden door Android.

Voor het testen van je Android applicatie levert de ADT een Android Emulator mee. Deze emulator zorgt ervoor dat het mogelijk is om op de ontwikkel machine de applicatie te testen, in het geval een Android telefoon niet beschikbaar is.

Deze emulator kan vanuit Eclipse opgestart worden met Run As Android Application. De aapt (Android Asset Packaging Tool ) tool bouwt een apk bestand en deployed deze op de emulator. Ditzelfde bestand wordt gedeployed op een Android client. Vervolgens kan de ontwikkelaar zijn of haar applicatie testen.

Android Simulator

Wanneer de emulator draait, is het mogelijk de ddms te benaderen en bijvoorbeeld de applicatie te debuggen.

Gps

Verdere tips:

  • Het is handig om een virtuele SD card aan de emulator te hangen. Zo heb je een virtuele harde schijf waar je bestanden op kunt brengen. Dit wordt op de volgende site uitgelegd: http://developer.android.com/guide/developing/tools/othertools.html#mksdcard.
  • Wanneer GPS wordt gebruikt, is het mogelijk om via de ddms alvast coördinaten op te geven. Dit kan via het tabje Emulator Control in de ddms view. Hier kun je handmatig coördinaten opgeven of een GPX of KML bestand met coördinaten laden.

Concluderend, het ontwikkelen op het Android platform is niet moeilijk. Google heeft hiervoor gezorgd door het platform op Java te laten baseren. Als je java kunt programmeren, kun je op het platform ontwikkelen. Er zijn een aantal Android specifieke zaken waar je rekening mee moet houden. Een aantal zaken heb ik benoemd.

Voor meer informatie verwijs ik naar de volgende bronnen:


Werken met ?
Kijk dan bij onze mogelijkheden voor starters en/of ervaren IT'ers.


Categorieën: Architectuur, Development, Deployment, Java (EE), Overige talen en platformen

Tags: ,


Reacties (4)

  • Jurrien schreef:

    Ziet er ingewikkeld uit die codes. Ik heb mijn Android app laten maken bij een professioneel app bedrijf want hier snap ik helemaal niets van.

    Geplaatst op 14 december 2011 om 16:27 Permalink

  • Martin schreef:

    Prima verhaal kan er veel mee bedankt.

    Geplaatst op 31 juli 2011 om 10:47 Permalink

  • Gerard Ammerlaan schreef:

    Bedankt voor deze mooie uitleg. Erg vehrelderend en ook hulpzaam voor mensen die nieuwsgierig zijn naar de mogelijkheden voor hun android gsm te ontwikkelen.

    Geplaatst op 31 december 2010 om 16:01 Permalink

  • Daan Wanrooy schreef:

    Goede introductie tot het ontwikkelen voor Android.

    Er is ook een plugins voor maven, mocht je sommige dingen toch met de hand willen doen. Ze zijn te vinden op:

    http://code.google.com/p/android-maven/
    http://code.google.com/p/masa/

    De auteurs van deze plugins hebben besloten om hun code te mergen. In masa zullen alle features terecht komen.

    Geplaatst op 08 juni 2009 om 16:42 Permalink