Android Architecture: Application Layers, Framework, Component
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 androidutveckling är Google. Andra företag inkluderar enhetstillverkare som Samsung, LG; processortillverkare som Intel och ARM, men för att 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
Att utveckla ett operativsystem för mobila enheter kommer med en uppsättning utmaningar. Att använda denna skiktade arkitektur säkerställer 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 ett Gmail-konto. När du konfigurerar Gmail aktiveras andra e-postberoende komponenter 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: Om du sveper nedåt på skärmen visas meddelandelådan. Den tillhandahåller applikationshändelser som användaren bör vara medveten om. Ovanför meddelandet finns en uppsättning genvägar till några vanliga enhetsinställningar som användarna kan växla. Dessa inställningar inkluderar på och av växlar för olika hårdvarukomponenter som Bluetooth och Wifi. Långt tryck på dessa händelser gör det möjligt för oss att navigera till deras konfigurationssida.
Detta lager kallas också för användarnivå i motsats till lagren nedan som mestadels är inställda för applikationsutveckling. Applikationsutvecklare skapar och anpassar upplevelserna för sina appar på det här lagret. Lagren under applikationslagret är inte anpassade av applikationsutvecklare. De anses vara en del av systemskiktet. Dessa lager är anpassade av enhetstillverkare, Googles Android-team eller tredje part 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, stoppa 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
Android appen 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 reda på applikationsinformation som installations- och avinstallationshändelser, behörigheter som appen begär och resursanvändning 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 som servrar, andra mobila enheter, routrar 6.
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.
Linux-kärnan är en stridstestad mjukvara som har använts vid utveckling 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 standardströmreglerna. Applikationer kan uppnå önskad funktionalitet, som att hålla hårdvarukomponenterna aktiva. Ett exempel är att hålla skärmen aktiv när du läser en bok för att säkerställa att en användare inte blir avbruten. Ett annat exempel är att hålla ljudkomponenterna påslagna när du 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 går i en process. Kärnan ansvarar också för att hantera processer. Det betyder att det är ansvarigt för att skapa, pausa, stoppa, stänga av eller döda 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.
Sammanfattning
- Android arkitektur är organiserad i lager.
- Varje lager löser en unik uppsättning problem.
- Slutanvändare interagerar med appar på applikationslagret
- Applikationsutvecklare utvecklar appar som ska användas på applikationslagret. De gör det med hjälp av verktyg och abstraktioner som tillhandahålls av Application Framework.
- Android Ramlager förenklar åtkomsten till komponenter på låg nivå genom att skapa ett API över inbyggda bibliotek.
- Android Runtime och Core-Libraries använder lågnivåspråk tillsammans med optimeringar för mobila enheter. Detta säkerställer att kod skriven av applikationsutvecklare körs smidigt trots Android enhetsbegränsningar.
- Vid botten av Android mjukvarustacken är Linuxkärnan. Det gränssnitt med hårdvarukomponenterna som är vanliga i Android enheter.