Android ArchiTektuur: rakenduskihid, raamistik, komponent

Android operatsioonisüsteemi esialgne väljalase oli aastal 2008. Juba selle alguses ehitas operatsioonisüsteemi taga olev meeskond selle hiiglaste õlgadele. Lisaks kasutajaliidesele, mida Android OS esitletakse pinnatasandil, see koosneb mitmest kihist. Need kihid hõlmavad kohandatud koodi ja avatud lähtekoodiga tehnoloogiaid, mida on aastakümneid pidevalt arendatud.

Android on välja töötatud paljude ettevõtete suurte ühiste jõupingutuste ja investeeringute kaudu. Androidi arenduse peamine ettevõte on Google. Teiste ettevõtete hulka kuuluvad seadmete tootjad nagu Samsung, LG; protsessorite tootjad nagu Intel ja ARM, kuid kui nimetada vaid mõnda.

Kui me räägime Android arhitektuur, me mõtleme, kuidas Android süsteem on kavandatud, segmenteeritud kihtideks ja üles ehitatud süsteemina töötama. Sellise keeruka süsteemi loomine nõuab hoolikat struktureerimist, et kõik komponendid töötaksid koos. Selle arhitektuur tagab, et paljud komponendid toimivad tervikuna ilma kokkujooksmiseta.

Kihid

Järgmised on kihid, mis moodustavad Android skeemil märgitud arhitektuur:

  1. taotlus
  2. Rakenduse raamistik
  3. Android Käitusaja ja põhiteegid
  4. Linux Kernel

Mobiilseadmete operatsioonisüsteemi väljatöötamisega kaasneb rida väljakutseid. Selle kihilise arhitektuuri kasutamine tagab, et erinevad probleemid jaotatakse ja lahendatakse erinevatel tasanditel.

Kihiline arhitektuur aitab mured eraldada ja tagab, et Androidi tarkvaraarendajad ei pea igal sammul tegelema madala taseme probleemidega. Selle asemel saavad nad keskenduda äriväärtuse pakkumisele, mis on seotud kihiga, mille kallal nad töötavad.

Arendajad töötavad selle nimel, et rakendused ei peaks muretsema rakendusraamistiku rakendamise pärast. See töö jääb rakendusraamistiku kallal töötavatele süsteemiarendajatele.

Application Frameworki arendajad töötavad arendajakogemuse kallal ega pea muretsema madala taseme draiverite pärast. Madala tasemega süsteemiinsenerid saavad täielikult keskenduda madala tasemega komponentidele, nagu Bluetooth või helidraiverid jms.

Androidkihiline struktuur võimaldab igale kihile eraldi rakendada värskendusi koos veaparanduste või täiustustega. See tagab, et kihtidevahelised muudatused ei sega üksteist. See võimaldab erinevatel OS-i tasemel töötavatel inimestel töötada uute värskenduste ja väljalasete tegemisel üksteist takistades.

Android taotlus

Android taotlus
Android taotlus

See on kiht, millega lõppkasutajad suhtlevad. Sellel kihil avaldavad rakenduste arendajad oma rakendused käitamiseks.

Android, vaikimisi on kaasas rakenduste komplekt, mis muudavad Android-seadmed nihkest kasutatavaks.

  1. Kodu: Koduleht sisse lülitatud Android koosneb sageli kasutatavate rakenduste käivitusikoonidest, millele lõppkasutaja võib soovida kiiret juurdepääsu. Rakenduste käivitamiseks klõpsake nende rakenduste käivitajatel. Ekraani ülaosas on vidinad, mis näitavad võrku, aku taset, kuupäeva ja kellaaega.
  2. Kontaktid: Android, pakub vaikimisi vahendit kontaktide salvestamiseks ja toomiseks. Funktsionaalsuse täiustamiseks jagatakse kontaktteavet teiste rakenduste vahel.
  3. sõnumid: Android pakub SMS-sõnumite saatmise ja vastuvõtmise võimalust.
  4. E-mail: Android kaasas e-posti teenuste loomulik tugi. Seadistamine an Android seade nõuab Gmaili kontot. Gmaili seadistamine aktiveerib teised meilipõhised komponendid Android seadmeid. Mõned meilist sõltuvad funktsioonid hõlmavad turva- ja taastemehhanisme. Veel üks meilist sõltuv funktsioon on juurdepääs Play poele, mille turuplatsile Android rakendusi.
  5. Browser: Android kaasas vaikebrauser.
  6. Teatisahtel: Ekraanil alla libistades ilmub märguannete sahtel. See pakub rakenduse sündmusi, millest kasutaja peaks teadlik olema. Teatise kohal on mõnede sagedamini kasutatavate seadmeseadete otseteed, mida kasutajad saavad sisse lülitada. Need sätted hõlmavad erinevate riistvarakomponentide (nt Bluetooth ja Wifi) sisse- ja väljalülitusi. Nende sündmuste pikaajaline vajutamine võimaldab meil liikuda nende seadistuste lehele.

Seda kihti nimetatakse ka kasutajatasemeks, erinevalt allolevatest kihtidest, mis on enamasti häälestatud rakenduste arendamiseks. Rakenduste arendajad loovad ja kohandavad sellel kihil oma rakenduste kasutuskogemusi. Rakenduse kihi all olevad kihid pole rakenduste arendajate poolt kohandatud. Neid peetakse süsteemikihi osaks. Neid kihte kohandavad seadmetootjad, Google'i Androidi meeskonnad või kolmandad osapooled, kes soovivad seda kasutada Android oma toote või uurimistöö lähtekoodi.

Rakenduse raamistik

. Android OS paljastab selle aluseks olevad teegid ja funktsioonid Android seade, mis kasutab a Java API. Seda tuntakse kui Android raamistik. Raamistik pakub ohutuid ja ühtseid vahendeid Android seadme ressursse.

Rakenduse raamistik
Rakendusraamistik

1) Tegevusjuht

Rakendused kasutavad Android tegevuskomponent rakendusele sisenemispunkti esitamiseks. Android Tegevused on komponendid, mis sisaldavad kasutajaliidest, millega rakenduse kasutajad suhtlevad. Kuna lõppkasutajad suhtlevad Android seade käivitab, peatub ja hüppab paljudes rakendustes edasi-tagasi. Iga navigeerimissündmus käivitab vastavates rakendustes paljude tegevuste aktiveerimise ja deaktiveerimise.

. Android ActivityManager vastutab prognoositava ja järjepideva käitumise eest rakenduste ülemineku ajal. ActivityManager pakub rakenduste loojatele pesa, kus nende rakendused reageerivad, kui Android OS teostab globaalseid toiminguid. Rakendused saavad kuulata selliseid sündmusi nagu seadme pööramine, mälupuuduse tõttu hävinud rakendus, rakenduse fookusest välja nihutamine jne.

Mõned näited selle kohta, kuidas rakendused võivad nendele üleminekutele reageerida, hõlmavad tegevuse peatamist mängus, muusika esitamise peatamist telefonikõne ajal.

2) Aknahaldur

Android saab määrata ekraaniteavet, et määrata kindlaks rakenduste jaoks akende loomiseks vajalikud nõuded. Windows on pesad, kus saame vaadata oma rakenduse kasutajaliidest. Android kasutab aknahaldurit selle teabe edastamiseks rakendustele ja süsteemile nende töötamise ajal, et nad saaksid kohaneda režiimiga, milles seade töötab.

Aknahaldur aitab pakkuda kohandatud rakenduse kogemust. Rakendused võivad kaasahaarava kogemuse saamiseks täita kogu ekraani või jagada ekraani teiste rakendustega. Android võimaldab seda, lubades iga rakenduse jaoks mitu akent.

3) Asukohahaldur

sild Android seadmed on varustatud GPS-seadmetega, mis saavad kasutaja asukoha kindlaks teha satelliidi teabe abil, mis võib ulatuda kuni meetri täpsuseni. Programmeerijad saavad küsida kasutajatelt asukoha luba, edastada asukohta ja teadlikke kogemusi.

Android suudab kasutada ka traadita tehnoloogiaid, et veelgi rikastada asukoha üksikasju ja suurendada leviala, kui seadmed on suletud ruumis. Android pakub neid funktsioone Location-Manager'i katuse all.

4) Telefonijuht

sild Android seadmed täidavad telefonis peamist rolli. Android kasutab TelephoneManagerit riist- ja tarkvarakomponentide ühendamiseks telefonifunktsioonide pakkumiseks. Riistvarakomponendid hõlmavad väliseid osi, nagu SIM-kaart, ja seadme osi, nagu mikrofon, kaamera ja kõlarid. Tarkvarakomponendid hõlmavad algkomponente, nagu valimisklahvistik, telefoniraamat, helinaprofiilid. Telefonihaldurit kasutades saab arendaja vaikimisi helistamisfunktsioone laiendada või täpsustada.

5) Ressursijuht

Android rakendusel on tavaliselt rohkem kui lihtsalt kood. Neil on ka muid ressursse, nagu ikoonid, heli- ja videofailid, animatsioonid, tekstifailid jms. Android aitab tagada tõhusa ja tundliku juurdepääsu nendele ressurssidele. Samuti tagab see õigete ressursside edastamise lõppkasutajatele. Näiteks kasutatakse rakendustes väljade täitmisel õiges keeles tekstifaile.

6) Vaata süsteemi

Android pakub ka vahendit rakendusega suhtlemiseks vajalike ühiste visuaalsete komponentide hõlpsaks loomiseks. Nende komponentide hulka kuuluvad vidinad, nagu nupud, pildihoidjad (nt ImageView), üksuste loendi kuvamise komponendid (nt loendivaade) ja palju muud. Komponendid on valmis, kuid neid saab ka kohandada vastavalt rakenduse arendaja vajadustele ja kaubamärgile.

7) Teavituste haldur

Teavitamise eest vastutab teavitushaldur Android rakenduste sündmuste kasutajad. See teeb seda, andes kasutajatele sündmuse toimumisel visuaalseid, heli- või vibratsioonisignaale või nende kombinatsioone. Nendel sündmustel on välised ja sisemised käivitajad. Mõned näited sisemistest käivitajatest on tühja aku oleku sündmused, mis käivitavad teatise aku tühjenemise kohta. Teine näide on kasutaja määratud sündmused, näiteks häire. Mõned näited välistest käivitajatest hõlmavad uusi sõnumeid või tuvastatud uusi WiFi-võrke.

Android annab programmeerijatele ja lõppkasutajatele võimaluse teavitussüsteemi viimistleda. See võib aidata tagada, et nad saavad teavitussündmusi saata ja vastu võtta viisil, mis neile ja nende praegusele keskkonnale kõige paremini sobib.

8) Paketihaldur

Android pakub ka juurdepääsu installitud rakenduste teabele. Android jälgib rakendusteavet, nagu installi- ja desinstallimissündmused, rakenduse taotletud load ja ressursside kasutamine (nt mälutarbimine).

See teave võib võimaldada arendajatel panna oma rakendused funktsioonid aktiveerima või desaktiveerima sõltuvalt kaasrakenduste pakutavatest uutest funktsioonidest.

9) Sisupakkuja

Android on standardiseeritud viis andmete jagamiseks seadme rakenduste vahel, kasutades sisupakkujat. Arendajad saavad kasutada sisupakkujat andmete avaldamiseks teistele rakendustele. Näiteks saavad nad muuta rakenduse andmed otsitavaks välistest otsingurakendustest. Android ise paljastab andmeid, nagu kalendriandmed, kontaktandmed jms, kasutades sama süsteemi.

Android Käitusaeg ja põhi-/põhiteegid

Android Käitusaeg ja põhi-/põhiteegid
Raamatukogud

1) Android Runtime

Android praegu kasutab Android Runtime (ART) rakenduse koodi käivitamiseks. ART-ile eelneb Dalvik Runtime, mis kompileeris arendajakoodi Dalvik Executable-failidesse (Dex-failidesse). Need täitmiskeskkonnad on optimeeritud Androidi platvormi jaoks, võttes arvesse mobiilseadmete protsessori- ja mälupiiranguid.

Käitusaeg teisendab programmeerijate kirjutatud koodi masinkoodiks, mis teeb arvutusi ja kasutab funktsioonide pakkumiseks Androidi raamistiku komponente. Android majutab mitut rakendust ja süsteemikomponenti, millest igaüks töötab oma protsessides.

Põhiraamatukogud

Selles segmendis käsitleme mõningaid põhiteeke, mis on olemas Android operatsioonisüsteem.

2) MediaFramework

Android toetab ka populaarseid meediumikoodekeid, muutes sellel loodud rakenduste jaoks lihtsaks Android platvorm multimeediumikomponentide kasutamiseks/esitamiseks karbist välja.

3) SQLite

Android on ka SQLite andmebaas mis võimaldab rakendustel kasutada väga kiiret natiivse andmebaasi funktsionaalsust, ilma et oleks vaja kolmandate osapoolte teeke.

4) Freetype

Android kaasas on eelinstallitud kiire ja paindlik fondimootor. See võimaldab rakenduste arendajatel kujundada oma rakenduse komponente ja pakkuda rikkalikku kogemust, mis edastab arendaja kavatsused.

5) OpenGL

Android kaasas ka OpenGL graafikasüsteem. See on C-teek, mis aitab Android kasutada riistvarakomponente 2D- ja 3D-graafika reaalajas renderdamisel.

6) SSL

Android kaasas on ka sisseehitatud turvakiht, mis võimaldab turvalist suhtlust sisse lülitatud rakenduste vahel Android ja muud seadmed, nagu serverid, muud mobiilseadmed, ruuterid 6.

7) SGL

Android Kaasas graafikateek, mis on rakendatud madala taseme koodis, mis renderdab tõhusalt graafikat Androidi platvormi jaoks. See töötab koos kõrgema taseme komponentidega Android raamistik Android graafika torujuhe.

8) Libc

Tuum Android sisaldab C- ja keeles kirjutatud teeke C++, mis on manustatud kasutamiseks mõeldud madala taseme keeled, mis aitavad jõudlust maksimeerida. Libc pakub vahendit madala tasemega süsteemifunktsioonide (nt lõimed, pistikupesad, IO jms) kuvamiseks nendele teekidele.

9) Veebikomplekt

See on avatud lähtekoodiga brauseri mootor, mida kasutatakse brauserite loomisel. Vaikimisi Android brauser enne versiooni 4.4 KitKat kasutab seda veebilehtede renderdamiseks. See võimaldab rakenduste arendajatel renderdada veebikomponente vaatesüsteemis WebView abil. See võimaldab rakendustel integreerida veebikomponente oma funktsioonidesse.

10) Pinnahaldur

Pinnahaldur vastutab rakendusekraanide sujuva renderdamise eest. See teeb seda, koostades renderdamiseks 2D- ja 3D-graafikat. See võimaldab seda veelgi, tehes ekraanivälise puhverdamise.

Linux Kernel

Selle juurkomponent Android Süsteem on Linuxi kernel. See on põhiosa, mis võimaldab kõike Androidfunktsioonid.

Linux Kernel

Linuxi kernel on lahingutestitud tarkvara, mida on arenduses kasutatud operatsioonisüsteemid laia valiku seadmete jaoks, alates superarvutitest kuni väikeste vidinateni. Sellel on piiratud töötlemisvõimalused, näiteks väikesed võrku ühendatud vidinad asjade Interneti (IoT) jaoks.

Linuxi tuuma saab kohandada nii, et see vastaks seadme spetsifikatsioonidele, et tootjad saaksid seda teha Android erinevate võimalustega seadmed, mis sobivad kasutajakogemusega.

Seoses Android, vastutab Kernel paljude põhifunktsioonide eest, sealhulgas, kuid mitte ainult:

  1. Seadme draiverid
  2. Mäluhaldus
  3. Protsessi juhtimine

Laiendame mõnda funktsiooni:

Seadme draiverid

Linuxi kernel sisaldab draivereid, mis on vajalikud, et võimaldada operatsioonisüsteemil töötada erinevate riistvarakomponentidega. Need draiverid pakuvad standardset liidest, millega saavad töötada erinevatelt tootjatelt hangitud riistvarakomponendid.

See võimaldab seadmete tootjatel hankida erinevaid komponente, näiteks Bluetoothi ​​komponente, Wifi komponente, kaamerakomponente. Niikaua kui tootjad vastavad Android standardsed spetsifikatsioonid, integreerimine on sujuv.

1) USB-draiver

Linux pakub ka Android vahenditega USB-seadmetega liidestamiseks. Kaasaegsetel seadmetel on erinevad USB-pordid, sealhulgas USB 2.0 ja uued USB-versioonid, sealhulgas USB-C. Need draiverid võimaldavad kasutada USB-porti laadimiseks ja reaalajas andmete (nt logid) edastamiseks Android seadmeid ja suhelda Androidiga failisüsteemi.

2) Bluetoothi ​​draiver

Linuxi kernel toetab Bluetoothi ​​riistvarakomponentidega ühendamist. See võimaldab lugeda ja kirjutada toetatud Bluetoothi ​​raadiosagedustelt saadud andmeid. See pakub ka seadmete komplekti Android Bluetoothi ​​konfigureerimiseks.

3) Wifi draiver

Linuxi kernel pakub draivereid WiFi-võrgu riistvarakomponentide integreerimiseks. Mobiilseadmetesse sisseehitatud WiFi-komponendid võimaldavad Android seadmed wifi-võrkudega ühenduse loomiseks. Draiver võimaldab WiFi-komponentidel levitada wifi-võrke ja luua levialasid.

4) Kuvari draiver

Android võimaldab liidestuda kuvari komponentidega. Enamiku seadmete jaoks on liidese komponent LCD-puuteekraan. See võimaldab pikslite konfigureerimist ja joonistamist.

5) helidraiver

Android seadmetel on tavaliselt helisisendi ja -väljundi riistvarakomponendid. Kerneli helidraiverid võimaldavad Android süsteem, et kasutada nendest komponentidest saadud heli ja toota ka heliväljundit.

6) Power Manager

sild Android seadmeid kasutatakse pistikupesast lahti ühendatuna. Seega sõltuvad nad suure osa kasutamisest akudest. Linuxi kernel on varustatud toitehaldussüsteemiga, mida saab konfigureerida nii, et see vastaks seda kasutavate seadmete vajadustele.

Android OS kasutab toitehaldurit, et muuta seadme muud komponendid toitetundlikuks. See teeb seda erinevate võimsusega seotud olekute edastamisega. Need olekud on ooterežiim, unerežiim ja aku tühi. Sees Android, on toitehaldur seadistatud vaikimisi puhkerežiimile, et tagada aku maksimaalne tööiga.

Power Manager pakub rakendustele vahendeid erinevatele toiterežiimidele reageerimiseks. Samuti saavad rakendused muuta oma käitumist, et see vastaks seadme praegusele toiteolekule.

Rakendus võib taotleda ka vaiketoitepoliitikate muutmist. Rakendused võivad saavutada soovitud funktsioonid, näiteks hoida riistvarakomponendid aktiivsena. Näide on ekraani aktiivsena hoidmine raamatu lugemisel, et kasutajat ei segataks. Teine näide on helikomponentide sisselülitamine muusika kuulamise ajal taustal.

7) Välkmälu

sild Android seadmed kasutavad salvestusvahendina välkmälu. Välkmälu on kiire ja võtab vähem ruumi, mistõttu on see ideaalne väikeste seadmete jaoks. Linuxi kernel pakub selleks vahendit Android seadmed välkmällu lugemiseks ja kirjutamiseks. See pakub vahendit mälu sektsioonideks nii, et OS ja muud rakendused saaksid lihtsalt ja tõhusalt mäluressurssi jagada.

8) Sideaine

Android majutab palju rakendusi ja süsteemikomponente, millest igaüks töötab oma protsessides. Enamasti tuleks need protsessid häirete ja andmete kahjustamise vältimiseks üksteisest eraldada. Siiski on juhtumeid, kus soovime andmeid ühest protsessist teise edastada.

Linuxi tuum võimaldab andmete jagamise funktsiooni, pakkudes sideaine draivereid. Sideaine draiverid võimaldavad protsessidevahelist suhtlust, IPC. IPC protsesside kasutamine võimaldab avastada teisi protsesse ja jagada teavet.

Mäluhaldus

Teine Linuxi tuuma vastutusala on mäluhaldus. Kuna erinevad rakendused töötavad, tagab kernel, et nende kasutatav mäluruum ei läheks vastuollu ega kirjutaks üksteist üle.

Samuti aitab see tagada, et kõik töötavad rakendused saaksid toimimiseks piisavalt mälu, tagades, et ükski rakendus ei võta liiga palju ruumi.

Protsessi juhtimine

Iga rakendus Android jookseb protsessis. Kernel vastutab ka protsesside haldamise eest. See tähendab, et see vastutab protsesside loomise, peatamise, peatamise, sulgemise või peatamise eest.

Kernel võimaldab erinevaid funktsioone, nagu mitme protsessi samaaegne käitamine, protsessidevaheline suhtlemine, protsesside käivitamine taustal jne.

Kuna iga protsess vajab korrektseks toimimiseks oma mäluruumi, tagab kernel, et iga protsessi jaoks eraldatud mäluruumid on kaitstud teiste protsesside eest. Samuti tagab see, et ressurssidele meeldib RAM protsessidele eraldatud summad vabanevad protsesside sulgemisel.

Linuxi kernel vastutab ka töö jaotamise eest seadmes olevatele protsessoritele. See võimaldab maksimeerida mitme tuumaga seadmete jõudlust, kuna erinevate rakenduste protsessid töötavad erinevas tuumas.

Linuxi kernel teeb kapoti all rohkem ülesandeid, sealhulgas turvalisuse tagamist.

kokkuvõte

  • Android arhitektuur on korraldatud kihtidena.
  • Iga kiht lahendab ainulaadse hulga probleeme.
  • Lõppkasutajad suhtlevad rakenduste kihi rakendustega
  • Rakenduste arendajad töötavad välja rakendusi, mida kasutatakse rakenduskihil. Nad teevad seda rakendusraamistiku pakutavate tööriistade ja abstraktsioonide abil.
  • Android Raamraamistiku kiht lihtsustab juurdepääsu madala taseme komponentidele, luues API omateekide kohal.
  • Android Runtime ja Core-Libraries kasutavad madalatasemelisi keeli koos mobiilseadmete optimeerimisega. See tagab, et rakenduste arendajate kirjutatud kood töötab sellest hoolimata sujuvalt Android seadme piirangud.
  • Allosas Android tarkvarapinn on Linuxi kernel. See liidestub riigis levinud riistvarakomponentidega Android seadmeid.