Android Architecture: Application Layers, Framework, Component
Android Operativsystemets fรธrste utgivelse var i 2008. Allerede i starten bygde teamet bak operativsystemet det pรฅ toppen av skuldrene til gigantene. Utover brukergrensesnittet som Android OS presenteres pรฅ overflatenivรฅ, det bestรฅr av flere lag. Disse lagene inkluderer tilpasset kode og รฅpen kildekode-teknologier som har vรฆrt under kontinuerlig utvikling i flere tiรฅr.
Android har blitt utviklet gjennom massivt samarbeid og investeringer fra mange selskaper. Hovedselskapet bak Android-utvikling er GoogleAndre selskaper inkluderer enhetsprodusenter som Samsung, LG; prosessorprodusenter som Intel og ARM, for รฅ nevne noen.
Nรฅr vi snakker om Android arkitektur, mener vi hvordan Android systemet er designet, segmentert i lag og bygget opp for รฅ fungere som et system. ร bygge et sรฅ komplekst system krever nรธye strukturering for รฅ sikre at alle komponentene fungerer sammen. Arkitekturen sikrer at de mange komponentene fungerer som en helhet uten รฅ krasje.
Lag
Fรธlgende er lagene som utgjรธr Android arkitektur som merket pรฅ diagrammet:
- Sรธknad
- Sรธknadsramme
- Android Runtime og kjernebibliotek
- Linux Kernel
Utviklingping Et operativsystem for mobile enheter kommer med en rekke utfordringer. Bruk av denne lagdelte arkitekturen sikrer at ulike problemer brytes ned og lรธses pรฅ ulike nivรฅer.
En lagdelt arkitektur hjelper med รฅ skille bekymringer og sikre at Android-programvareutviklere ikke trenger รฅ hรฅndtere problemer pรฅ lavt nivรฅ hver gang. De kan i stedet fokusere pรฅ รฅ levere forretningsverdi opptatt av laget de jobber med.
Utviklere jobber med รฅ gjรธre at apper ikke trenger รฅ bekymre seg for implementeringen av applikasjonsrammeverket. Det arbeidet overlates til systemutviklerne som jobber med applikasjonsrammeverket.
Application Framework-utviklerne jobber med utvikleropplevelse og trenger ikke รฅ bekymre deg for driverne pรฅ lavt nivรฅ. Systemingeniรธrer pรฅ lavt nivรฅ kan fokusere fullstendig pรฅ komponenter pรฅ lavt nivรฅ som Bluetooth eller lyddrivere og lignende.
Androidsin lagdelte struktur gjรธr det mulig รฅ bruke oppdateringer med feilrettinger eller forbedringer pรฅ hvert lag for seg. Dette sikrer at endringer pรฅ tvers av lag ikke forstyrrer hverandre. Dette gjรธr det mulig for personer som jobber pรฅ et annet nivรฅ av operativsystemet รฅ jobbe med รฅ hindre hverandre etter hvert som nye oppdateringer og utgivelser gjรธres.
Android Sรธknad

Dette er laget som sluttbrukere samhandler med. Det er pรฅ dette laget applikasjonsutviklere publiserer applikasjonene sine for รฅ kjรธre.
Android, som standard, leveres med et sett med applikasjoner som gjรธr Android-enheter brukbare fra offset.
- Hjem: Hjemmesiden pรฅ Android bestรฅr av oppstartsikoner for ofte brukte applikasjoner som sluttbrukeren kanskje vil ha rask tilgang til. Du kan starte appene ved รฅ klikke pรฅ startlistene til disse appene. Helt รธverst pรฅ skjermen har du widgets som viser nettverk, batterinivรฅ, dato og klokkeslett.
- Kontakter: Android, som standard, gir en mรฅte รฅ lagre og hente kontakter. Kontaktinformasjon deles pรฅ tvers av andre apper for รฅ forbedre funksjonaliteten.
- meldinger: Android gir muligheten til รฅ sende og motta SMS-meldinger.
- E-post: Android leveres med innebygd stรธtte for e-posttjenester. Setter opp en Android enheten krever en Gmail konto. Oppsett Gmail aktiverer andre e-postavhengige komponenter pรฅ Android enheter. Noen e-postavhengige funksjoner inkluderer sikkerhets- og gjenopprettingsmekanismer. En annen e-postavhengig funksjon er tilgang til Play Store, en markedsplass for Android applikasjoner.
- Nettleser: Android leveres med en standard nettleser.
- Varslingsskuff: SWIping Nede pรฅ skjermen vises varslingsskuffen. Den inneholder programhendelser som brukeren bรธr vรฆre oppmerksom pรฅ. Over varslingen finner du et sett med snarveier til noen vanlige enhetsinnstillinger som brukerne kan slรฅ pรฅ og av. Disse innstillingene inkluderer av- og pรฅ-knapper for ulike maskinvarekomponenter som Bluetooth og Wifi. Langt trykk pรฅ disse hendelsene lar oss navigere til konfigurasjonssiden deres.
Dette laget kalles ogsรฅ brukernivรฅ i motsetning til lagene under som stort sett er innstilt pรฅ applikasjonsutvikling. Applikasjonsutviklere lager og tilpasser opplevelsene for appene sine pรฅ dette laget. Lagene under applikasjonslaget tilpasses ikke av applikasjonsutviklere. De regnes som en del av systemlaget. Disse lagene tilpasses av enhetsprodusenter, Google Android-team eller tredjeparter som รธnsker รฅ bruke Android kildekoden for deres produkt eller forskning.
Sรธknadsramme
Ocuco Android OS avslรธrer de underliggende bibliotekene og funksjonene til Android enhet som bruker en Java API. Dette er det som er kjent som Android rammeverk. Rammeverket avslรธrer et trygt og enhetlig middel รฅ utnytte Android enhetsressurser.

1) Aktivitetsleder
Applikasjoner bruker Android aktivitetskomponent for รฅ presentere et inngangspunkt til appen. Android Aktiviteter er komponentene som huser brukergrensesnittet som appbrukere samhandler med. Nรฅr sluttbrukere samhandler med Android enheten starter, stopper og hopper de frem og tilbake pรฅ tvers av mange applikasjoner. Hver navigasjonshendelse utlรธser aktivering og deaktivering av mange aktiviteter i respektive applikasjoner.
Ocuco Android ActivityManager er ansvarlig for forutsigbar og konsistent oppfรธrsel under applikasjonsoverganger. ActivityManager gir en plass for appskapere for รฅ fรฅ appene deres til รฅ reagere nรฅr Android OS utfรธrer globale handlinger. Apper kan lytte til hendelser som enhetsrotasjon, app-รธdeleggelse pรฅ grunn av minnemangel, en app som flyttes ut av fokus, og sรฅ videre.
Noen eksempler pรฅ hvordan applikasjoner kan reagere pรฅ disse overgangene inkluderer รฅ sette aktivitet i et spill pรฅ pause, stoppeping musikk som spilles under en telefonsamtale.
2) Window Manager
Android kan bestemme skjerminformasjon for รฅ bestemme kravene som trengs for รฅ lage vinduer for applikasjoner. Windows er sporene der vi kan se appens brukergrensesnitt. Android bruker Window Manager til รฅ gi denne informasjonen til appene og systemet mens de kjรธrer, slik at de kan tilpasse seg modusen enheten kjรธrer pรฅ.
Window Manager hjelper deg med รฅ levere en tilpasset appopplevelse. Apper kan fylle hele skjermen for en oppslukende opplevelse eller dele skjermen med andre apper. Android aktiverer dette ved รฅ tillate flere vinduer for hver app.
3) Stedssjef
bro Android enheter er utstyrt med GPS-enheter som kan fรฅ brukerens plassering ved hjelp av satellittinformasjon som kan gรฅ helt til meterpresisjon. Programmerere kan be om plasseringstillatelse fra brukerne, levere plassering og bevisste opplevelser.
Android er ogsรฅ i stand til รฅ bruke trรฅdlรธse teknologier for ytterligere รฅ berike stedsdetaljer og รธke dekningen nรฅr enhetene er lukkede rom. Android gir disse funksjonene under paraplyen til Location-Manager.
4) Telefonisjef
bro Android enheter tjener en primรฆr rolle i telefoni. Android bruker TelephoneManager til รฅ kombinere maskinvare- og programvarekomponenter for รฅ levere telefonifunksjoner. Maskinvarekomponentene inkluderer eksterne deler som sim-kortet, og enhetsdeler som mikrofon, kamera og hรธyttalere. Programvarekomponentene inkluderer opprinnelige komponenter som talltastatur, telefonbok, ringetoneprofiler. Ved รฅ bruke TelephoneManager kan en utvikler utvide eller finjustere standard ringefunksjonalitet.
5) Ressurssjef
Android appen kommer vanligvis med mer enn bare kode. De har ogsรฅ andre ressurser som ikoner, lyd- og videofiler, animasjoner, tekstfiler og lignende. Android bidrar til รฅ sikre at det er effektiv, responsiv tilgang til disse ressursene. Det sikrer ogsรฅ at de riktige ressursene leveres til sluttbrukerne. For eksempel brukes tekstfilene pรฅ riktig sprรฅk nรฅr felter i appene fylles ut.
6) Vis System
Android gir ogsรฅ en mรฅte รฅ enkelt lage vanlige visuelle komponenter som trengs for app-interaksjon. Disse komponentene inkluderer widgets som knapper, bildeholdere som ImageView, komponenter for รฅ vise en liste over elementer som ListView og mange flere. Komponentene er ferdiglagde, men kan ogsรฅ tilpasses for รฅ passe apputviklerens behov og merkevarebygging.
7) Varslingsleder
Varslingsansvarlig er ansvarlig for รฅ informere Android brukere av applikasjonshendelser. Den gjรธr dette ved รฅ gi brukere visuelle, lyd- eller vibrasjonssignaler eller en kombinasjon av dem nรฅr en hendelse inntreffer. Disse hendelsene har eksterne og interne triggere. Noen eksempler pรฅ interne utlรธsere er statushendelser med lavt batteri som utlรธser et varsel om รฅ vise lavt batterinivรฅ. Et annet eksempel er brukerspesifiserte hendelser som en alarm. Noen eksempler pรฅ eksterne triggere inkluderer nye meldinger eller nye wifi-nettverk oppdaget.
Android gir programmerere og sluttbrukere et middel til รฅ finjustere varslingssystemet. Dette kan bidra til รฅ garantere at de kan sende og motta varslingshendelser pรฅ en mรฅte som passer best for dem og deres nรฅvรฆrende miljรธer.
8) Pakkeforvalter
Android gir ogsรฅ tilgang til informasjon om installerte applikasjoner. Android holder track med programinformasjon, for eksempel installasjons- og avinstallasjonshendelser, tillatelser appen ber om og ressursutnyttelse, for eksempel minneforbruk.
Denne informasjonen kan gjรธre det mulig for utviklere รฅ fรฅ applikasjonene sine til รฅ aktivere eller deaktivere funksjonalitet avhengig av nye funksjoner som presenteres av fรธlgeapper.
9) Innholdsleverandรธr
Android har en standardisert mรฅte รฅ dele data mellom applikasjoner pรฅ enheten ved hjelp av innholdsleverandรธren. Utviklere kan bruke innholdsleverandรธren til รฅ eksponere data for andre applikasjoner. For eksempel kan de gjรธre appdataene sรธkbare fra eksterne sรธkeapplikasjoner. Android selv eksponerer data som kalenderdata, kontaktdata og lignende ved รฅ bruke samme system.
Android Runtime og Core/Native Libraries

1) Android Runtime
Android bruker for รธyeblikket Android Runtime (ART) for รฅ kjรธre applikasjonskode. ART er innledet av Dalvik Runtime som kompilerte utviklerkode til Dalvik kjรธrbare filer (Dex-filer). Disse utfรธrelsesmiljรธene er optimalisert for Android-plattformen med tanke pรฅ prosessoren og minnebegrensningene pรฅ mobile enheter.
Kjรธretiden oversetter kode skrevet av programmerere til maskinkode som gjรธr beregninger og bruker Android-rammekomponenter for รฅ levere funksjonalitet. Android er vert for flere applikasjoner og systemkomponenter som hver kjรธrer i sine prosesser.
Kjernebiblioteker
I dette segmentet vil vi diskutere noen av kjernebibliotekene som finnes i Android operativsystem.
2) MediaFramework
Android stรธtter ogsรฅ populรฆre mediekodeker, noe som gjรธr det enkelt for apper som er opprettet pรฅ Android plattform for รฅ bruke/spille multimediekomponenter ut av esken.
3) SQLite
Android har ogsรฅ en SQLite database som gjรธr det mulig for applikasjoner รฅ ha svรฆrt rask innfรธdt databasefunksjonalitet uten behov for tredjepartsbiblioteker.
4) Freetype
Android leveres med en forhรฅndsinstallert rask og fleksibel fontmotor. Dette gjรธr det mulig for applikasjonsutviklere รฅ style komponenter i applikasjonen og levere en rik opplevelse som kommuniserer utviklerens intensjoner.
5) OpenGL
Android leveres ogsรฅ med OpenGL-grafikksystemet. Det er et C-bibliotek som hjelper Android bruke maskinvarekomponenter i sanntidsgjengivelse av 2D- og 3D-grafikk.
6) SSL
Android leveres ogsรฅ med et innebygd sikkerhetslag for รฅ muliggjรธre sikker kommunikasjon mellom applikasjoner pรฅ Android og andre enheter som servere, andre mobile enheter, rutere 6.
7) SGL
Android leveres med et grafikkbibliotek implementert i lavnivรฅkode som effektivt gjengir grafikk for Android-plattformen. Det fungerer med komponentene pรฅ hรธyere nivรฅ i Android rammeverk Android grafikk pipeline.
8) Libc
Kjernen til Android inneholder biblioteker skrevet i C og C++, som er sprรฅk pรฅ lavt nivรฅ ment for innebygd bruk som hjelper til med รฅ maksimere ytelsen. Libc gir et middel til รฅ eksponere systemfunksjoner pรฅ lavt nivรฅ som Threads, Sockets, IO og lignende for disse bibliotekene.
9) Webkit
Dette er en รฅpen kildekode-nettlesermotor som brukes som grunnlag for รฅ bygge nettlesere. Standard Android nettleser fรธr versjon 4.4 KitKat bruker den til รฅ gjengi nettsider. Det gjรธr det mulig for applikasjonsutviklere รฅ gjengi webkomponenter i visningssystemet ved รฅ bruke WebView. Dette gjรธr det mulig for apper รฅ integrere webkomponenter i funksjonaliteten deres.
10) Surface Manager
Overflateansvarlig er ansvarlig for รฅ sikre jevn gjengivelse av pรฅfรธringsskjermer. Den gjรธr dette ved รฅ komponere 2D- og 3D-grafikk for gjengivelse. Det muliggjรธr dette videre ved รฅ gjรธre bufring utenfor skjermen.
Linux Kernel
Rotkomponenten til Android Systemet er Linux-kjernen. Det er den grunnleggende brikken som muliggjรธr alle Androidsin funksjonalitet.
Linux-kjernen er et velprรธvd program som har blitt brukt i utviklingping operativsystemer for enheter med stort utvalg, fra superdatamaskiner til smรฅ dingser. Den har begrensede prosesseringsevner som smรฅ nettverkstilkoblede gadgets for tingenes internett (IoT).
Linux-kjernen kan tilpasses for รฅ mรธte enhetsspesifikasjonene for รฅ gjรธre det mulig for produsenter รฅ lage Android enheter med forskjellige muligheter for รฅ matche brukeropplevelsen.
Med hensyn til Android, er kjernen ansvarlig for mange grunnleggende funksjoner, inkludert men ikke begrenset til disse:
- Enhetsdrivere
- Minnehรฅndtering
- Prosessledelse
La oss utvide litt av funksjonaliteten:
Enhetsdrivere
Linux-kjernen inneholder driverne som trengs for รฅ gjรธre det mulig for operativsystemet รฅ fungere med forskjellige maskinvarekomponenter. Disse driverne gir et standardgrensesnitt som maskinvarekomponenter hentet fra forskjellige produsenter kan arbeide med.
Dette gjรธr det mulig for enhetsprodusenter รฅ skaffe forskjellige komponenter, for eksempel Bluetooth-komponenter, Wifi-komponenter, kamerakomponenter. Sรฅ lenge produsentene matcher Android standardspesifikasjoner, integrasjon er sรธmlรธs.
1) USB-driver
Linux gir ogsรฅ Android med en mรฅte รฅ kommunisere med USB-enheter. Moderne enheter kommer med forskjellige USB-porter, inkludert USB 2.0 og nye versjoner av USB, inkludert USB-C. Disse driverne gjรธr det mulig รฅ bruke USB-porten til รฅ lade, overfรธre live data som logger fra Android enheter, og samhandle med Android filsystem.
2) Bluetooth-driver
Linux Kernel gir stรธtte for grensesnitt med Bluetooth-maskinvarekomponenter. Det gir en mรฅte รฅ lese og skrive data mottatt fra stรธttede bluetooth-radiofrekvenser. Det gir ogsรฅ et sett med fasiliteter for Android for รฅ konfigurere Bluetooth.
3) Wifi-driver
Linux-kjernen gir drivere for รฅ integrere WiFi-nettverksmaskinvarekomponentene. WiFi-komponenter innebygd i mobile enheter aktiverer Android enheter for รฅ koble til wifi-nettverk. Driveren gjรธr det mulig for wifi-komponentene รฅ kringkaste wifi-nettverk og opprette hotspots.
4) Skjermdriver
Android gjรธr det mulig รฅ kommunisere med skjermkomponenter. For de fleste enheter er grensesnittkomponenten en LCD-berรธringsskjerm. Det gir stรธtte for konfigurering og tegning av piksler.
5) Lyddriver
Android enheter leveres vanligvis med maskinvarekomponenter for lydinngang og -utgang. Lyddrivere i kjernen aktiverer Android systemet for รฅ bruke lyd mottatt fra disse komponentene og ogsรฅ produsere lydutgang.
6) Power Manager
bro Android enheter brukes mens de er koblet fra strรธmuttak. De er derfor avhengige av batterier for รฅ drive dem for en stor del av bruken. Linux Kernel kommer med et strรธmstyringssystem som kan konfigureres for รฅ mรธte behovene til enhetene som bruker den.
Android OS bruker strรธmbehandleren til รฅ gjรธre andre komponenter pรฅ enheten strรธmbevisste. Den gjรธr dette ved รฅ kringkaste forskjellige maktrelaterte stater. Disse tilstandene er Standby, Sleep og Low-Battery. Pรฅ Android, er strรธmbehandleren justert til standard til hvilemodus for รฅ sikre maksimal batterilevetid.
Power Manager viser midler for applikasjoner til รฅ reagere pรฅ forskjellige strรธmmoduser. Apper kan ogsรฅ endre oppfรธrselen deres for รฅ matche den nรฅvรฆrende strรธmtilstanden til enheten.
Et program kan ogsรฅ be om รฅ endre standard strรธmpolicyer. Programmer kan oppnรฅ รธnsket funksjonalitet, for eksempel keepping maskinvarekomponentene er aktive. Et eksempel er keeping skjermen aktiv nรฅr man leser en bok for รฅ sikre at brukeren ikke blir avbrutt. Et annet eksempel er keepping lydkomponentene var slรฅtt pรฅ nรฅr man lyttet til musikk i bakgrunnen.
7) Flash-minne
bro Android enheter bruker flash-minne som lagringsmiddel. Flash-minne er raskt og tar mindre plass, noe som gjรธr det perfekt for smรฅ enheter. Linux-kjernen gir et middel for Android enheter for รฅ lese og skrive inn i flash-minnet. Det gir en mรฅte รฅ partisjonere minnet pรฅ en slik mรฅte at operativsystemet og andre applikasjoner enkelt og effektivt kan dele minneressursen.
8) Perm
Android er vert for mange applikasjoner og systemkomponenter som hver kjรธrer i sine prosesser. I de fleste tilfeller bรธr disse prosessene isoleres fra hverandre for รฅ forhindre forstyrrelser og datakorrupsjon. Likevel er det tilfeller der vi รธnsker รฅ overfรธre data fra en prosess til en annen.
Linux-kjernen muliggjรธr datadelingsfunksjonalitet ved รฅ tilby bindedrivere. Binder-drivere muliggjรธr interprosesskommunikasjon, IPC. Bruk av IPC-prosesser kan oppdage andre prosesser og dele informasjon.
Minnehรฅndtering
Et annet ansvar for Linux-kjernen er minneadministrasjon. Nรฅr forskjellige applikasjoner kjรธrer, sikrer kjernen at minneplassen de bruker ikke kommer i konflikt og overskriver hverandre.
Det bidrar ogsรฅ til รฅ sikre at alle apper som kjรธrer fรฅr tilstrekkelig minne til รฅ fungere, og sรธrger for at ingen enkelt app tar for mye plass.
Prosessledelse
Hver app i Android kjรธrer i en prosess. Kjernen er ogsรฅ ansvarlig for รฅ administrere prosesser. Dette betyr at den er ansvarlig for รฅ opprette, sette pรฅ pause og stoppeping, stenge eller avvikle prosesser.
Kjernen muliggjรธr ulike funksjoner som รฅ kjรธre flere prosesser samtidig, kommunisere mellom prosesser, kjรธre prosesser i bakgrunnen og sรฅ videre.
Siden hver prosess krever sin egen minneplass for รฅ fungere korrekt, sikrer kjernen at minneplasser som er tildelt for hver prosess er beskyttet mot andre prosesser. Det sikrer ogsรฅ at ressurser som RAM tildelt prosesser frigjรธres nรฅr prosessene legges ned.
Linux-kjernen er ogsรฅ ansvarlig for รฅ distribuere arbeid til prosessorene som finnes i enheten. Dette gjรธr det mulig รฅ maksimere ytelsen til enheter med flere kjerner ettersom forskjellige apper vil ha prosesser som kjรธres pรฅ en annen kjerne.
Linux-kjernen gjรธr flere oppgaver under panseret, inkludert รฅ hรฅndheve sikkerhet.
Sammendrag
- Android arkitektur er organisert i lag.
- Hvert lag lรธser et unikt sett med problemer.
- Sluttbrukere samhandler med apper pรฅ applikasjonslaget
- Applikasjonsutviklere utvikler apper som skal brukes pรฅ applikasjonslaget. De gjรธr det ved hjelp av verktรธy og abstracsjoner levert av applikasjonsrammeverket.
- Android Rammelag forenkler tilgangen til komponenter pรฅ lavt nivรฅ ved รฅ lage en API over opprinnelige biblioteker.
- Android Runtime og Core-Libraries bruker lavnivรฅsprรฅk sammen med optimaliseringer for mobile enheter. Dette sikrer at kode skrevet av applikasjonsutviklere kjรธrer jevnt til tross Android enhetsbegrensninger.
- Ved bunnen av Android programvarestabelen er Linux-kjernen. Den har grensesnitt med maskinvarekomponentene som er vanlige i Android enheter.

