Bevezetés az Android operációs rendszerbe

Az Android operációs rendszer egy nyílt forrású rendszer. Sokan azt mondják, hogy Linux, de ez nem teljesen igaz. Noha az Androidnak olyan kernelei vannak, amelyek hasonlóak a Linuxéhoz, ez az egyetlen, ami hasonló. Ma mélyebben áttekintjük az Android operációs rendszer belsejét, azaz a folyamatokat, a keretet és más hasonló struktúrákat. Tehát kezdjük az alapoktól kezdve, és nézzük meg az Android operációs rendszer belső gyökerét.

Az iPhone és a Windows Lumia Series, azaz a Microsoft Windowshoz kapcsolódó telefonok megjelenése után a Google ugyanezt akarták tenni. De szeretnének valamit, ami nyílt forrású lehet. Ennek fő oka az volt, hogy bárki hibakeresést végezhessen, bármilyen változtatást elvégezhessen, ahogy akar. Aztán jött a Linux gondolata. A Linux teljesen nyílt forráskódú operációs rendszer, amelyet a világ minden tájáról elfogadott. Ez az egyik operációs rendszer, amelyet még jobban használnak, mint a Windows vagy a Mac OSX. Ezenkívül a Linux képes szinte minden olyan dolgot futtatni, amely akár Mac-en, akár Windows-on is futtatható. Így a Google úgy döntött, hogy kifejleszt egy operációs rendszert egy olyan mobiltelefonhoz, amelynek alapvető belső héja ugyanolyan, mint a Linuxé, hogy ez szinte mindent kompatibilis legyen, és a külső héjat úgy fejlesszék ki, amikor és mikor is szükséges.

Android operációs rendszer mint nyílt forráskódú projekt (AOSP)

Az Android képes szabadon módosítani, feltalálni és megvalósítani saját eszközmeghajtóinkat és szolgáltatásainkat. Most, hogy beszéljünk, az Android operációs rendszernek öt különböző rétege van. Ez a következőképpen szól:

Amint a fenti képen látható, az első réteg az Application Framework, a második a Binder IPC Proxies, a harmadik az Android System Servicesből áll, a negyedik a HAL vagy a teljes forma a Hardver absztrakciós réteg, és az utolsó a Linux kernel. Most, ahogy korábban mondtam, láthatja, hogy a Linux egyetlen része, amelyből egy Android operációs rendszer áll, a Linux kernel. Most nézzük meg mindet egyenként.

Android alkalmazáskeret

Ezt az alkalmazási keretet az Android alkalmazásfejlesztők használják. Az Androidnak ebben a részében legalábbis bármi köze van a hardverréteghez. Az Android alkalmazások Java nyelven vannak programozva. Egy alkalmazás programozása után az Android SDK eszközök segítenek az adatok és az erőforrásfájlok, például az XML-fájlok, a jar-fájlok, a jegyzékfájlok és más képek és dolgok egyetlen archív csomagba történő összeállításában, „.apk” kiterjesztéssel. Ez az apk fájl felhasználható az alkalmazás telepítésére, egyetlen kattintással az Android készülékekre. Most, mivel az Android operációs rendszer úgy viselkedik, mint egy Linux környezet, az alkalmazás viselkedése itt is ugyanaz. Minden alkalmazást különálló felhasználónak tekintünk, és a saját virtuális gépén fut. Ez elkülöníti az alkalmazás programozott kódját, és megakadályozza azt, hogy másoktól megfertőződjön, kivéve, ha kifejezetten közlik. Minden más alkalmazásnak saját felhasználói azonosítója van, és minden más folyamatnak megvan a saját virtuális gépe.

Az Android alkalmazásrendszer a legkevesebb kiváltság elvén működik. A legkisebb jogosultság elve azt jelenti, hogy amikor egy új alkalmazásnak el kell futnia, de nincs szabad memória, az Android rendszer automatikusan kilép a régi alkalmazásból, amely a háttérben történő futtatáshoz nem szükséges. Ez az Android operációs rendszer biztonságának egyik legjobb része. Ez az elv lehetővé teszi, hogy minden alkalmazásnak csak az a hozzáférése legyen, amely a munkájához szükséges. Így egy alkalmazás nem kap engedélyt arra, ami nem célja. Ez viszont egy nagyon biztonságos környezetet teremt magában az Android operációs rendszerben.

A Binder IPC Binder folyamatközi kommunikáció néven ismert. Ez az interfész lehetővé teszi a programozó számára, hogy alkalmazásokat készítsen, hogy kommunikáljon más alkalmazásokkal. Gyakrabban nem az alkalmazások kommunikálnak, hanem a folyamatok. A Binder IPC több folyamat egyidejű futtatására is képes, egyidejű szinten. Ez a kötőanyag-megvalósítás az Android operációs rendszer kerneljéből származik. Most felmerültek a kérdések, hogy miért kell a kötőanyagnak a kernelben maradnia, és miért nem futtatható a Linux IPC mechanizmusain? Ennek fő oka az, hogy a kötőanyag elkerüli a szükségtelen helykiosztás felhasználását, ellentétben a Linux rendszer többi IPC mechanizmusával. Ha hallottál a „varázslatos pythonban” kifejezésről, akkor egy Binder IPC ez lenne az alkalmazásfejlesztő számára, mivel teljesen el van rejtve tőlük, és úgy tűnik, hogy működik, ellentétben a magas szintű keretrendszerrel, ahol azt kell, hogy kifejezetten működjön. Ez valóban lehetővé teszi a magas szintű kerettel való kommunikációt az android operációs rendszer szolgáltatásaival.

Android operációs rendszer rendszerszolgáltatások

A szolgáltatás egy összeállított kóddarab, amely hosszú ideig fut egy android operációs rendszer háttérben, bármilyen felület megadása nélkül. Bármely alkalmazás, akár felhasználó, akár rendszer indíthat szolgáltatást, de továbbra is a háttérben fut, még akkor is, ha az alkalmazás bezáródik. Kétféle szolgáltatás létezik:

Indított szolgáltatások

Az elindított szolgáltatások általában akkor indulnak el, amikor egy alkalmazás felkéri. Az Indított típusú szolgáltatás azonban általában csak egyetlen műveletet hajt végre, és semmit sem ad vissza.

Kötelező szolgáltatások

A korlátozott szolgáltatások kliens-szerver kapcsolat felületet kínálnak. A kötött szolgáltatás addig fut, amíg az előtér alkalmazás fut, majd azt leállítják, miután az alkalmazás tevékenysége megsemmisült.

Az android rendszerszolgáltatása szükséges információt szolgáltat a felhasználói alkalmazásoknak a megfelelő működéshez. Ezeket a kommunikációkat a rendszerszolgáltatások és a felhasználói alkalmazások között a Kernel Binder IPC segítségével hajtjuk végre. Most már meglepő lehet, de az Android összes alkalmazásának írása nem Java. Néhányuk C és C ++ nyelven íródott. Azokat az alkalmazásokat, amelyeknek közvetlen kapcsolatban kell lenniük a hardverrel, C és C ++ nyelven írják. Ennek fő oka az, hogy a rendszerszolgáltatásoknak legtöbbször állandó kapcsolatban kell lenniük a hardverrel. Ezért fontos, hogy a lefordított kódrészlet rendkívül gyors legyen. És amikor a hardveres gyorsításról és a nagy teljesítményről van szó, a C sokkal gyorsabb, mint a Java vagy bármely más nyelv.

Hardverszolgáltatások, amelyek állandó használatban vannak, például: A közelségérzékelőket, a gyorsulásmérőt vagy az érintőképernyőt C-ben kell írni. Egyéb hardverek, például a kamera vagy a hang, általában a JNI hívásokat használják. Tehát, ha észreveszi, az érintőképernyők mindig gyorsabbak lesznek, mint a kamera indítása vagy a dal lejátszása egy zenelejátszón keresztül.

Rendszerszolgáltatás létrehozásakor vegye figyelembe, hogy a szolgáltatások általában a fő folyamatban futnak, és ez nem hoz létre külön folyamatot. Röviden: ha a kódja valamilyen CPU- és GPU-intenzív munkát fog elvégezni, például a nagyfelbontású játékokat, akkor inkább új szálak létrehozását kell előnyben részesítenie ugyanabban a szolgáltatásban; egyébként mindig nagy esély van arra, hogy az „App Not Responding” párbeszédpanel megjelenik.

Ajánlott tanfolyamok

  • IT biztonsági tanúsítási képzés
  • Teljes Ruby on Rails tanfolyam
  • Professzionális CSS képzés
  • Program HTML5-en és CSS3-on

Hardver absztrakciós réteg

A HAL vagy a Hardver absztrakciós réteget kifejezetten a gyártók számára tervezték. Az alkalmazásfejlesztőknek itt alig vagy csaknem semmi dolga van. Ez a réteg elősegíti a funkcionalitás beillesztését anélkül, hogy a rendszerre bármiféle módosítást igényelne. Minden más rendszernek eltérő kialakítású HAL van, mivel készülékspecifikusak. A HAL két tipikus struktúrából áll: modulból és eszközből.

A HAL modulstruktúráját megosztott könyvtárként tároljuk .so formátumban, amely olyan alapvető metaadatokból áll, mint a verziószám, a modult tervező szerző és hasonló dolgok. Az eszköz felépítése a termék tényleges hardvere. Hasonló a moduléhoz, de az eszköz felépítése meghatározza az általános hardverinformáció átfogóbb változatát, amely mutatókat és más hasonló anyagokat tartalmaz, amelyek minden hardver számára különlegesek.

Linux alatt az alkalmazások rendszerhívások útján kommunikálnak az alapul szolgáló hardverrel. De egy Android operációs rendszerben az alkalmazások a Java API-k segítségével kommunikálnak a hardverrel.

Linux Kernel

A Linux kernel összeállítása egy Android operációs rendszerhez hasonló ahhoz, mint egy alapvető Linux operációs rendszerhez. Az egyetlen különbség az, hogy az Android verzió egy kicsit fejlettebb, mint a Linux. A fő ok az android kernel olyan kiegészítő funkciókból áll, mint például a wakelocks, a kettős érintés a feloldáshoz és más hasonló funkciók, amelyek a mobil operációs eszközbe vannak beágyazva. Az olyan funkciók, mint a wakelock, fontosak, mivel a kernel hordozható eszközön fog működni, és kissé agresszívebbnek kell lennie a memória és az akkumulátor kezelése során; ellentétben az alapvető Linux rendszerrel, ahol az energiagazdálkodás nem jelent problémát. Ezeket a további követelményeket a rendszermag helyett a rendszer indítja el, mivel ezeknek a dolgoknak nem szabad befolyásolniuk a beépített illesztőprogramokat.

Amikor hallja, amikor valaki azt mondja, hogy 'a Linux', általában a kernelt érti, mivel ez minden operációs rendszer legalapvetőbb és legfontosabb része. A fő ok, amiért az android a Linux kernelre épül, az a nyílt forrású. Bárki léphet tovább és módosíthatja a Linux kernelt bármilyen hardverkorlátozás vagy akár jogdíjmentes probléma nélkül.

Különbség a Linux és az Android között

Tehát most végre elértük a blog leginkább zavaró szakaszát: a Linux vs az Android. Az emberek általában az androidot tekintik Linux disztribúciónak, de azt mondanám, hogy csak 50% -uk igaz. Amikor az android operációs rendszer elindul, alapvetõen betölti a kernelt, mint bármely más Linux disztribúció, de a többi szoftver teljesen különbözik a Linuxétól. A Linux alkalmazások nem futnak androidon, és fordítva sem, ha nem chroot környezetben vannak fordítva. A tipikus Linux disztróban és az Androidban található könyvtárak teljesen különböznek egymástól. Alapvetően nem férhet hozzá az Android gyökértermináljához, mint Linux esetén. Ez az a fő ok, amiért az emberek általában a gyökérzet telepítése után telepítik a Busybox, SuperSU-t és annak bináris fájljait, hogy részletesebb parancssori hozzáféréssel rendelkezzenek a kernelhez és a héjhoz. Nincs alapértelmezett héj az Androidon, de megszerezheti egy terminál emulátor telepítésével a Google Play Áruházból. A terminál emulátor így néz ki:

Az android futási ideje egy Dalvik virtuális gépen működik. Ez a Dalvik virtuális gép valójában a Java programozási nyelv értelmezője. Az android teljes futási ideje Java nyelven íródik, és mivel az android összes alkalmazása Java nyelven íródik, sokkal könnyebbé és simábbá válik az alkalmazások virtuális környezetben történő futtatása. Mivel az összes alkalmazás és még a futási idő Java nyelven is meg van írva, minden fejlesztő számára sokkal könnyebbé válik az Android operációs rendszer minden egyes bitének testreszabása. Az androidot általában egyetlen felhasználói operációs rendszerre fejlesztették ki (ellentétben a nyalóka és a mályvacukrot, ahol több felhasználó is lehet.) Annak érdekében, hogy ezt egyszerűbbé tegyük, hadd tegyem ezt a formát. Az Android alkalmazások nem más, mint a Linux folyamatok a végén, és így működnek. Mivel a fentiekben már említettem, hogy minden alkalmazásnak megvan a saját folyamata, a kernelnek könnyebb különálló UID-t létrehozni az egyes folyamatokhoz, és az alkalmazás fájljait és a memóriát további erőfeszítések nélkül kezelni.

Valójában ennél több is, mint az Android operációs rendszer alapjain, amelyeket fent említettem. Az Android központi folyamata „Zygote” néven ismert, és kitűnő, amit csinál. Ez a folyamat az inicializálási parancsokkal indul, amikor az android indul. Nem fogok itt részletesebben részletezni, de azt gondolom, hogy az Android operációs rendszer alapjai valóban elegendőek az android használatához. További információkért látogasson el a source.android.com és developers.android.com oldalra, amely a google hivatalos weboldala az android minden frissítéséhez.

Ajánlott cikkek

Íme néhány cikk, amely segít részletesebben megismerni az Android operációs rendszert, tehát csak keresse meg a linket.

  1. HTML5 vs Flash - Mennyire különböznek egymástól
  2. A 8 legfontosabb hasznos Office Suite alkalmazás az Android számára
  3. A legnépszerűbb 5 ingyenes Android emulátor a PC-hez
  4. Android interjúkérdések - a 10 legfontosabb hasznos kérdés
  5. Karrier az Android fejlesztésben
  6. Az iPhone és az Android 33 legnépszerűbb különbsége

Kategória: