Johdanto Android-käyttöjärjestelmään

Android-käyttöjärjestelmä on avoimen lähdekoodin järjestelmä. Monet sanovat, että se on Linux, mutta se ei ole totta. Vaikka Androidilla on ytimiä, jotka ovat samanlaisia ​​kuin Linux, tämä on ainoa asia, joka on samanlainen. Tänään tutustumme syvemmälle Android-käyttöjärjestelmän sisäpuolelle, joka on prosessit, kehys ja muut vastaavat rakenteet. Aloitetaan siis alusta alkaen ja katsotaan Android-käyttöjärjestelmän sisäosaan.

IPhonen ja Windows Lumia -sarjan eli Microsoft Windows -puhelimien julkaisun jälkeen Google halusi tehdä saman. Mutta he halusivat jotain, joka voisi olla avoimen lähdekoodin. Tärkein syy tähän oli, että kuka tahansa voi debugoida sen, muokata sitä muutoksin haluamallaan tavalla. Sitten tuli ajatus Linuxista. Linux on täysin avoimen lähdekoodin käyttöjärjestelmä, jonka yhteisö on laajalti hyväksynyt ympäri maailmaa. Se on yksi niistä käyttöjärjestelmistä, jota käytetään jopa enemmän kuin Windows tai Mac OSX. Lisäksi Linux pystyy suorittamaan melkein kaikki muut asiat, jotka voidaan suorittaa joko Macilla tai Windowsilla. Siksi Google päätti kehittää matkapuhelimeen käyttöjärjestelmän, jolla on sama sisäinen sisäkuori kuin Linuxilla, jotta se olisi yhteensopiva melkein kaiken kanssa ja ulkoinen kuori kehitettäisiin milloin ja myös sen vaatiessa.

Android-käyttöjärjestelmä avoimen lähdekoodin projektina (AOSP)

Androidilla on kyky muokata, keksiä ja toteuttaa vapaasti omia laiteajureitamme ja ominaisuuksiamme. Nyt puhutaan siitä, että Android-käyttöjärjestelmässä on viisi erilaista kerrosta. Se kuuluu seuraavasti:

Kuten yllä olevasta kuvasta voidaan nähdä, ensimmäinen kerros on Sovelluskehys, toinen on Binder IPC Proxies, kolmas koostuu Android System Services -palveluista, neljäs on HAL tai koko muoto on Hardware Abstraction Layer ja viimeinen on Linux-ydin. Nyt kuten aiemmin totesin, voit nähdä, että ainoa osa Linuxista, josta Android-käyttöjärjestelmä koostuu, on Linux-ydin. Katsotaanpa nyt niitä kaikkia yksi kerrallaan.

Android-sovelluskehys

Sovelluskehittäjät käyttävät tätä sovelluskehystä Androidille. Tämän Android-osan on ainakin tehtävä mitään laitteistokerroksen kanssa. Android-sovellukset ohjelmoidaan Java-kielellä. Sovelluksen ohjelmoinnin jälkeen Android SDK -työkalut auttavat kokoamaan tiedot ja resurssitiedostot, kuten XML-tiedostot, jar-tiedostot, manifestitiedostot ja muut kuvat ja asiat yhdeksi arkistopaketiksi, jonka laajennus on .apk. Tätä apk-tiedostoa voidaan käyttää sovelluksen asentamiseen yhdellä napsautuksella Android-laitteille. Nyt, koska Android-käyttöjärjestelmä käyttäytyy kuin Linux-ympäristö, sovellusten käyttäytyminen on myös täällä sama. Jokaista sovellusta pidetään erillisenä käyttäjänä toisesta ja se toimii omassa virtuaalikoneessaan. Tämä erottaa sovelluksen ohjelmoidun koodin ja estää sitä myös tarttumasta muilta, ellei nimenomaisesti mainita. Jokaisella muulla sovelluksella on oma USER-tunnus ja jokaisella muulla prosessilla on oma virtuaalikone.

Android-sovelluskehys toimii vähiten etuoikeuden periaatteen mukaisesti. Pienimpien etuoikeuksien periaate tarkoittaa, että aina kun uuden sovelluksen on suoritettava, mutta muistia ei ole käytettävissä, Android-järjestelmä sulkee automaattisesti vanhan sovelluksen, jota ei tarvitse suorittaa taustalla. Tämä on yksi parhaista Android-käyttöjärjestelmän tietoturvan osista. Tämä periaate mahdollistaa sen, että jokaisella sovelluksella on vain käyttöoikeus, joka vaaditaan työnsä suorittamiseen. Sovellus ei siis voi saada lupaa siihen, jota ei ole tarkoitettu. Tämä puolestaan ​​luo erittäin turvallisen ympäristön itse Android-käyttöjärjestelmässä.

Binder IPC tunnetaan nimellä Binder Inter-Process Communication. Tämän käyttöliittymän avulla ohjelmoija voi tehdä sovelluksen kommunikoidakseen muiden sovellusten kanssa. Useimmiten sovellukset eivät kommunikoi, vaan prosessit. Binder IPC auttaa suorittamaan useita prosesseja samanaikaisesti samanaikaisella tasolla. Tämä sideaineen toteutus hankitaan Android-käyttöjärjestelmän ytimen kautta. Nyt on esitetty kysymyksiä siitä, miksi sideaineen on pysyttävä ytimessä ja miksi sitä ei voida käyttää Linuxin IPC-mekanismeista? Pääsyy tähän on se, että sideaine välttää tarpeettoman tilan varaamisen toisin kuin muut Linux-järjestelmän IPC-mekanismit. Jos olet kuullut termiä "taika pythonissa", niin Binder IPC näyttäisi siltä sovelluskehittäjältä, koska se on täysin piilossa heistä ja näyttää siltä, ​​että se vain toimii, toisin kuin korkean tason kehys, jossa sinun on saatava sen toimimaan sen nimenomaisesti. Tämä todella mahdollistaa korkean tason kehyksen kommunikoinnin android-käyttöjärjestelmäpalveluiden kanssa.

Android-käyttöjärjestelmän järjestelmäpalvelut

Palvelu on koottu kappale, joka toimii pitkään android-käyttöjärjestelmän taustalla antamatta mitään käyttöliittymää. Mikä tahansa sovellus, olipa se sitten käyttäjä tai järjestelmä, voi käynnistää palvelun, mutta se toimii edelleen taustalla, vaikka sovellus olisi suljettu. Palveluita on kuitenkin kahta tyyppiä:

Aloitetut palvelut

Käynnistetyt palvelut alkavat yleensä, kun sovellus vaatii sitä. Aloitetut palvelutyypit kuitenkin yleensä suorittavat vain yhden operaation eivätkä palauta mitään.

Sidotut palvelut

Rajatut palvelut tarjoavat asiakas-palvelin-suhderajapinnan. Sidottu palvelu jatkuu, kunnes etualalla oleva sovellus suoritetaan, ja sitten se pysäytetään, kun sovellustoiminta on tuhottu.

Androidin järjestelmäpalvelut tarjoavat käyttäjän sovelluksille tarvittavaa tietoa, jotta he voivat toimia kunnolla. Ja nämä kommunikaatiot järjestelmäpalveluiden ja käyttäjän sovellusten välillä tapahtuvat ytimen Binder IPC: n avulla. Nyt se voi tulla yllättävää, mutta kaikki Android-sovellukset eivät ole kirjoitettu Java-kielellä. Jotkut niistä on kirjoitettu C- ja C ++ -merkinnöillä. Sovellukset, joiden on oltava läheisessä yhteydessä laitteistoon, on kirjoitettu C- ja C ++ -merkinnöillä. Pääsyy tähän on, koska suurimman osan ajasta järjestelmäpalveluiden on oltava jatkuvassa yhteydessä laitteistoon. Tämän vuoksi on tärkeää, että koottu kappale on erittäin nopea. Ja kun kyse on laitteistokiihdytyksestä ja korkeasta suorituskyvystä, C on paljon nopeampi kuin Java tai mikä tahansa muu kieli.

Laitteistopalvelut, jotka ovat jatkuvasti käytössä, esimerkiksi: Läheisyysanturit, kiihtyvyysanturi tai kosketusnäyttö on kirjoitettava kirjaimella C. Muut laitteet, kuten kamera tai ääni, käyttävät enimmäkseen JNI-puheluita. Joten jos huomaat, kosketusnäytöt ovat aina nopeampia kuin kameran käynnistäminen tai kappaleen toistaminen musiikkisoittimen kautta.

Kun luot järjestelmäpalvelua, muista, että palveluilla on taipumus toimia pääprosessissa eikä se luo erillistä prosessia. Lyhyesti sanottuna, jos koodisi aikoo tehdä joitain CPU- ja GPU-intensiivisiä töitä, esimerkiksi teräväpiirtopelejä, sinun tulisi mieluummin luoda uusia ketjuja samaan palveluun; muuten on aina suuri mahdollisuus saada ”Sovellus ei reagoi” -valintaikkuna.

Suositellut kurssit

  • IT-turvallisuuden sertifiointikoulutus
  • Koko Ruby on Rails -kurssi
  • Ammatillinen CSS-koulutus
  • Ohjelma HTML5: llä ja CSS3: lla

Laitteiden abstraktiokerros

HAL tai Hardware Abstraction Layer on suunniteltu erityisesti myyjille. Sovelluskehittäjillä ei ole juurikaan tai melkein mitään tekemistä täällä. Tämä kerros auttaa toiminnallisuuden lisäämisessä ilman mitään muutoksia järjestelmään. Kaikilla muilla järjestelmillä on erilainen suunnittelu HAL, koska ne on tehty laitekohtaisiksi. HAL koostuu kahdesta tyypillisestä rakenteesta: moduulista ja laitteesta.

HAL: n moduulirakenne tallennetaan jaetuksi kirjastoksi .so-muodossa, joka koostuu perustiedot, kuten versionumero, moduulin suunnittelija ja vastaavat. Laiterakenne on tuotteen todellinen laitteisto. Samanlainen kuin moduulin, mutta laiterakenne määrittelee kattavamman version yleisistä laitteistotiedoista, jotka sisältävät osoittimet ja muut vastaavat asiat, jotka ovat erityisiä jokaiselle laitteistolle.

Linuxissa sovellukset kommunikoivat taustalla olevan laitteiston kanssa järjestelmäpuheluiden kautta. Mutta Android-käyttöjärjestelmässä sovellukset kommunikoivat laitteiston kanssa Java-sovellusliittymien kautta.

Linux-ydin

Linux-ytimen kääntäminen Android-käyttöjärjestelmälle on samanlainen kuin sen kääntäminen Linuxin peruskäyttöjärjestelmälle. Ainoa ero on, että Android-versio on hiukan edistyneempi kuin Linuxin. Tärkein syy android-ytimelle koostuu lisäominaisuuksista, kuten wakelocks, kaksoisnapautus lukituksen avaamiseksi ja muut vastaavat ominaisuudet, jotka on upotettu mobiililaitteeseen. Ominaisuudet, kuten wakelock, ovat tärkeitä, koska ydin aikoo toimia kannettavassa laitteessa ja sen on oltava hieman aggressiivisempi muistin ja akun hallinnassa; toisin kuin tavallinen Linux, jossa energianhallinta ei ole ongelma. Nämä lisävaatimukset johdetaan ytimessä eikä järjestelmässä, koska näiden asioiden ei pitäisi vaikuttaa sisäänrakennettuihin ohjaimiin.

Aina kun kuulet jonkun sanovan ”sen Linux”, he tarkoittavat yleensä ydintä, koska se on kaikkien käyttöjärjestelmien tärkein ja edelleen tärkein osa. Tärkein syy siihen, miksi android perustuu Linux-ytimeen, on sen avoimen lähdekoodin käyttö. Kuka tahansa voi mennä eteenpäin ja muokata Linux-ydintä ilman laitteistorajoituksia tai jopa rojaltitietoja.

Ero Linuxin ja Androidin välillä

Joten nyt olemme vihdoin päässeet tämän blogin hämmentävimmään vaiheeseen: Linux vs. Android. Ihmiset pitävät androidia yleensä Linux-jakeluna, mutta sanoisin, että he ovat vain 50 prosenttia oikeassa. Aina kun android-käyttöjärjestelmä käynnistyy, se lataa ytimen periaatteessa kuten mikä tahansa muu Linux-jakelu, mutta muu ohjelmisto on täysin erilainen kuin Linux. Linux-sovellukset eivät toimi androidilla ja päinvastoin, ellei niitä käännetä chroot-ympäristössä. Tyypillisessä Linux-distro- ja Android-kirjastot eroavat toisistaan ​​täysin. Periaatteessa et voi päästä juuriterminaaliin Androidissa, kuten Linuxissa. Tämä on tärkein syy siihen, miksi ihmiset yleensä asentavat Busybox, SuperSU ja sen binaarit juurtumisen jälkeen, jotta heillä on tarkempi komentorivikäyttö ytimeen ja kuoreen. Androidissa ei ole oletuskuoria, mutta voit hankkia sellaisen asentamalla pääteemulaattorin google play -kaupasta. Terminaaliemulaattori näyttää tältä:

Android-käyttöaika toimii Dalvik-virtuaalikoneessa. Tämä Dalvik VM on oikeastaan ​​Java-ohjelmointikielen tulkki. Koko androidin ajonaika kirjoitetaan Java-kielellä Android, ja koska kaikki android-sovellukset on kirjoitettu Java-versiossa, sovellusten toimimisesta virtuaaliympäristössä tulee paljon helpompaa ja sujuvampaa. Ja koska kaikki sovellukset ja jopa ajonaika on kirjoitettu Java-kielellä, jokaiselle kehittäjälle on paljon helpompaa mukauttaa Android-käyttöjärjestelmän jokaista muuta bittiä. Android oli yleensä suunniteltu yhden käyttäjän käyttöjärjestelmäksi (toisin kuin tikkari ja vaahtokarkki, jossa voi olla useita käyttäjiä.) Jotta tämä todella yksinkertaistuu, anna minun laittaa se tähän muotoon. Android-sovellukset ovat vain lopussa Linux-prosesseja, ja siten ne yleensä toimivat. Ja koska olen jo todennut, että jokaisella sovelluksella on oma prosessi, ytimen on helpompaa luoda erillinen UID kullekin prosessille ja käsitellä sovellustiedostoja ja muistia ilman ylimääräisiä ponnisteluja.

Täällä on oikeasti enemmän kuin yllä mainitut Android-käyttöjärjestelmän perusteet. Androidilla on ydinprosessi, joka tunnetaan nimellä 'Zygote', ja se on erinomainen siinä, mitä se tekee. Tämä prosessi todella alkaa alustamiskomennoilla, kun android käynnistyy. En aio mennä tässä yksityiskohtaisesti, mutta mielestäni Android-käyttöjärjestelmän perusteet ovat oikeastaan ​​riittävät, jotta pääset aloittamaan android. Saadaksesi lisätietoja voit käydä lähde lähteissä source.android.com ja developers.android.com, joka on google-palvelun virallinen verkkosivusto kaikille android-päivityksille.

Suositellut artikkelit

Tässä on artikkeleita, jotka auttavat sinua saamaan lisätietoja Android-käyttöjärjestelmästä, joten mene vain linkin läpi.

  1. HTML5 vs. Flash - miten ne ovat erilaisia
  2. 8 parasta hyödyllistä Office Suite -sovellusta Androidillesi
  3. Top 5 ilmaista Android-emulaattoria tietokoneelle
  4. Android-haastattelukysymykset - 10 suosituinta hyödyllistä kysymystä
  5. Ura Android-kehityksessä
  6. IPhonen ja Androidin 33 suosituinta eroa