Android ArchiStruktur: Lager, Ramverk, Komponent
โก Smart sammanfattning
Android ArchiTecture รคr en lagerbaserad programvaruuppsรคttning som separerar problem รถver fyra huvudnivรฅer: applikationslagret, applikationsramverket och Android Runtime med kรคrnbibliotek och Linuxkรคrnan. Varje lager lรถser olika problem och kan uppdateras oberoende av varandra.

Android operativsystemets fรถrsta release var รฅr 2008. Redan vid starten byggde teamet bakom operativsystemet det ovanpรฅ jรคttarnas axlar. Utรถver anvรคndargrรคnssnittet som Android OS presenteras pรฅ ytnivรฅ, det bestรฅr av flera lager. Dessa lager inkluderar anpassad kod och teknik med รถppen kรคllkod som har varit under kontinuerlig utveckling i decennier.
Android har utvecklats genom massiva samarbeten och investeringar av mรฅnga fรถretag. Huvudfรถretaget bakom Android-utveckling รคr GoogleAndra fรถretag inkluderar enhetstillverkare som Samsung, LG; processortillverkare som Intel och ARM, fรถr att bara nรคmna nรฅgra.
Nรคr vi pratar om Android arkitektur, menar vi hur Android Systemet har designats, segmenterats i lager och byggts upp fรถr att fungera som ett system. Att bygga ett sรฅ komplext system krรคver noggrann strukturering fรถr att sรคkerstรคlla att alla komponenter fungerar sammanhรคngande. Dess arkitektur sรคkerstรคller att de mรฅnga komponenterna fungerar som en helhet utan att krascha.
skikt
Fรถljande รคr de lager som utgรถr Android arkitektur som mรคrkt pรฅ diagrammet:
- Ansรถkan
- Application Framework
- Android Runtime och Core Libraries
- Linux Kernel
Utvecklaping Ett operativsystem fรถr mobila enheter kommer med en rad utmaningar. Genom att anvรคnda denna skiktade arkitektur sรคkerstรคller man att olika problem bryts ner och lรถses pรฅ olika nivรฅer.
En skiktad arkitektur hjรคlper till att separera problem och sรคkerstรคlla att utvecklare av Android-programvara inte behรถver hantera problem pรฅ lรฅg nivรฅ vid varje tur. De kan istรคllet fokusera pรฅ att leverera affรคrsvรคrde som handlar om lagret de arbetar pรฅ.
Utvecklare arbetar med att fรฅ appar att inte behรถva oroa sig fรถr implementeringen av applikationsramverket. Det arbetet lรคmnas รฅt systemutvecklarna som arbetar med applikationsramverket.
Application Framework-utvecklarna arbetar med utvecklarupplevelse och behรถver inte oroa sig fรถr lรฅgnivรฅdrivrutinerna. Systemingenjรถrer pรฅ lรฅg nivรฅ kan fokusera helt pรฅ lรฅgnivรฅkomponenter som Bluetooth eller Audio-drivrutiner och liknande.
Androids lagerstruktur gรถr det mรถjligt att tillรคmpa uppdateringar med buggfixar eller fรถrbรคttringar fรถr varje lager fรถr sig. Detta sรคkerstรคller att รคndringar mellan lager inte stรถr varandra. Detta gรถr det mรถjligt fรถr personer som arbetar pรฅ en annan nivรฅ av operativsystemet att arbeta med att hindra varandra nรคr nya uppdateringar och utgรฅvor gรถrs.
Android Ansรถkan

Detta รคr lagret som slutanvรคndare interagerar med. Det รคr pรฅ det hรคr lagret dรคr applikationsutvecklare publicerar sina applikationer fรถr att kรถra.
Android, som standard, kommer med en uppsรคttning applikationer som gรถr Android-enheter anvรคndbara frรฅn offset.
- Home: Hemsidan pรฅ Android bestรฅr av startikoner fรถr vanliga applikationer som slutanvรคndaren kanske vill ha snabb รฅtkomst till. Du kan starta apparna genom att klicka pรฅ startarna fรถr dessa appar. Lรคngst upp pรฅ skรคrmen har du widgets som visar nรคtverk, batterinivรฅ, datum och tid.
- Kontaktpersoner: Android, ger som standard ett sรคtt att lagra och hรคmta kontakter. Kontaktinformation delas mellan andra appar fรถr att fรถrbรคttra funktionaliteten.
- meddelanden: Android ger mรถjlighet att skicka och ta emot SMS-meddelanden.
- E-post: Android kommer med inbyggt stรถd fรถr e-posttjรคnster. Att sรคtta upp en Android enheten krรคver en Gmail konto. Konfigurera Gmail aktiverar andra e-postberoende komponenter pรฅ Android enheter. Vissa e-postberoende funktioner inkluderar sรคkerhets- och รฅterstรคllningsmekanismer. En annan e-postberoende funktion รคr tillgรฅng till Play Store, en marknadsplats fรถr Android tillรคmpningar.
- Webblรคsare: Android levereras med en standardwebblรคsare.
- Meddelandelรฅda: SWIping Lรคngre ner pรฅ skรคrmen visas aviseringslรฅdan. Den visar programhรคndelser som anvรคndaren bรถr vara medveten om. Ovanfรถr aviseringen finns en uppsรคttning genvรคgar till nรฅgra vanliga enhetsinstรคllningar som anvรคndarna kan vรคxla mellan. Dessa instรคllningar inkluderar pรฅ- och avaktiveringsknappar fรถr olika hรฅrdvarukomponenter som Bluetooth och Wifi. Om du trycker lรคnge pรฅ dessa hรคndelser navigerar vi till deras konfigurationssida.
Detta lager kallas รคven anvรคndarnivรฅ i motsats till lagren nedan som oftast รคr anpassade fรถr applikationsutveckling. Applikationsutvecklare skapar och anpassar upplevelserna fรถr sina appar pรฅ detta lager. Lagren under applikationslagret anpassas inte av applikationsutvecklare. De anses vara en del av systemlagret. Dessa lager anpassas av enhetstillverkare, Google Android-team eller tredje parter som vill anvรคnda Android kรคllkod fรถr sin produkt eller forskning.
Application Framework
Ocuco-landskapet Android OS exponerar de underliggande biblioteken och funktionerna i Android enhet som anvรคnder en Java API. Detta รคr vad som รคr kรคnt som Android ramverk. Ramverket exponerar ett sรคkert och enhetligt sรคtt att anvรคnda Android enhetsresurser.

1) Aktivitetsledare
Applikationer anvรคnder Android aktivitetskomponent fรถr att presentera en startpunkt fรถr appen. Android Aktiviteter รคr de komponenter som rymmer anvรคndargrรคnssnittet som appanvรคndare interagerar med. Nรคr slutanvรคndare interagerar med Android enheten startar, stoppar och hoppar de fram och tillbaka รถver mรฅnga applikationer. Varje navigationshรคndelse utlรถser aktivering och avaktivering av mรฅnga aktiviteter i respektive applikation.
Ocuco-landskapet Android ActivityManager ansvarar fรถr fรถrutsรคgbart och konsekvent beteende under applikationsรถvergรฅngar. ActivityManager tillhandahรฅller en plats fรถr appskapare att fรฅ sina appar att reagera nรคr Android OS utfรถr globala รฅtgรคrder. Appar kan lyssna pรฅ hรคndelser som enhetsrotation, appfรถrstรถrelse pรฅ grund av minnesbrist, en app som fรถrskjuts ur fokus och sรฅ vidare.
Nรฅgra exempel pรฅ hur applikationer kan reagera pรฅ dessa รถvergรฅngar inkluderar att pausa aktivitet i ett spel, stoppaping musik som spelas under ett telefonsamtal.
2) Fรถnsterhanterare
Android kan bestรคmma skรคrminformation fรถr att faststรคlla kraven som krรคvs fรถr att skapa fรถnster fรถr applikationer. Windows รคr de platser dรคr vi kan se vรฅrt appanvรคndargrรคnssnitt. Android anvรคnder fรถnsterhanteraren fรถr att tillhandahรฅlla denna information till apparna och systemet nรคr de kรถrs sรฅ att de kan anpassa sig till det lรคge enheten kรถrs pรฅ.
Fรถnsterhanteraren hjรคlper till att leverera en anpassad appupplevelse. Appar kan fylla hela skรคrmen fรถr en uppslukande upplevelse eller dela skรคrmen med andra appar. Android mรถjliggรถr detta genom att tillรฅta flera fรถnster fรถr varje app.
3) Platschef
bro Android enheter รคr utrustade med GPS-enheter som kan fรฅ anvรคndarens plats med hjรคlp av satellitinformation som kan gรฅ hela vรคgen till meterprecision. Programmerare kan be om platstillstรฅnd frรฅn anvรคndarna, leverera plats och medvetna upplevelser.
Android kan ocksรฅ anvรคnda trรฅdlรถs teknik fรถr att ytterligare berika platsdetaljer och รถka tรคckningen nรคr enheter รคr slutna utrymmen. Android tillhandahรฅller dessa funktioner under platshanterarens paraply.
4) Telefonichef
bro Android enheter har en primรคr roll inom telefoni. Android anvรคnder TelephoneManager fรถr att kombinera hรฅrdvaru- och mjukvarukomponenter fรถr att leverera telefonifunktioner. Hรฅrdvarukomponenterna inkluderar externa delar som simkortet och enhetsdelar som mikrofon, kamera och hรถgtalare. Programvarukomponenterna inkluderar inbyggda komponenter som knappsats, telefonbok, ringsignalprofiler. Med hjรคlp av TelephoneManager kan en utvecklare utรถka eller finjustera standardfunktionaliteten fรถr samtal.
5) Resurschef
En Android-app kommer vanligtvis med mer รคn bara kod. De har ocksรฅ andra resurser som ikoner, ljud- och videofiler, animationer, textfiler och liknande. Android hjรคlper till att se till att det finns effektiv och lyhรถrd tillgรฅng till dessa resurser. Det sรคkerstรคller ocksรฅ att rรคtt resurser levereras till slutanvรคndarna. Till exempel anvรคnds textfiler pรฅ rรคtt sprรฅk nรคr fรคlt i apparna fylls i.
6) Visa System
Android ger ocksรฅ ett sรคtt att enkelt skapa vanliga visuella komponenter som behรถvs fรถr appinteraktion. Dessa komponenter inkluderar widgets som knappar, bildhรฅllare som ImageView, komponenter fรถr att visa en lista med objekt som ListView och mรฅnga fler. Komponenterna รคr fรถrgjorda men รคr ocksรฅ anpassningsbara fรถr att passa apputvecklares behov och varumรคrke.
7) Aviseringshanterare
Anmรคlanansvarig ansvarar fรถr att informera Android anvรคndare av applikationshรคndelser. Den gรถr detta genom att ge anvรคndarna visuella, ljud- eller vibrationssignaler eller en kombination av dem nรคr en hรคndelse intrรคffar. Dessa hรคndelser har externa och interna triggers. Nรฅgra exempel pรฅ interna utlรถsare รคr statushรคndelser med lรฅg batterinivรฅ som utlรถser ett meddelande om att visa lรฅg batterinivรฅ. Ett annat exempel รคr anvรคndarspecificerade hรคndelser som ett larm. Nรฅgra exempel pรฅ externa triggers inkluderar nya meddelanden eller nya wifi-nรคtverk som upptรคckts.
Android tillhandahรฅller ett sรคtt fรถr programmerare och slutanvรคndare att finjustera meddelandesystemet. Detta kan hjรคlpa till att garantera att de kan skicka och ta emot aviseringshรคndelser pรฅ ett sรคtt som bรคst passar dem och deras nuvarande miljรถer.
8) Pakethanterare
Android ger ocksรฅ tillgรฅng till information om installerade applikationer. Android hรฅller track av programinformation sรฅsom installations- och avinstallationshรคndelser, behรถrigheter som appen begรคr och resursanvรคndning sรฅsom minnesfรถrbrukning.
Denna information kan gรถra det mรถjligt fรถr utvecklare att aktivera eller inaktivera funktioner i sina applikationer beroende pรฅ nya funktioner som presenteras av kompletterande appar.
9) Innehรฅllsleverantรถr
Android har ett standardiserat sรคtt att dela data mellan applikationer pรฅ enheten med hjรคlp av innehรฅllsleverantรถren. Utvecklare kan anvรคnda innehรฅllsleverantรถren fรถr att exponera data fรถr andra applikationer. Till exempel kan de gรถra appdata sรถkbar frรฅn externa sรถkapplikationer. Android sjรคlv exponerar data sรฅsom kalenderdata, kontaktdata och liknande med samma system.
Android Runtime och Core/Native Libraries

1) Android Runtime
Android anvรคnder fรถr nรคrvarande Android Runtime (ART) fรถr att exekvera programkod. ART fรถregรฅs av Dalvik Runtime som kompilerade utvecklarkod till Dalvik Executable-filer (Dex-filer). Dessa exekveringsmiljรถer รคr optimerade fรถr Android-plattformen med hรคnsyn till processor- och minnesbegrรคnsningarna pรฅ mobila enheter.
Runtimen รถversรคtter kod skriven av programmerare till maskinkod som gรถr berรคkningar och anvรคnder Android-ramverkskomponenter fรถr att leverera funktionalitet. Android รคr vรคrd fรถr flera applikationer och systemkomponenter som var och en kรถrs i sina processer.
Kรคrnbibliotek
I det hรคr segmentet kommer vi att diskutera nรฅgra av kรคrnbiblioteken som finns i Android operativ system.
2) MediaFramework
Android Stรถder ocksรฅ inbyggt populรคra mediacodecs, vilket gรถr det enkelt fรถr appar som skapats pรฅ Android plattform fรถr att anvรคnda/spela multimediakomponenter ur fรถrpackningen.
3) SQLite
Android har ocksรฅ en SQLite databas som gรถr det mรถjligt fรถr applikationer att ha mycket snabb inbyggd databasfunktionalitet utan behov av tredjepartsbibliotek.
4) Freetype
Android levereras med en fรถrinstallerad snabb och flexibel teckensnittsmotor. Detta gรถr det mรถjligt fรถr applikationsutvecklare att utforma komponenter i sin applikation och leverera en rik upplevelse som kommunicerar utvecklarens avsikt.
5) OpenGL
Android kommer ocksรฅ med OpenGL-grafiksystemet. Det รคr ett C-bibliotek som hjรคlper Android anvรคnda hรฅrdvarukomponenter i realtidsrendering av 2D- och 3D-grafik.
6) SSL
Android kommer ocksรฅ med ett inbyggt sรคkerhetslager fรถr att mรถjliggรถra sรคker kommunikation mellan applikationer pรฅ Android och andra enheter sรฅsom servrar, andra mobila enheter, routrar.
7) SGL
Android levereras med ett grafikbibliotek implementerat i lรฅgnivรฅkod som effektivt renderar grafik fรถr Android-plattformen. Det fungerar med komponenterna pรฅ hรถgre nivรฅ Android ramverk Android grafik pipeline.
8) Libc
Kรคrnan i Android innehรฅller bibliotek skrivna i C och C++, som รคr lรฅgnivรฅsprรฅk avsedda fรถr inbรคddad anvรคndning som hjรคlper till att maximera prestanda. Libc tillhandahรฅller ett sรคtt att exponera systemfunktioner pรฅ lรฅg nivรฅ sรฅsom trรฅdar, uttag, IO och liknande fรถr dessa bibliotek.
9) Webbkit
Detta รคr en webblรคsarmotor med รถppen kรคllkod som anvรคnds som grund fรถr att bygga webblรคsare. Standarden Android webblรคsare fรถre version 4.4 KitKat anvรคnder den fรถr att rendera webbsidor. Det gรถr det mรถjligt fรถr applikationsutvecklare att rendera webbkomponenter i vysystemet med hjรคlp av WebView. Detta gรถr det mรถjligt fรถr appar att integrera webbkomponenter i deras funktionalitet.
10) Ythanterare
Ytfรถrvaltaren ansvarar fรถr att applikationsskรคrmarna blir smidiga. Den gรถr detta genom att komponera 2D- och 3D-grafik fรถr rendering. Det mรถjliggรถr detta ytterligare genom att gรถra buffring utanfรถr skรคrmen.
Linux Kernel
Rotkomponenten i Android Systemet รคr Linux-kรคrnan. Det รคr den grundlรคggande delen som mรถjliggรถr alla Androids funktionalitet.
Linuxkรคrnan รคr en vรคlbeprรถvad mjukvara som har anvรคnts inom utvecklingping operativsystem fรถr enheter med stort utbud, frรฅn superdatorer till smรฅ prylar. Den har begrรคnsade bearbetningsmรถjligheter som smรฅ nรคtverksanslutna prylar fรถr Internet of Things (IoT).
Linux-kรคrnan kan anpassas fรถr att mรถta enhetsspecifikationerna fรถr att gรถra det mรถjligt fรถr tillverkare att gรถra Android enheter med olika mรถjligheter fรถr att matcha anvรคndarupplevelsen.
Med avseende pรฅ Android, รคr kรคrnan ansvarig fรถr mรฅnga grundlรคggande funktioner inklusive men inte begrรคnsat till dessa:
- Enhetsdrivrutiner
- Minneshantering
- Processhantering
Lรฅt oss expandera pรฅ nรฅgra av funktionerna:
Enhetsdrivrutiner
Linux-kรคrnan innehรฅller de drivrutiner som behรถvs fรถr att operativsystemet ska kunna fungera med olika hรฅrdvarukomponenter. Dessa drivrutiner tillhandahรฅller ett standardgrรคnssnitt som hรฅrdvarukomponenter frรฅn olika tillverkare kan arbeta med.
Detta gรถr det mรถjligt fรถr enhetstillverkare att kรถpa olika komponenter, sรฅsom Bluetooth-komponenter, Wifi-komponenter, kamerakomponenter. Sรฅ lรคnge tillverkarna matchar Android standardspecifikationer, integrationen รคr sรถmlรถs.
1) USB-drivrutin
Linux ger ocksรฅ Android med ett sรคtt att kommunicera med USB-enheter. Moderna enheter kommer med olika USB-portar, inklusive USB 2.0 och nya versioner av USB, inklusive USB-C. Dessa drivrutiner gรถr det mรถjligt att anvรคnda USB-porten fรถr att ladda, รถverfรถra livedata sรฅsom loggar frรฅn Android enheter och interagera med Android filsystem.
2) Bluetooth-drivrutin
Linux Kernel ger stรถd fรถr grรคnssnitt med Bluetooth-hรฅrdvarukomponenter. Det ger ett sรคtt att lรคsa och skriva data som tas emot frรฅn Bluetooth-radiofrekvenser som stรถds. Det ger ocksรฅ en uppsรคttning faciliteter fรถr Android fรถr att konfigurera Bluetooth.
3) Wifi-drivrutin
Linuxkรคrnan tillhandahรฅller drivrutiner fรถr att integrera hรฅrdvarukomponenterna fรถr WiFi-nรคtverk. WiFi-komponenter inbรคddade i mobila enheter aktiveras Android enheter fรถr att ansluta till wifi-nรคtverk. Drivrutinen gรถr det mรถjligt fรถr wifi-komponenterna att sรคnda wifi-nรคtverk och skapa hotspots.
4) Bildskรคrmsdrivrutin
Android gรถr det mรถjligt att samverka med displaykomponenter. Fรถr de flesta enheter รคr grรคnssnittskomponenten en LCD-pekskรคrm. Det ger stรถd fรถr att konfigurera och rita pixlar.
5) Ljuddrivrutin
Android enheter kommer vanligtvis med hรฅrdvarukomponenter fรถr ljudingรฅng och ljudutgรฅng. Ljuddrivrutiner i kรคrnan aktiverar Android system fรถr att anvรคnda ljud som tas emot frรฅn dessa komponenter och รคven producera ljudutgรฅng.
6) Power Manager
bro Android enheter anvรคnds nรคr de รคr bortkopplade frรฅn eluttaget. De รคr dรคrfรถr beroende av batterier fรถr att driva dem fรถr en stor del av deras anvรคndning. Linux Kernel kommer med ett energihanteringssystem som รคr konfigurerbart fรถr att mรถta behoven hos de enheter som anvรคnder det.
Android OS anvรคnder strรถmhanteraren fรถr att gรถra andra komponenter pรฅ enheten strรถmmedvetna. Den gรถr detta genom att sรคnda olika maktrelaterade tillstรฅnd. Dessa tillstรฅnd รคr Standby, Sleep och Low-Battery. Pรฅ Android, รคr strรถmhanteraren justerad till standardlรคge till vilolรคge fรถr att sรคkerstรคlla maximal batteritid.
Power Manager avslรถjar medel fรถr applikationer att reagera pรฅ olika energilรคgen. Applikationer kan ocksรฅ รคndra sitt beteende fรถr att matcha enhetens nuvarande strรถmtillstรฅnd.
En applikation kan ocksรฅ begรคra att รคndra standardpolicyerna fรถr energifรถrbrukning. Applikationer kan uppnรฅ รถnskad funktionalitet, till exempel keepping hรฅrdvarukomponenterna รคr aktiva. Ett exempel รคr keeping skรคrmen aktiv nรคr man lรคser en bok fรถr att sรคkerstรคlla att anvรคndaren inte avbryts. Ett annat exempel รคr attping ljudkomponenterna slรฅs pรฅ nรคr man lyssnar pรฅ musik i bakgrunden.
7) Flashminne
bro Android enheter anvรคnder flashminne som lagringsmedel. Flash-minnet รคr snabbt och tar mindre utrymme vilket gรถr det perfekt fรถr smรฅ enheter. Linux-kรคrnan tillhandahรฅller ett sรคtt fรถr Android enheter fรถr att lรคsa och skriva till flashminnet. Det ger ett sรคtt att partitionera minnet pรฅ ett sรฅdant sรคtt att operativsystemet och andra applikationer enkelt och effektivt kan dela minnesresursen.
8) Pรคrm
Android รคr vรคrd fรถr mรฅnga applikationer och systemkomponenter som var och en kรถrs i sina processer. I de flesta fall bรถr dessa processer isoleras frรฅn varandra fรถr att fรถrhindra stรถrningar och datakorruption. รndรฅ finns det fall dรคr vi vill รถverfรถra data frรฅn en process till en annan.
Linux-kรคrnan mรถjliggรถr datadelningsfunktioner genom att tillhandahรฅlla binderdrivrutiner. Binder-drivrutiner mรถjliggรถr interprocesskommunikation, IPC. Att anvรคnda IPC-processer kan upptรคcka andra processer och dela information.
Minneshantering
Ett annat ansvar fรถr Linux-kรคrnan รคr minneshantering. Nรคr olika applikationer kรถrs sรคkerstรคller kรคrnan att minnesutrymmet de anvรคnder inte kommer i konflikt och skriver รถver varandra.
Det hjรคlper ocksรฅ till att se till att alla appar som kรถrs fรฅr tillrรคckligt med minne fรถr att fungera, sรฅ att ingen enskild app tar fรถr mycket plats.
Processhantering
Varje app i Android kรถrs i en process. Kรคrnan ansvarar ocksรฅ fรถr att hantera processer. Det betyder att den ansvarar fรถr att skapa, pausa, stoppaping, stรคnga av eller avstรคnga processer.
Kรคrnan mรถjliggรถr olika funktioner som att kรถra flera processer samtidigt, kommunicera mellan processer, kรถra processer i bakgrunden och sรฅ vidare.
Eftersom varje process krรคver sitt eget minnesutrymme fรถr att fungera korrekt, sรคkerstรคller kรคrnan att minnesutrymmen som tilldelats fรถr varje process skyddas frรฅn andra processer. Det sรคkerstรคller ocksรฅ att resurser som RAM tilldelade processer frigรถrs nรคr processerna stรคngs av.
Linuxkรคrnan ansvarar ocksรฅ fรถr att distribuera arbete till de processorer som finns i enheten. Detta gรถr det mรถjligt att maximera prestandan fรถr enheter med flera kรคrnor eftersom olika appar kommer att ha processer som kรถrs pรฅ en annan kรคrna.
Linux-kรคrnan gรถr fler uppgifter under huven, inklusive att upprรคtthรฅlla sรคkerhet.

