Android Architecture: Application Layers, Framework, Component
Android operativsystemets første udgivelse var i år 2008. Allerede ved starten byggede holdet bag operativsystemet det oven på skuldrene af giganter. Ud over den brugergrænseflade, som Android OS præsenterer på overfladeniveau, det består af flere lag. Disse lag inkluderer tilpasset kode og open source-teknologier, der har været under kontinuerlig udvikling i årtier.
Android er udviklet gennem massive samarbejdsindsatser og investeringer fra mange virksomheder. Hovedvirksomheden bag Android-udvikling er Google. Andre virksomheder omfatter enhedsproducenter som Samsung, LG; processorproducenter som Intel og ARM, men for at nævne nogle få.
Når vi taler om Android arkitektur, mener vi, hvordan Android systemet er designet, segmenteret i lag og bygget op til at fungere som et system. At bygge et så komplekst system kræver omhyggelig strukturering for at sikre, at alle komponenter arbejder sammen sammenhængende. Dens arkitektur sikrer, at de mange komponenter fungerer som en helhed uden at gå ned.
Lag
Følgende er de lag, der sammensætter Android arkitektur som angivet på diagrammet:
- Anvendelse
- Application Framework
- Android Runtime og kernebiblioteker
- Linux Kernel
Udvikling af et operativsystem til mobile enheder kommer med en række udfordringer. Brug af denne lagdelte arkitektur sikrer, at forskellige problemer nedbrydes og løses på forskellige niveauer.
En lagdelt arkitektur hjælper med at adskille bekymringer og sikre, at Android-softwareudviklere ikke behøver at håndtere problemer på lavt niveau hver gang. De kan i stedet fokusere på at levere forretningsværdi, der vedrører det lag, de arbejder på.
Udviklere arbejder på at få apps til ikke at bekymre sig om implementeringen af applikationsrammerne. Det arbejde er overladt til systemudviklerne, der arbejder på Application frameworket.
Application Framework-udviklerne arbejder på udvikleroplevelse og behøver ikke bekymre sig om drivere på lavt niveau. Systemingeniører på lavt niveau kan fokusere fuldstændigt på komponenter på lavt niveau, såsom Bluetooth eller Audio-drivere og lignende.
Android's lagdelte struktur gør det muligt at anvende opdateringer med fejlrettelser eller forbedringer til hvert lag for sig. Dette sikrer, at ændringer på tværs af lag ikke forstyrrer hinanden. Dette gør det muligt for folk, der arbejder på et andet niveau af operativsystemet, at arbejde med at blokere hinanden, efterhånden som nye opdateringer og udgivelser udføres.
Android Anvendelse
Dette er det lag, som slutbrugere interagerer med. Det er på dette lag, hvor applikationsudviklere udgiver deres applikationer for at køre.
Android, leveres som standard med et sæt applikationer, der gør Android-enheder brugbare fra offset.
- Home: Hjemmesiden på Android består af startikoner til almindeligt anvendte applikationer, som slutbrugeren måske vil have hurtig adgang til. Du kan starte apps ved at klikke på starterne for disse apps. Helt øverst på skærmen har du widgets, der viser netværk, batteriniveau, dato og klokkeslæt.
- Kontaktpersoner: Android, giver som standard et middel til at gemme og hente kontakter. Kontaktoplysninger deles på tværs af andre apps for at forbedre funktionaliteten.
- Beskeder: Android giver mulighed for at sende og modtage SMS-beskeder.
- E-mail: Android leveres med indbygget support til e-mail-tjenester. Opsætning af en Android enheden kræver en Gmail-konto. Opsætning af Gmail aktiverer andre e-mail-afhængige komponenter Android enheder. Nogle e-mail-afhængige funktioner omfatter sikkerheds- og gendannelsesmekanismer. En anden e-mailafhængig funktion er adgang til Play Butik, en markedsplads for Android applikationer.
- Browser: Android leveres med en standardbrowser.
- Underretningsskuffe: Hvis du stryger nedad på skærmen, afsløres meddelelsesskuffen. Det giver applikationsbegivenheder, som brugeren skal være opmærksom på. Over meddelelsen er et sæt genveje til nogle almindeligt anvendte enhedsindstillinger, som brugerne kan skifte til. Disse indstillinger inkluderer til- og frakoblinger for forskellige hardwarekomponenter såsom Bluetooth og Wifi. Langt tryk på disse begivenheder gør det muligt for os at navigere til deres konfigurationsside.
Dette lag omtales også som brugerniveau i modsætning til lagene nedenfor, der for det meste er indstillet til applikationsudvikling. Applikationsudviklere opretter og tilpasser oplevelserne for deres apps på dette lag. Lagene under applikationslaget er ikke tilpasset af applikationsudviklere. De betragtes som en del af systemlaget. Disse lag er tilpasset af enhedsproducenter, Google Android-teams eller tredjeparter, der ønsker at bruge Android kildekode til deres produkt eller forskning.
Application Framework
Android OS afslører de underliggende biblioteker og funktioner i Android enhed, der bruger en Java API. Dette er det, der er kendt som Android rammer. Rammerne afslører et sikkert og ensartet middel at udnytte Android enhedsressourcer.
1) Aktivitetsleder
Applikationer bruger Android aktivitetskomponent til at præsentere et indgangspunkt til appen. Android Aktiviteter er de komponenter, der rummer den brugergrænseflade, som app-brugere interagerer med. Som slutbrugere interagerer med Android enhed, de starter, stopper og hopper frem og tilbage på tværs af mange applikationer. Hver navigationsbegivenhed udløser aktivering og deaktivering af mange aktiviteter i respektive applikationer.
Android ActivityManager er ansvarlig for forudsigelig og konsistent adfærd under applikationsovergange. ActivityManager giver en plads til app-skabere til at få deres apps til at reagere, når de Android OS udfører globale handlinger. Applikationer kan lytte til begivenheder såsom enhedsrotation, app-ødelæggelse på grund af hukommelsesmangel, en app, der flyttes ud af fokus, og så videre.
Nogle eksempler på, hvordan applikationer kan reagere på disse overgange, omfatter at sætte aktivitet på pause i et spil, stoppe musikafspilning under et telefonopkald.
2) Window Manager
Android kan bestemme skærmoplysninger for at bestemme de krav, der er nødvendige for at oprette vinduer til applikationer. Windows er de slots, hvor vi kan se vores app-brugergrænseflade. Android bruger Window Manager til at give disse oplysninger til apps og systemet, mens de kører, så de kan tilpasse sig den tilstand, enheden kører på.
Window Manager hjælper med at levere en tilpasset app-oplevelse. Apps kan fylde hele skærmen for en fordybende oplevelse eller dele skærmen med andre apps. Android aktiverer dette ved at tillade multi-vinduer for hver app.
3) Lokationsadministrator
bro Android enheder er udstyret med GPS-enheder, der kan få brugerens placering ved hjælp af satellitoplysninger, som kan gå hele vejen til meterpræcision. Programmører kan bede om placeringstilladelse fra brugerne, levere placering og bevidste oplevelser.
Android er også i stand til at bruge trådløse teknologier til yderligere at berige lokationsdetaljer og øge dækningen, når enheder er lukkede rum. Android leverer disse funktioner under Location-Managerens paraply.
4) Telefonichef
bro Android enheder tjener en primær rolle i telefoni. Android bruger TelephoneManager til at kombinere hardware- og softwarekomponenter for at levere telefonifunktioner. Hardwarekomponenterne omfatter eksterne dele såsom sim-kortet og enhedsdele såsom mikrofon, kamera og højttalere. Softwarekomponenterne omfatter indbyggede komponenter såsom opkaldstastatur, telefonbog, ringetoneprofiler. Ved at bruge TelephoneManager kan en udvikler udvide eller finjustere standardopkaldsfunktionaliteten.
5) Ressourcechef
Android app kommer normalt med mere end bare kode. De har også andre ressourcer såsom ikoner, lyd- og videofiler, animationer, tekstfiler og lignende. Android hjælper med at sikre, at der er effektiv, lydhør adgang til disse ressourcer. Det sikrer også, at de rigtige ressourcer leveres til slutbrugerne. For eksempel bruges de korrekte sprogtekstfiler, når felter udfyldes i apps.
6) Vis System
Android giver også et middel til nemt at skabe fælles visuelle komponenter, der er nødvendige for app-interaktion. Disse komponenter inkluderer widgets som knapper, billedholdere som ImageView, komponenter til at vise en liste over elementer som ListView og mange flere. Komponenterne er præfabrikerede, men kan også tilpasses, så de passer til appudviklers behov og branding.
7) Notifikationschef
Notifikationschefen er ansvarlig for at informere Android brugere af applikationsbegivenheder. Det gør den ved at give brugerne visuelle, lyd- eller vibrationssignaler eller en kombination af dem, når en hændelse opstår. Disse hændelser har eksterne og interne triggere. Nogle eksempler på interne udløsere er hændelser med lav batteristatus, der udløser en meddelelse om at vise lavt batteriniveau. Et andet eksempel er brugerspecificerede hændelser som en alarm. Nogle eksempler på eksterne triggere inkluderer nye beskeder eller nye wifi-netværk, der er registreret.
Android giver programmører og slutbrugere et middel til at finjustere meddelelsessystemet. Dette kan være med til at garantere, at de kan sende og modtage underretningsbegivenheder på en måde, der passer bedst til dem og deres nuværende miljøer.
8) Pakkeansvarlig
Android giver også adgang til oplysninger om installerede applikationer. Android holder styr på applikationsoplysninger såsom installations- og afinstallationshændelser, tilladelser appen anmoder om og ressourceudnyttelse såsom hukommelsesforbrug.
Disse oplysninger kan gøre det muligt for udviklere at få deres applikationer til at aktivere eller deaktivere funktionalitet afhængigt af nye funktioner præsenteret af ledsagende apps.
9) Indholdsudbyder
Android har en standardiseret måde at dele data mellem applikationer på enheden ved hjælp af indholdsudbyderen. Udviklere kan bruge indholdsudbyderen til at eksponere data for andre applikationer. For eksempel kan de gøre app-data søgbare fra eksterne søgeapplikationer. Android selv afslører data såsom kalenderdata, kontaktdata og lignende ved hjælp af det samme system.
Android Runtime og Core/Native Libraries
1) Android Runtime
Android bruger i øjeblikket Android Runtime (ART) til at udføre applikationskode. ART er forudgået af Dalvik Runtime, der kompilerede udviklerkode til Dalvik Eksekverbare filer (Dex-filer). Disse eksekveringsmiljøer er optimeret til Android-platformen under hensyntagen til processor- og hukommelsesbegrænsningerne på mobile enheder.
Runtime oversætter kode skrevet af programmører til maskinkode, der udfører beregninger og bruger Android-rammekomponenter til at levere funktionalitet. Android er vært for flere applikationer og systemkomponenter, der hver især kører i deres processer.
Kernebiblioteker
I dette segment vil vi diskutere nogle af de kernebiblioteker, der er til stede i Android operativ system.
2) MediaFramework
Android understøtter også indbygget populære mediecodecs, hvilket gør det nemt for apps oprettet på Android platform til at bruge/afspille multimediekomponenter ud af boksen.
3) SQLite
Android har også en SQLite database som gør det muligt for applikationer at have meget hurtig indbygget databasefunktionalitet uden behov for tredjepartsbiblioteker.
4) Freetype
Android leveres med en forudinstalleret hurtig og fleksibel skrifttypemotor. Dette gør det muligt for applikationsudviklere at style komponenter i deres applikation og levere en rig oplevelse, der kommunikerer udviklerens hensigt.
5) OpenGL
Android leveres også med OpenGL-grafiksystemet. Det er et C-bibliotek, der hjælper Android bruge hardwarekomponenter i realtidsgengivelse af 2D- og 3D-grafik.
6) SSL
Android leveres også med et indbygget sikkerhedslag for at muliggøre sikker kommunikation mellem applikationer på Android og andre enheder såsom servere, andre mobile enheder, routere 6.
7) SGL
Android leveres med et grafikbibliotek implementeret i kode på lavt niveau, der effektivt gengiver grafik til Android-platformen. Det fungerer med komponenter på højere niveau i Android rammer Android grafik pipeline.
8) Libc
Kernen i Android indeholder biblioteker skrevet i C og C++, som er sprog på lavt niveau beregnet til indlejret brug, der hjælper med at maksimere ydeevnen. Libc giver et middel til at eksponere systemfunktioner på lavt niveau såsom tråde, stikkontakter, IO og lignende for disse biblioteker.
9) Webkit
Dette er en open source-browsermotor, der bruges som grundlag for at bygge browsere. Standarden Android browser før version 4.4 KitKat bruger den til at gengive websider. Det gør det muligt for applikationsudviklere at gengive webkomponenter i view-systemet ved at bruge WebView. Dette gør det muligt for apps at integrere webkomponenter i deres funktionalitet.
10) Surface Manager
Overfladelederen er ansvarlig for at sikre en jævn gengivelse af påføringsskærme. Det gør den ved at komponere 2D- og 3D-grafik til gengivelse. Det muliggør dette yderligere ved at lave buffering uden for skærmen.
Linux Kernel
Rodkomponenten i Android Systemet er Linux-kernen. Det er den grundlæggende brik, der muliggør alle Android's funktionalitet.
Linux-kernen er et kamptestet stykke software, der er blevet brugt til at udvikle operativsystemer til enheder med bred vifte, fra supercomputere til små gadgets. Det har begrænsede behandlingsevner som små netværksgadgets til Internet of Things (IoT).
Linux-kernen kan tilpasses til at opfylde enhedsspecifikationerne for at gøre det muligt for producenterne at lave Android enheder med forskellige muligheder for at matche brugeroplevelsen.
Med hensyn til Android, er kernen ansvarlig for mange grundlæggende funktioner, herunder men ikke begrænset til disse:
- Enhedsdrivere
- Memory Management
- Process Management
Lad os udvide på nogle af funktionerne:
Enhedsdrivere
Linux-kernen rummer de nødvendige drivere for at gøre det muligt for operativsystemet at arbejde med forskellige hardwarekomponenter. Disse drivere giver en standardgrænseflade, som hardwarekomponenter fra forskellige producenter kan arbejde med.
Dette gør det muligt for enhedsproducenter at skaffe forskellige komponenter, såsom Bluetooth-komponenter, Wifi-komponenter, kamerakomponenter. Så længe producenterne matcher Android standardspecifikationer, integration er problemfri.
1) USB-driver
Linux giver også Android med et middel til at forbinde med USB-enheder. Moderne enheder kommer med forskellige USB-porte, inklusive USB 2.0 og nye versioner af USB, inklusive USB-C. Disse drivere gør det muligt at bruge USB-porten til at oplade, overføre live data såsom logfiler fra Android enheder og interagere med Android filsystem.
2) Bluetooth-driver
Linux Kernel giver understøttelse af grænseflader med Bluetooth-hardwarekomponenter. Det giver en måde at læse og skrive data modtaget fra understøttede bluetooth-radiofrekvenser. Det giver også et sæt faciliteter til Android for at konfigurere Bluetooth.
3) Wifi-driver
Linux-kernen leverer drivere til at integrere WiFi-netværkshardwarekomponenterne. WiFi-komponenter indlejret i mobile enheder aktiverer Android enheder til at oprette forbindelse til wifi-netværk. Driveren gør det muligt for wifi-komponenterne at udsende wifi-netværk og oprette hotspots.
4) Skærmdriver
Android gør det muligt at interface med displaykomponenter. For de fleste enheder er grænsefladekomponenten en LCD-touchskærm. Det tillader understøttelse af konfiguration og tegning af pixels.
5) Lyddriver
Android enheder kommer normalt med hardwarekomponenter til lydinput og -output. Lyddrivere i kernen aktiverer Android system til at bruge lyd modtaget fra disse komponenter og også producere lydoutput.
6) Power Manager
bro Android enheder bruges, mens de er afbrudt fra stikkontakten. De er således afhængige af batterier til at drive dem til en stor del af deres brug. Linux Kernel kommer med et strømstyringssystem, der kan konfigureres til at opfylde behovene hos de enheder, der bruger det.
Android OS bruger strømstyringen til at gøre andre komponenter på enheden strømbevidste. Det gør det ved at udsende forskellige magt-relaterede tilstande. Disse tilstande er Standby, Sleep og Lavt batteri. På Android, er strømstyringen justeret til standard til dvaletilstand for at sikre maksimal batterilevetid.
Power Manager afslører måder, hvorpå applikationer kan reagere på forskellige strømtilstande. Applikationer kan også ændre deres adfærd for at matche enhedens aktuelle strømtilstand.
En applikation kan også anmode om at ændre standardstrømpolitikkerne. Applikationer kan opnå den ønskede funktionalitet, såsom at holde hardwarekomponenterne aktive. Et eksempel er at holde skærmen aktiv, når du læser en bog for at sikre, at en bruger ikke bliver afbrudt. Et andet eksempel er at holde lydkomponenterne tændt, når du lytter til musik i baggrunden.
7) Flash-hukommelse
bro Android enheder bruger flash-hukommelse som lagringsmiddel. Flash-hukommelse er hurtig og tager mindre plads, hvilket gør den perfekt til små enheder. Linux-kernen giver et middel til Android enheder til at læse og skrive i flash-hukommelsen. Det giver et middel til at partitionere hukommelsen på en sådan måde, at OS og andre applikationer nemt og effektivt kan dele hukommelsesressourcen.
8) Bindemiddel
Android er vært for mange applikationer og systemkomponenter, der hver især kører i deres processer. I de fleste tilfælde bør disse processer isoleres fra hinanden for at forhindre interferens og datakorruption. Alligevel er der tilfælde, hvor vi ønsker at overføre data fra én proces til en anden.
Linux-kernen muliggør datadelingsfunktionalitet ved at levere binderdrivere. Binder-drivere muliggør inter-proces kommunikation, IPC. Brug af IPC-processer kan opdage andre processer og dele information.
Memory Management
Et andet ansvar for Linux-kernen er hukommelsesstyring. Når forskellige applikationer kører, sikrer kernen, at den hukommelsesplads, de bruger, ikke kommer i konflikt og overskriver hinanden.
Det hjælper også med at sikre, at alle kørende apps får tilstrækkelig hukommelse til at fungere, hvilket sikrer, at ingen enkelt app tager for meget plads.
Process Management
Hver app i Android kører i en proces. Kernen er også ansvarlig for styring af processer. Det betyder, at det er ansvarligt for at skabe, sætte på pause, stoppe, lukke eller nedbryde processer.
Kernen muliggør forskellige funktionaliteter såsom at køre flere processer på samme tid, kommunikere mellem processer, køre processer i baggrunden og så videre.
Da hver proces kræver sin egen hukommelsesplads for at fungere korrekt, sikrer kernen, at hukommelsespladser tildelt til hver proces er beskyttet mod andre processer. Det sikrer også, at ressourcer som f.eks RAM allokeret til processer frigøres, når processerne lukkes ned.
Linux-kernen er også ansvarlig for at distribuere arbejde til processorerne på enheden. Dette gør det muligt at maksimere ydeevnen af enheder med flere kerner, da forskellige apps vil have processer, der køres på en anden kerne.
Linux-kernen udfører flere opgaver under motorhjelmen, herunder håndhævelse af sikkerhed.
Resumé
- Android arkitektur er organiseret i lag.
- Hvert lag løser et unikt sæt problemer.
- Slutbrugere interagerer med apps på applikationslaget
- Applikationsudviklere udvikler apps, der skal bruges på applikationslaget. De gør det ved hjælp af værktøjer og abstraktioner leveret af Application Framework.
- Android Rammelag forenkler adgangen til komponenter på lavt niveau ved at skabe en API over native biblioteker.
- Android Runtime og Core-Libraries bruger sprog på lavt niveau sammen med optimeringer til mobile enheder. Dette sikrer, at kode skrevet af applikationsudviklere kører problemfrit på trods af Android enhedens begrænsninger.
- Ved bunden af Android softwarestak er Linux-kernen. Den har grænseflader med de hardwarekomponenter, der er almindelige i Android enheder.