Android Archistructuur: applicatielagen, raamwerk, component
Android de eerste release van het besturingssysteem was in het jaar 2008. Zelfs bij de start bouwde het team achter het besturingssysteem het op de schouders van reuzen. Naast de gebruikersinterface die de Android OS presenteert zich op oppervlakteniveau en bestaat uit meerdere lagen. Deze lagen omvatten aangepaste code en open-sourcetechnologieën die al tientallen jaren voortdurend worden ontwikkeld.
Android is ontwikkeld door middel van enorme gezamenlijke inspanningen en investeringen door veel bedrijven. Het belangrijkste bedrijf achter de ontwikkeling van Android is Google. Andere bedrijven zijn onder andere fabrikanten van apparaten zoals Samsung, LG; processorfabrikanten zoals Intel en ARM, om er maar een paar te noemen.
Als we het hebben over Android architectuur, bedoelen we hoe de Android systeem is ontworpen, gesegmenteerd in lagen en opgebouwd om als een systeem te werken. Het bouwen van zo'n complex systeem vereist zorgvuldige structurering om ervoor te zorgen dat alle componenten samenhangend samenwerken. De architectuur zorgt ervoor dat de vele componenten als een geheel functioneren zonder te crashen.
Lagen
De volgende lagen vormen de Android architectuur zoals aangegeven op het diagram:
- Aanvraag
- Application Framework
- Android Runtime- en kernbibliotheken
- Linux Kernel
Het ontwikkelen van een besturingssysteem voor mobiele apparaten brengt een aantal uitdagingen met zich mee. Door deze gelaagde architectuur te gebruiken, wordt ervoor gezorgd dat verschillende problemen op verschillende niveaus worden opgesplitst en opgelost.
Een gelaagde architectuur helpt zorgen te scheiden en zorgt ervoor dat Android-softwareontwikkelaars niet op elk moment met problemen op laag niveau te maken krijgen. Ze kunnen zich in plaats daarvan richten op het leveren van bedrijfswaarde met betrekking tot de laag waaraan ze werken.
Ontwikkelaars werken eraan om ervoor te zorgen dat apps zich geen zorgen hoeven te maken over de implementatie van het applicatieframework. Dat werk wordt overgelaten aan de systeemontwikkelaars die aan het applicatieframework werken.
De Application Framework-ontwikkelaars werken aan de ervaring van de ontwikkelaar en hoeven zich geen zorgen te maken over de low-level drivers. Low-level systeemengineers kunnen zich volledig richten op low-level componenten zoals Bluetooth of Audio drivers en dergelijke.
AndroidDe gelaagde structuur maakt het mogelijk om updates met bugfixes of verbeteringen op elke laag afzonderlijk toe te passen. Dit zorgt ervoor dat veranderingen tussen lagen elkaar niet hinderen. Dit maakt het mogelijk dat mensen die op een ander niveau van het besturingssysteem werken, elkaar kunnen hinderen als er nieuwe updates en releases klaar zijn.
Android Aanvraag
Dit is de laag waarmee eindgebruikers communiceren. Het is op deze laag waar applicatieontwikkelaars hun applicaties publiceren om te draaien.
Androidwordt standaard geleverd met een set applicaties die Android-apparaten direct bruikbaar maken.
- Home: De startpagina aan Android bestaat uit opstartpictogrammen voor veelgebruikte applicaties waartoe de eindgebruiker mogelijk snel toegang wil hebben. U kunt de apps starten door op de launchers van deze apps te klikken. Helemaal bovenaan het scherm vindt u widgets die het netwerk, het batterijniveau, de datum en de tijd weergeven.
- Kontakte: Androidbiedt standaard een manier om contacten op te slaan en op te halen. Contactgegevens worden gedeeld met andere apps om de functionaliteit te verbeteren.
- berichten: Android biedt de mogelijkheid om SMS-berichten te verzenden en te ontvangen.
- E-mail: Android wordt geleverd met native ondersteuning voor e-mailservices. Een Android apparaat vereist een Gmail-account. Het instellen van Gmail activeert andere e-mailafhankelijke componenten op Android apparaten. Sommige e-mailafhankelijke functies omvatten beveiligings- en herstelmechanismen. Een andere e-mailafhankelijke functie is toegang tot de Play Store, een marktplaats voor Android toepassingen.
- Browser: Android wordt geleverd met een standaardbrowser.
- Meldingslade: Door naar beneden te vegen op het scherm wordt de notificatielade zichtbaar. Deze biedt applicatiegebeurtenissen waarvan de gebruiker op de hoogte moet zijn. Boven de notificatie staat een set snelkoppelingen naar een aantal veelgebruikte apparaatinstellingen die de gebruiker kan in- en uitschakelen. Deze instellingen omvatten aan- en uitschakelaars voor verschillende hardwarecomponenten zoals Bluetooth en wifi. Door lang op deze gebeurtenissen te drukken, kunnen we naar hun configuratiepagina navigeren.
Deze laag wordt ook wel gebruikersniveau genoemd, in tegenstelling tot de lagen eronder die voornamelijk zijn afgestemd op applicatieontwikkeling. Applicatieontwikkelaars maken en personaliseren de ervaringen voor hun apps op deze laag. De lagen onder de applicatielaag worden niet aangepast door applicatieontwikkelaars. Ze worden beschouwd als onderdeel van de systeemlaag. Deze lagen worden aangepast door apparaatfabrikanten, Google Android-teams of derden die de Android broncode voor hun product of onderzoek.
Application Framework
Uw partner voor Android OS legt de onderliggende bibliotheken en functies van het Android apparaat dat gebruik maakt van een Java API. Dit is wat bekend staat als de Android kader. Het raamwerk biedt een veilig en uniform middel om te gebruiken Android apparaatbronnen.
1) Activiteitenmanager
Applicaties gebruiken de Android activiteitscomponent voor het presenteren van een toegangspunt tot de app. Android Activiteiten zijn de componenten die de gebruikersinterface huisvesten waarmee app-gebruikers communiceren. Terwijl eindgebruikers interactie hebben met de Android apparaat, ze starten, stoppen en springen heen en weer tussen vele applicaties. Elke navigatiegebeurtenis activeert de activering en deactivering van vele activiteiten in de betreffende applicaties.
Uw partner voor Android ActivityManager is verantwoordelijk voor voorspelbaar en consistent gedrag tijdens applicatie-overgangen. De ActivityManager biedt app-makers de mogelijkheid om hun apps te laten reageren wanneer de Android OS voert globale acties uit. Applicaties kunnen luisteren naar gebeurtenissen zoals apparaatrotatie, app-vernietiging door geheugentekort, een app die uit focus wordt verplaatst, enzovoort.
Enkele voorbeelden van de manier waarop applicaties op deze overgangen kunnen reageren, zijn onder meer het pauzeren van activiteit in een game en het stoppen van het afspelen van muziek tijdens een telefoongesprek.
2) Vensterbeheer
Android kan scherminformatie bepalen om de vereisten te bepalen die nodig zijn om vensters voor toepassingen te maken. Windows zijn de slots waar we onze app-gebruikersinterface kunnen bekijken. Android gebruikt de Window Manager om deze informatie aan de apps en het systeem te verstrekken terwijl ze worden uitgevoerd, zodat ze zich kunnen aanpassen aan de modus waarin het apparaat wordt uitgevoerd.
De Window Manager helpt bij het leveren van een app-ervaring op maat. Apps kunnen het volledige scherm vullen voor een meeslepende ervaring of het scherm delen met andere apps. Android maakt dit mogelijk door meerdere vensters voor elke app toe te staan.
3) Locatiemanager
De meeste Android apparaten zijn uitgerust met GPS-apparaten die de locatie van de gebruiker kunnen achterhalen met behulp van satellietinformatie die tot op de meter nauwkeurig kan gaan. Programmeurs kunnen gebruikers om locatietoestemming vragen en locatie- en bewuste ervaringen leveren.
Android kan ook draadloze technologieën gebruiken om locatiegegevens verder te verrijken en de dekking te vergroten wanneer apparaten zich in afgesloten ruimtes bevinden. Android biedt deze functies onder de paraplu van de Location-Manager.
4) Telefoniemanager
De meeste Android apparaten spelen een primaire rol in telefonie. Android gebruikt TelephoneManager om hardware- en softwarecomponenten te combineren om telefoniefuncties te leveren. De hardwarecomponenten omvatten externe onderdelen zoals de simkaart en apparaatonderdelen zoals de microfoon, camera en luidsprekers. De softwarecomponenten omvatten native componenten zoals toetsenblok, telefoonboek en beltoonprofielen. Met behulp van de TelephoneManager kan een ontwikkelaar de standaard belfunctionaliteit uitbreiden of verfijnen.
5) Hulpbronnenbeheerder
Android app wordt meestal geleverd met meer dan alleen code. Ze hebben ook andere bronnen, zoals pictogrammen, audio- en videobestanden, animaties, tekstbestanden en dergelijke. Android helpt ervoor te zorgen dat er efficiënte, responsieve toegang tot deze hulpbronnen is. Het zorgt er ook voor dat de juiste middelen aan de eindgebruikers worden geleverd. Bij het invullen van velden in de apps worden bijvoorbeeld tekstbestanden in de juiste taal gebruikt.
6) Bekijk systeem
Android biedt ook een manier om eenvoudig gemeenschappelijke visuele componenten te creëren die nodig zijn voor app-interactie. Deze componenten omvatten widgets zoals knoppen, afbeeldingshouders zoals ImageView, componenten om een lijst met items weer te geven, zoals ListView, en nog veel meer. De componenten zijn vooraf gemaakt, maar kunnen ook worden aangepast aan de behoeften en branding van app-ontwikkelaars.
7) Meldingsbeheerder
De Meldingsmanager is verantwoordelijk voor het informeren Android gebruikers van applicatiegebeurtenissen. Het doet dit door gebruikers visuele, audio- of trillingssignalen of een combinatie daarvan te geven wanneer er een gebeurtenis plaatsvindt. Deze gebeurtenissen hebben externe en interne triggers. Enkele voorbeelden van interne triggers zijn gebeurtenissen waarbij de batterij bijna leeg is en die een melding activeren dat de batterij bijna leeg is. Een ander voorbeeld zijn door de gebruiker opgegeven gebeurtenissen zoals een alarm. Enkele voorbeelden van externe triggers zijn onder meer nieuwe berichten of nieuwe gedetecteerde wifi-netwerken.
Android biedt programmeurs en eindgebruikers de mogelijkheid om het meldingssysteem te verfijnen. Dit kan ervoor zorgen dat ze meldingsgebeurtenissen kunnen verzenden en ontvangen op een manier die het beste bij hen en hun huidige omgeving past.
8) Pakketbeheerder
Android biedt ook toegang tot informatie over geïnstalleerde applicaties. Android houdt applicatie-informatie bij, zoals installatie- en verwijderingsgebeurtenissen, machtigingen die de app aanvraagt en het gebruik van bronnen, zoals geheugengebruik.
Met deze informatie kunnen ontwikkelaars hun applicaties de functionaliteit laten activeren of deactiveren, afhankelijk van nieuwe functies die door begeleidende apps worden aangeboden.
9) Inhoudsaanbieder
Android heeft een gestandaardiseerde manier om gegevens te delen tussen applicaties op het apparaat met behulp van de contentprovider. Ontwikkelaars kunnen de inhoudsprovider gebruiken om gegevens beschikbaar te stellen aan andere toepassingen. Ze kunnen de app-gegevens bijvoorbeeld doorzoekbaar maken vanuit externe zoekapplicaties. Android stelt zelf gegevens zoals agendagegevens, contactgegevens en dergelijke bloot met behulp van hetzelfde systeem.
Android Runtime- en kern-/native bibliotheken
1) Android Runtime
Android momenteel gebruikt Android Runtime (ART) om applicatiecode uit te voeren. ART wordt voorafgegaan door de Dalvik Runtime die ontwikkelaarscode compileerde naar Dalvik Executable-bestanden (Dex-bestanden). Deze uitvoeringsomgevingen zijn geoptimaliseerd voor het Android-platform, rekening houdend met de processor- en geheugenbeperkingen op mobiele apparaten.
De runtime vertaalt code die door programmeurs is geschreven naar machinecode die berekeningen uitvoert en gebruikmaakt van Android-frameworkcomponenten om functionaliteit te leveren. Android host meerdere applicaties en systeemcomponenten die elk in hun processen draaien.
Kernbibliotheken
In dit segment bespreken we enkele van de kernbibliotheken die aanwezig zijn in de Android besturingssysteem.
2) Mediaframework
Android ondersteunt ook native populaire mediacodecs, waardoor het gemakkelijk wordt voor apps die op de Android platform om multimediacomponenten direct uit de doos te gebruiken/af te spelen.
3) SQLite
Android heeft ook een SQLite databank waardoor applicaties zeer snelle native databasefunctionaliteit kunnen hebben zonder de noodzaak van bibliotheken van derden.
4) Vrij type
Android wordt geleverd met een vooraf geïnstalleerde snelle en flexibele lettertype-engine. Dit maakt het voor applicatieontwikkelaars mogelijk om componenten van hun applicatie vorm te geven en een rijke ervaring te bieden die de bedoelingen van de ontwikkelaar overbrengt.
5) OpenGL
Android wordt ook geleverd met het OpenGL grafische systeem. Het is een C-bibliotheek die helpt Android gebruik hardwarecomponenten bij de realtime weergave van 2D- en 3D-afbeeldingen.
6) SSL
Android wordt ook geleverd met een ingebouwde beveiligingslaag om veilige communicatie tussen applicaties mogelijk te maken Android en andere apparaten zoals servers, andere mobiele apparaten, routers 6.
7) SGL
Android wordt geleverd met een grafische bibliotheek die is geïmplementeerd in low-level code en die efficiënt graphics voor het Android-platform rendert. Het werkt met de hogere-level componenten van de Android kader Android grafische pijplijn.
8) Lib
De kern van Android bevat bibliotheken geschreven in C en C++, dit zijn talen op een laag niveau die bedoeld zijn voor ingebed gebruik en die helpen bij het maximaliseren van de prestaties. Libc biedt een manier om systeemfunctionaliteiten op laag niveau, zoals Threads, Sockets, IO en dergelijke, aan deze bibliotheken bloot te stellen.
9) Webkit
Dit is een open-source browserengine die als basis wordt gebruikt om browsers te bouwen. De standaard Android browser vóór versie 4.4 KitKat gebruikt het voor het weergeven van webpagina's. Het stelt applicatieontwikkelaars in staat webcomponenten in het weergavesysteem weer te geven met behulp van WebView. Hierdoor kunnen apps webcomponenten in hun functionaliteit integreren.
10) Oppervlaktebeheerder
De surface manager is verantwoordelijk voor het verzekeren van een soepele rendering van applicatieschermen. Dit doet hij door 2D- en 3D-graphics samen te stellen voor rendering. Dit wordt verder mogelijk gemaakt door off-screen buffering.
Linux Kernel
Het hoofdbestanddeel van de Android Systeem is de Linux Kernel. Het is het fundamentele stuk dat alle Android's functionaliteit.
De Linux Kernel is een beproefd stuk software dat is gebruikt bij de ontwikkeling besturingssystemen voor apparaten met een breed bereik, van supercomputers tot kleine gadgets. Het heeft beperkte verwerkingsmogelijkheden, zoals kleine netwerkgadgets voor het Internet of Things (IoT).
De Linux Kernel kan worden aangepast om aan de apparaatspecificaties te voldoen, zodat fabrikanten deze kunnen maken Android apparaten met verschillende mogelijkheden die aansluiten bij de gebruikerservaring.
Met betrekking tot AndroidDe Kernel is verantwoordelijk voor veel fundamentele functionaliteiten, waaronder (maar niet beperkt tot):
- Apparaatstuurprogramma's
- Geheugen management
- Process Management
Laten we een deel van de functionaliteit uitbreiden:
Apparaatstuurprogramma's
De Linux Kernel herbergt de drivers die nodig zijn om het besturingssysteem met verschillende hardwarecomponenten te laten werken. Deze drivers bieden een standaardinterface waarmee hardwarecomponenten van verschillende fabrikanten kunnen werken.
Dit maakt het voor apparaatfabrikanten mogelijk om verschillende componenten te kopen, zoals Bluetooth-componenten, Wifi-componenten en cameracomponenten. Zolang de fabrikanten overeenkomen met de Android standaardspecificaties, de integratie is naadloos.
1) USB-stuurprogramma
Linux biedt ook Android met een manier om te communiceren met USB-apparaten. Moderne apparaten worden geleverd met verschillende USB-poorten, waaronder USB 2.0 en nieuwe versies van USB, waaronder USB-C. Deze stuurprogramma's maken het mogelijk om de USB-poort te gebruiken om op te laden en live gegevens zoals logs over te dragen Android apparaten en interactie met de Android bestandssysteem.
2) Bluetooth-stuurprogramma
Linux Kernel biedt ondersteuning voor interfaces met Bluetooth-hardwarecomponenten. Het biedt een manier om gegevens te lezen en te schrijven die worden ontvangen van ondersteunde Bluetooth-radiofrequenties. Het biedt ook een reeks faciliteiten voor Android om Bluetooth te configureren.
3) Wifi-stuurprogramma
De Linux-kernel biedt stuurprogramma's om de hardwarecomponenten van WiFi-netwerken te integreren. WiFi-componenten die zijn ingebed in mobiele apparaten maken dit mogelijk Android apparaten om verbinding te maken met wifi-netwerken. De driver zorgt ervoor dat de wifi-componenten wifi-netwerken kunnen uitzenden en hotspots kunnen creëren.
4) Beeldschermstuurprogramma
Android maakt het mogelijk om te interfacen met displaycomponenten. Voor de meeste apparaten is de interfacecomponent een LCD-touchscreen. Het biedt ondersteuning voor het configureren en tekenen van pixels.
5) Audiostuurprogramma
Android Apparaten worden doorgaans geleverd met hardwarecomponenten voor audio-invoer en -uitvoer. Audiostuurprogramma's in de kernel schakelen de Android systeem om audio te gebruiken die wordt ontvangen van deze componenten en ook audio-uitvoer te produceren.
6) Energiebeheer
De meeste Android apparaten worden gebruikt terwijl ze zijn losgekoppeld van het stopcontact. Ze zijn dus voor een groot deel van hun gebruik afhankelijk van batterijen om ze van stroom te voorzien. Linux Kernel wordt geleverd met een energiebeheersysteem dat kan worden geconfigureerd om te voldoen aan de behoeften van de apparaten die er gebruik van maken.
Android Het besturingssysteem gebruikt de energiebeheerder om andere componenten op het apparaat energiebewust te maken. Het doet dit door verschillende machtsgerelateerde staten uit te zenden. Deze toestanden zijn Stand-by, Slaapstand en Batterij bijna leeg. Op Android, is de energiemanager aangepast naar de standaardslaapmodus om een maximale levensduur van de batterij te garanderen.
De Power Manager biedt mogelijkheden waarmee applicaties kunnen reageren op verschillende energiemodi. Applicaties kunnen ook hun gedrag aanpassen aan de huidige energiestatus van het apparaat.
Een applicatie kan ook verzoeken om het standaard energiebeleid te wijzigen. Applicaties kunnen de gewenste functionaliteit realiseren, zoals het actief houden van de hardwarecomponenten. Een voorbeeld is het actief houden van het scherm tijdens het lezen van een boek om ervoor te zorgen dat een gebruiker niet wordt onderbroken. Een ander voorbeeld is het ingeschakeld houden van de audiocomponenten wanneer u op de achtergrond naar muziek luistert.
7) Flash-geheugen
De meeste Android apparaten gebruiken flash-geheugen als opslagmiddel. Flash-geheugen is snel en neemt minder ruimte in beslag, waardoor het perfect is voor kleine apparaten. De Linux-kernel biedt hiervoor een middel Android apparaten om te lezen en te schrijven naar flash-geheugen. Het biedt een manier om het geheugen zodanig te verdelen dat het besturingssysteem en andere toepassingen de geheugenbron eenvoudig en efficiënt kunnen delen.
8) Bindmiddel
Android host vele applicaties en systeemcomponenten die elk in hun processen draaien. In de meeste gevallen moeten deze processen van elkaar worden geïsoleerd om interferentie en gegevenscorruptie te voorkomen. Toch zijn er gevallen waarin we gegevens van het ene proces naar het andere willen doorgeven.
De Linux-kernel maakt het delen van gegevens mogelijk door het leveren van binder-stuurprogramma's. Binder-drivers maken communicatie tussen processen mogelijk, IPC. Met behulp van IPC-processen kunnen andere processen worden ontdekt en informatie worden gedeeld.
Geheugen management
Een andere verantwoordelijkheid van de Linux Kernel is geheugenbeheer. Terwijl verschillende applicaties draaien, zorgt de Kernel ervoor dat de geheugenruimte die ze gebruiken niet conflicteert en elkaar overschrijft.
Het zorgt er ook voor dat alle actieve apps voldoende geheugen krijgen om te functioneren, zodat geen enkele app te veel ruimte in beslag neemt.
Process Management
Elke app-in Android loopt in een proces. De Kernel is tevens verantwoordelijk voor het aansturen van processen. Dit betekent dat het verantwoordelijk is voor het maken, pauzeren, stoppen, afsluiten of beëindigen van processen.
De Kernel maakt verschillende functionaliteiten mogelijk, zoals het tegelijkertijd uitvoeren van meerdere processen, het communiceren tussen processen, het uitvoeren van processen op de achtergrond, enzovoort.
Omdat elk proces zijn eigen geheugenruimte nodig heeft om correct te kunnen functioneren, zorgt de Kernel ervoor dat de geheugenruimte die aan elk proces wordt toegewezen, wordt beschermd tegen andere processen. Het zorgt er ook voor dat middelen zoals RAM toegewezen aan processen komen vrij wanneer de processen worden afgesloten.
De Linux Kernel is ook verantwoordelijk voor het distribueren van werk naar de processors die in het apparaat aanwezig zijn. Dit maakt het mogelijk om de prestaties van apparaten met meerdere kernen te maximaliseren, omdat bij verschillende apps processen op een andere kern worden uitgevoerd.
De Linux Kernel doet meer taken onder de motorkap, inclusief het afdwingen van de beveiliging.
Samenvatting
- Android Architectuur is in lagen georganiseerd.
- Elke laag lost een unieke reeks problemen op.
- Eindgebruikers communiceren met apps op de applicatielaag
- Applicatieontwikkelaars ontwikkelen apps voor gebruik op de applicatielaag. Ze doen dit met behulp van tools en abstracties die door het Application Framework worden geboden.
- Android De raamwerklaag vereenvoudigt de toegang tot componenten op laag niveau door een API te creëren over native bibliotheken.
- Android Runtime- en Core-bibliotheken gebruiken talen op laag niveau samen met optimalisaties voor mobiele apparaten. Dit zorgt ervoor dat de code die door applicatieontwikkelaars is geschreven, ondanks de problemen soepel blijft werken Android apparaatbeperkingen.
- Onderaan de Android softwarestack is de Linux-kernel. Het communiceert met de hardwarecomponenten die gebruikelijk zijn in Android toestellen.