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 massive samarbeidsinnsatser og investeringer fra mange selskaper. Hovedselskapet bak Android-utvikling er Google. Andre selskaper inkluderer enhetsprodusenter som Samsung, LG; prosessorprodusenter som Intel og ARM, men 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
Å utvikle et operativsystem for mobile enheter kommer med en rekke utfordringer. Å bruke 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. Ved å sette opp Gmail aktiveres andre e-postavhengige komponenter 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: Sveip ned på skjermen viser varslingsskuffen. Den gir applikasjonshendelser som brukeren bør være oppmerksom på. Over varselet er et sett med snarveier til noen vanlig brukte enhetsinnstillinger som brukerne kan bytte. Disse innstillingene inkluderer av og på-brytere for ulike maskinvarekomponenter som Bluetooth og Wifi. Et langt trykk på disse hendelsene gjør det mulig for oss å navigere til deres konfigurasjonsside.
Dette laget blir også referert til som brukernivå i motsetning til lagene under som stort sett er innstilt for applikasjonsutvikling. Applikasjonsutviklere lager og tilpasser opplevelsene for appene sine på dette laget. Lagene under applikasjonslaget er ikke tilpasset av applikasjonsutviklere. De anses som en del av systemlaget. Disse lagene er tilpasset 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 på pause i et spill, stoppe musikkavspilling 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 styr på programinformasjon som installasjons- og avinstalleringshendelser, tillatelser appen ber om, og ressursutnyttelse som 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 en kamptestet programvare som har blitt brukt i utviklingen 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.
En applikasjon kan også be om å endre standard strømpolicyer. Applikasjoner kan oppnå ønsket funksjonalitet, for eksempel å holde maskinvarekomponentene aktive. Et eksempel er å holde skjermen aktiv når du leser en bok for å sikre at en bruker ikke blir avbrutt. Et annet eksempel er å holde lydkomponentene slått på når du lytter 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 går i en prosess. Kjernen er også ansvarlig for å administrere prosesser. Dette betyr at det er ansvarlig for å opprette, sette på pause, stoppe, stenge eller drepe 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 å bruke verktøy og abstraksjoner fra Application Framework.
- 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.