Naar content
Trending apps
  • Ouderlijk toezicht voor Nintendo Switch

  • Inbox by Gmail

  • Maps: Navigatie en OV

  • WhatsApp Messenger

  • Messenger

Trending games
  • Super Mario Run

  • RollerCoaster Tycoon® Classic

  • Bully: Anniversary Edition

  • Paper Wings

  • Pokémon GO

Trending smartphones
  • HTC U11+

  • Huawei Mate 10 Pro

  • Huawei Mate 10 Lite

  • Google Pixel 2 XL

  • LG V30

Nieuwste tablets
  • Samsung Galaxy Tab S3 9.7

  • Asus Zenpad 3S 10

  • Sony Xperia Z4 Tablet

  • ASUS ZenPad S 8

  • ASUS ZenPad 8

Leander

Leander

  • Lid sinds 29 juli 2010
  • Berichten 279
  • Reputatie 0
  • #1
  • 15 augustus 2010
  • 18:30

Aangezien er weinig documentatie is over het development gedeelte van Android, ga ik een poging wagen om in deze post dieper in te gaan op het Systeem Architectuur van Android. Hierdoor begrijpen misschien meer mensen hoe Android in elkaar zit en zullen ze zich, hoop ik, sneller getrokken voelen om in Android te gaan ontwikkelen. Ik zelf ben ook nog alles aan het uitvinden, dus ik schrijf dit ook vooral voor me zelf zodat ik alles nog beter snap. Want hoe kan je nou iets beter gaan snappen? Juist door het iemand uit te leggen, daardoor onthoud ik ook alles veel beter, oftewel eigenbelang! Maar ook wel een beetje in belang van jullie hoor/cdn2.androidworld.nl/b4c9f3af9a/static/djangobb_forum/img/smilies/wink.png" />



Hieronder zie je een geweldig plaatje dat in menig boeken, tutorials, whatever gebruikt wordt. Dit plaatje geeft precies aan hoe de architectuur van Android in elkaar zit. Elke kleur die je ziet, moet je zien als een laag. Elke laag gebruikt de diensten van de laag er onder, startend bij de onderste laag: Linux Kernel.

Linux Kernel

Android is gebouwd op de top van een solide en bewezen basis genaamd: Linux kernel. Linux kan vandaag de dag overal in terug gevonden worden, van horloge's tot supercomputers. Linux levert de hardware abstractie laag voor Android, waardoor Android in de toekomst kan worden overgezet naar een grote verscheidenheid aan platforms.

Inwendig gebruikt Android Linux voor haar geheugen management, proces management, netwerken en andere services van het besturingssysteem. De gebruiker zal nooit iets zien van Linux en je apps zullen linux nooit direct aanroepen. Echter moet je wel in je achterhoofd houden dat het er wel is!

Native Libraries

De volgende laag boven de kernel bevat de Android native libraries. Deze libraries zijn allemaal geschreven in C of C++, gecompileerd voor de hardware architecturen dat gebruikt wordt door de mobiel en voor geïnstalleerd is door de fabrikant.
Om een beetje duidelijkheid te geven wat elke librarie doet, ga ik sommige stuk voor stuk kort behandelen.

• Surface Manager: Android maakt gebruik van samengesteld window manager dat lijkt op Vista, maar is veel simpeler. In plaats van rechtstreeks naar het scherm te tekenen, gaan eerst alle commando's in een off-screen bitmap die vervolgens worden gecombineerd met ander bitmaps om het scherm te creëren wat de gebruiker uiteindelijk ziet.
• 2D and 3D Graphics: 2- en 3-dimensionale elementen kunnen worden gecombineerd in een single uwer interface met Android. The librarie maakt gebruik van de 3D hardware als het apparaat dat heeft anders maakt het gebruik van de snelle software rendering.
• Media Codecs: Voor het afspelen van video en opnemen van geluid in verscheidenheid aan formaten zoals AAC, AVC, H.263, MP3 en MPEG-4.
• SQL database: Android gebruikt de lichte SQLite database enigen, deze gebruiken Firefox en Apple iPhone ook.
• Browser engine: Voor het snel weergeven van HTML content gebruikt Android Webkit. Velen van jullie zal die naam niet onbekend zijn aangezien Google Chrome en Safari dezelfde engine gebruiken.

Om nog even duidelijkheid te geven, deze libraries zijn geen applicaties die op zich zelf kunnen staan. Ze worden enkel opgeroepen door de lagen die erboven liggen.

Android runtime

Wat ook boven de Linux kernel zit is de Android runtime, dat bestaat uit de Dalvik virtual machine en de Java libraries. De Dalvik VM is Google's eigen implementatie van java, geoptimaliseerd voor mobiele apparaten. Dalvik VM is eigenlijk een aangepaste Java VM voor apparaten met een klein geheugen. Je java code wordt gecompileerd naar bytecode dat weer wordt uitgevoerd door de Dalvik VM op je mobiel.
De Dalvik VM voert alleen .dex files uit. .dex files bestaan uit .class en .jar files, dit converteren gebeurd zodat de files meer compacter zijn en efficiënter dan class files. Heel goed dus voor embedded apparatuur (telefoons met o.a. weinig geheugen).

Application Framework

We zijn nu aangekomen op de een na laatste laag, de laag boven de linux kernel, native libraries en Android runtime. Deze laag bevat blokken die op hoog niveau kunt gebruiken voor je Android applicatie. De framework is voorgeinstalleerd met Android, maar je kan het altijd uitbreiden met je eigen componenten als dat nodig is.
De meest belangrijkste delen van de framework zijn:

• Activity manager: Deze bevat de live cycle van een applicatie. Ook bevat dit de application stack (geschiedenis van geopende schermen) zodat als je op vorige drukt, je terug komt bij het vorige scherm (vergelijk dit als de geschiedenis van je webbrowser).
• Content providers: Deze objecten bevatten data dat nodig is om te delen tussen andere applicaties, zoals contacten.
• Resource manager: Resources is alles wat verder gaat met je programma dat geen code is: Afbeeldingen, XML bestanden.
• Location manager: Zoals de naam als zegt, de Locatie. Waar ben je?
• Notification manager: Dingen zoals nieuwe berichten, meldingen, of er regen aan komt of niet (Buienalarm/Regendetector) etc.

Applications and Widgets

De hoogste laag in de Android architecture is de Applications en Widgets laag. Android gebruikers zullen enkel deze laag zien, de rest blijft voor hun ogen verborgen. Natuurlijk weet jij nu beter! Dat er meer is dan enkel die laag, ook al kun je dat natuurlijk wel raden, maar nu is alles duidelijk hoop ik.

Applicaties zijn programma's die worden weergeven over de hele grote van het scherm en kunnen communiceren met de gebruiker. Widgets zijn enkel kleine vierkantjes, en werken enkel op de Home screen.

Uiteindelijk maken alle applicaties wel gebruik van de onderliggende lagen. Nu weet je in ieder geval ook wat welke laag doet en hoe deze Android architectuur in elkaar zit. Ik hoop dat je er wat wijzer van bent geworden. Als ik nog zin/tijd heb zal ik een andere keer nog de life cycle van een applicatie uitleggen! Je weet dat Android niet zo werkt als Windows waarbij je gemakkelijk kunt switchen tussen schermen, maar door gewoon het scherm te sluiten en een ander scherm te openen. Ondertussen gebeurt er achter de schermen veel meer met de applicatie zelf. Wat hierbij gebeurt zal ik nog wel eens uitleggen in een ander topic!

Spelfouten voorbehouden! Geen zin om alles nog een keer te lezen :p Zie je iets dat niet klopt? Of denk je het beter te kunnen uitleggen? Of heb je toch nog vragen? Reageer gerust in dit topic!

Bewerkt (22 april 2013 12:33)
obnoxious67

obnoxious67

  • Lid sinds 24 april 2010
  • Berichten 309
  • Reputatie 0
  • #2
  • 15 augustus 2010
  • 21:00

Ja nu snap ik het….een beetje….misschien..maar in elk geval een stuk beter dan voordat ik dit had gelezen.

Bewerkt (22 april 2013 12:33)
djmagich

djmagich

  • Lid sinds 02 april 2010
  • Berichten 24
  • Reputatie 0
  • #3
  • 15 augustus 2010
  • 21:27

Kijk! hier wordt het allemaal wat duidelijker door! Super!!

Bewerkt (22 april 2013 12:33)
Lichtkabouter

Lichtkabouter

  • Lid sinds 24 mei 2010
  • Berichten 10
  • Reputatie 0
  • #4
  • 15 augustus 2010
  • 21:48

Een basic uitleg en een zeer goed verhaal. Ik denk wel dat er ook wel wat meer in kan zitten van MVP, services e.d.

Bewerkt (22 april 2013 12:33)
johan

johan

  • Lid sinds 15 augustus 2010
  • Berichten 2
  • Reputatie 0
  • #5
  • 15 augustus 2010
  • 21:58

Goed verhaal!

Op developer.android.com staan ook een drietal architectuur videos welke ook zeer verhelderend zijn… Een link naar de eerste

Videos | Android Developers

Groet,

Johan

Bewerkt (22 april 2013 12:29)
Leander

Leander

  • Lid sinds 29 juli 2010
  • Berichten 279
  • Reputatie 0
  • #6
  • 15 augustus 2010
  • 22:03

johan;34012
Goed verhaal!

Op developer.android.com staan ook een drietal architectuur videos welke ook zeer verhelderend zijn… Een link naar de eerste

Videos | Android Developers

Groet,

Johan

Ja klopt, maar is toch weer engels/cdn2.androidworld.nl/b4c9f3af9a/static/djangobb_forum/img/smilies/wink.png" /> Niet iedereen kan even goed engels om het dan ook nog eens goed te begrijpen/cdn2.androidworld.nl/b4c9f3af9a/static/djangobb_forum/img/smilies/wink.png" /> Vandaar deze nederlandse uitleg/cdn2.androidworld.nl/b4c9f3af9a/static/djangobb_forum/img/smilies/wink.png" />

Bewerkt (22 april 2013 12:33)
Quinten

Quinten

  • Lid sinds 02 maart 2010
  • Berichten 1283
  • Reputatie 0
  • #7
  • 15 augustus 2010
  • 22:49

Ik heb er maar een sticky van gemaakt. Bedankt voor je post Leander!

Bewerkt (22 april 2013 12:33)
Leander

Leander

  • Lid sinds 29 juli 2010
  • Berichten 279
  • Reputatie 0
  • #8
  • 15 augustus 2010
  • 22:51

Quinten;34040
Ik heb er maar een sticky van gemaakt. Bedankt voor je post Leander!

Ja ik zag het! Bedankt voor de sticky/cdn2.androidworld.nl/b4c9f3af9a/static/djangobb_forum/img/smilies/wink.png" /> Dan valt het meer op en zien meer mensen het/cdn2.androidworld.nl/b4c9f3af9a/static/djangobb_forum/img/smilies/smile.png" />

Bewerkt (22 april 2013 12:33)
bartfukkink

bartfukkink

  • Lid sinds 11 februari 2011
  • Berichten 358
  • Reputatie 0
  • #9
  • 11 februari 2011
  • 16:25

Net geregistreerd om even te laten weten dat ik dit een hele interessante post vind. Goed verwoord!

Bewerkt (11 februari 2011 16:25)
danielw8

danielw8

  • Lid sinds 31 maart 2011
  • Berichten 64
  • Reputatie 0
  • #10
  • 18 juli 2011
  • 19:10

Een erg interessant topic, en ik snap het nu ook een stuk beter.
Maar ik heb toch nog een paar vragen.
Ik had ergens anders gelezen dat de Linux kernel ongeveer hetzelfde is als de BIOS van je pc, klopt dit?
En als je bezig bent een nieuwe kernel te flashen, en er gaat iets mis, je trekt bijvoorbeeld de usb kabel uit de computer, wat gebeurt er dan?
Als hij bijvoorbeeld bezig was met de USB drivers, en die werken dus niet meer, is je telefoon dan compleet dood? (hard-brick?)
Maar men zegt dat als je een kernel flasht je geen hard-brick kunt krijgen, hoe zit dit dan?
En wat zijn bootloaders dan eigenlijk precies?

Misschien wijkt dit een beetje af van het topic, maar ik denk toch dat ik deze vragen het beste hier kan stellen

Bewerkt (18 juli 2011 19:10)

Reageer

Om te reageren, dien je te zijn ingelogd. Druk op de onderstaande knop om in te loggen of maak een nieuwe account aan.

Inloggen Registreren