Struktura e sistemit të skedarëve android. Pajisja e brendshme e sistemeve Android

Sistemi i skedarëve dhe Android

pra, në këtë artikull, siç mund të keni menduar nga titulli, ne do të flasim për strukturën e përgjithshme. file system  android. Përshkrimi i drejtorive kryesore, metodave të formatimit, mbrapa  dhe kështu me radhë. Artikulli kryesisht ka për qëllim fillestar. Unë shpresoj se pjesa tjetër do të jetë interesante për të lexuar.
struktura e sistemit të skedarëve linux



android nuk ka shumë nga disqet e zakonshme - siç është me ose d. Rrënja e sistemit tonë të skedarëve është: "". të gjitha direktoritë e tjera janë bashkëngjitur në direktorinë e rrënjëve. Shqyrto disa prej tyre:

sistem- me emrin që tashmë mund të mendosh se skedarët e sistemit janë të vendosur këtu (diçka si ne mund të shohim në OS nga Microsoft c: dritaret). Dosjet në këtë dosje janë të pandryshueshme sipas parazgjedhjes. Ato janë të destinuara për funksionimin e sistemit operativ. Gjithashtu këtu janë aplikacionet e ndërtuara që janë ndërtuar në OS. Nëse marrim të drejtat e rrënjës atëherë ne mund të bëjmë ndryshimet tona në këtë direktori. Megjithatë, duhet të bëhet me kujdes fshihet skedarët  dhe dosjet nuk do të shërohen vetvetiu. Në këtë rast, vetëm një ndezje ose rezervë do të na ndihmojë. Diçka interesante mund të gjendet në dosje systemmedia. Në arkiv bootanimation.zip  Ka foto që përbëjnë animacionin kur pajisja është ndezur. Ju gjithashtu mund të gjeni një skedar në rrënjën e dosjes së sistemit. build.prop  i cili përmban shumë parametra, nga përshkrimi i pajisjes deri te dendësia e ekranit (për konfigurimin e këtij konfigurimi ka shumë aplikacionet e palëve të treta).screenshot


të dhëna  - Ndryshe nga sistemet, skedarët e ruajtur ruhen këtu. Në nën kategori app  Thjesht ruhen programet apk të instaluara nga ne. screenshot

Nëse kemi nevojë për një skedar apk të çdo aplikacioni, atëherë ne mund ta gjejmë lehtë atje. Dhe në datadata  të dhënat e tyre programe të instaluara.
MNT  -Në këtë seksion, kujtesa e përdoruesit është ngritur (për shembull, nëse instaloni një kartë flash). Kështu, nëse vendosim skedarin tonë txt në rrënjën e kartës flash, atëherë rruga e plotë do të duket si kjo " skedar mntsdcard". Këtu është ngritur edhe disku i integruar për telefonat e mençur pa mbështetje për kartat e kujtesës. screenshot


Si të fshini (reset) në android


ka disa mënyra për formatim. Rreth disa prej tyre më poshtë
1. Reset nëpërmjet cilësimeve. Shko te cilësimet \u003e\u003e rivendos dhe rivendos \u003e\u003e cilësimet e rivendosjes. Pastron të gjitha cilësimet dhe heq skedën nga. Përpara kësaj, mund të kopjoni disa cilësime duke tundur artikullin përkatës. Pas rihapjes, pajisja do të pyesë nëse do të rivendosë këto të dhëna.
screenshot


2. Rivendoseni nëpërmjet rimëkëmbjes.  E dobishme në situatën kur pajisja nuk ndizet. Ju do të keni nevojë për qasje në rrënjë dhe një rimëkëmbje të instaluar në mënyrë të përshtatshme. Në varësi të shërimit të instaluar, vendndodhja e artikujve mund të ndryshojë. Unë kam një pikë të përparuar fshirje. Ai përmban:
dalvik cache  - formatimi i kujtesës dalvik të makinës virtuale.
sistem- formatimin e ndarjes së sistemit.
të dhëna  - fshini të gjitha aplikacionet e palëve të treta në kujtesën e pajisjes si dhe parametrat e përdoruesit.
heqje cache - cache
sdcard format  - formatimin e kartës së kujtesës. Fshini gjithçka që ndodhet në kartën e kujtesës.
format sd-ext- formatimi i seksionit në kartën e kujtesës (nëse një seksion i tillë është krijuar, për shembull, për të montuar skriptin e aplikacionit referues kur të instalohet në kartë).
3. Formatimi duke përdorur kodin e shërbimit.  Nëse thirni * 2767 * 3855 #. menjëherë pas formimit të numrit, do të ndodhë një rivendosje. Jini të vëmendshëm.
Kështu për shembull, duke fshirë përmbajtjen e një dosjeje datadata  ne do të heqim parametrat dhe të dhënat e aplikimit, por jo vetë aplikacionet. Kjo mund të bëhet edhe nga cilësimet e aplikacionit "fshini të dhënat". Kur fshini dosjen, data do të fshihet. instaluar aplikacione.
Urimet, ndryshimet, shtesat në artikull, ju lutemi të lënë në komente ose për mua në një personale. artikulli do të plotësohet. Faleminderit lexuesit, sukses.
-----------------
  Ju mund të lini komentet në seksionin e Katalogut të Artikullit. middleware, është një grup bibliotekash (Biblioteka), të dizajnuara për të zgjidhur problemet e përbashkëta që kërkojnë efikasitet të lartë. Kjo është, ky nivel është përgjegjës për sigurimin e algoritmeve të zbatuara për nivelet më të larta, mbështetjen e formave të skedarëve, kodimin dhe dekodimin e informacionit (për shembull, kodek multimedial), vizatim grafike dhe shumë më tepër. Bibliotekat zbatohen në C / C ++ dhe përpilohen për një specifik hardware  pajisje me të cilat ato janë furnizuar nga prodhuesi në një formë të paravendosur.

Këtu janë disa nga bibliotekat e nivelit të ulët:

  1. Surface Manager - Android OS përdor një menaxher të përbërë si Compiz (Linux), por më primitiv. Në vend që të vizatoni grafikë drejtpërdrejt në tamponin e ekranit, sistemi i dërgon komandat e vizatimit të hyrjes në tonin e zërit, ku grumbullohen së bashku me të tjerët, duke kompozuar një përbërje të caktuar dhe më pas shfaqen tek përdoruesi në ekran. Kjo i mundëson sistemit të krijojë efekte interesante pa ndërprerje, të kuptojë transparencën e dritareve dhe tranzicionit të qetë.
  2. Korniza e Medias - bibliotekat e zbatuara në bazë të PacketVideo OpenCORE. Me ndihmën e tyre, sistemi mund të regjistrojë dhe të luajë të dhëna audio dhe video, si dhe imazhe statike të prodhimit. Shumë formate popullore mbështeten, duke përfshirë MPEG4, H.264, MP3, AAC, AMR, JPG dhe PNG. Në të ardhmen, OpenCORE do të zëvendësohet me një kornizë më të thjeshtë, Stagefright.
  3. SQLite është një motor i lehtë dhe produktiv i bazës së të dhënave relacionale që përdoret në Android si motor kryesor i bazës së të dhënave.
  4. Biblioteka 3D - përdoret për vizatim shumë optimizues të grafikut 3D, duke përdorur përshpejtimin e harduerit nëse është e mundur. Implementimet e tyre bazohen në OpenGL ES 1.0 API.
  5. FreeType është një bibliotekë për të punuar me bitmaps, si dhe për rasterizing fonts dhe kryerjen e operacioneve mbi to. Ky është një motor me cilësi të lartë për fonts dhe ekranin e tekstit.
  6. LibWebCore - biblioteka e motorrit të njohur WebKit, i përdorur edhe në desktop shfletuesit google  Chrome dhe Apple Safari.
  7. SGL (Skia Graphics Engine) - një motor i hapur për të punuar me grafikë 2D. Biblioteka e grafikut është një produkt i Google dhe përdoret shpesh në programet e tjera.
  8. SSL - bibliotekat për të mbështetur protokollin e njëjtë kriptografik bazuar në OpenSSL.
  9. libc është një bibliotekë e thirrjeve standarde të gjuhës C, një analog i glibc (GNU libc nga Linux) për pajisje të vogla. Ajo quhet Bionic.


Fig. 1.5.

Në të njëjtin nivel është runtime Android Runtime - mjedis runtime i aplikacionit. Komponentët kryesorë të saj janë një sërë bibliotekash standarde dhe makinë virtuale Dalvik. Çdo aplikim në Android OS shkon në kopjen e vet të makinës virtuale Dalvik. Kështu, të gjitha proceset drejtuese janë të izoluara nga sistemi operativ dhe nga njëri-tjetri. Arkitektura e Runtime Android është e tillë që puna e programeve të kryhet në mënyrë rigoroze brenda kuadrit të mjedisit virtual të makinës. Për shkak të kësaj, thelbi i sistemit operativ është i mbrojtur nga dëmet e mundshme nga komponentët e tjerë. Prandaj, kodi me gabime ose malware nuk do të jetë në gjendje të prishë sistemin Android dhe pajisjen bazuar në të. Një funksion i tillë mbrojtës, së bashku me ekzekutimin e kodit të programit, është një nga çelësat për Runtime Android.

Niveli i mësipërm është Korniza e Zbatimit, ndonjëherë e quajtur niveli i kuadrit të aplikimit. Është përmes kornizave të aplikimit që zhvilluesit të kenë qasje në API të ofruar nga komponentët e sistemit të nivelit më të ulët. Përveç kësaj, falë arkitekturës kornizë, çdo aplikim ofrohet me aftësitë e implementuara tashmë të aplikacioneve të tjera që lejohen të hyjnë. Grupi bazë i shërbimeve dhe sistemeve që janë në themel të secilës aplikim dhe që janë pjesë e kornizës përfshijnë:

  1. Një grup i pasur dhe i zgjeruar i shikimeve (Shikime) që mund të përdoren për të krijuar komponentë vizualë të aplikacioneve, si listat, fushat e tekstit, tabelat, butonat ose madje edhe një shfletues i integruar i uebit.
  2. Ofruesit e përmbajtjes që menaxhojnë të dhënat që disa aplikacione i hapin të tjerëve në mënyrë që t'i përdorin ato për punën e tyre.
  3. Një menaxher i burimeve (Resource Manager) që siguron qasje në burime që nuk mbajnë kodin, siç janë të dhënat e vargut, grafika, skedarët dhe të tjerët.
  4. Menaxheri i Njoftimeve, përmes të cilit të gjitha aplikacionet mund të shfaqin njoftimet e tyre për përdoruesin në shiritin e statusit.
  5. Menaxheri i Aktiviteteve, i cili menaxhon ciklet e jetës së aplikacioneve, ruan të dhënat mbi historinë e punës me aktivitetet dhe gjithashtu siguron një sistem navigimi për ta.
  6. Menaxheri i vendndodhjes (menaxher i vendndodhjes), duke u lejuar aplikacioneve që periodikisht të marrin të dhëna të azhurnuara në vendndodhjen aktuale gjeografike të pajisjes.

Në majë të pllakës së programeve Android qëndron niveli i aplikacioneve (Aplikacionet). Kjo përfshin një sërë aplikacionet themelore, e cila është e parapërgatitur në sistemin operativ Android. Për shembull, ajo përfshin një shfletues, mail klient , program për dërgimin e SMS, harta, kalendari, menaxher i kontaktit dhe shumë të tjerë. Lista e aplikacioneve të integruara mund të ndryshojë në varësi të modelit të pajisjes dhe versioni i Android  . Përveç kësaj skede bazë, niveli i aplikacioneve përfshin të gjitha aplikacionet për platformën Android, përfshirë ato të instaluara nga përdoruesi.

Si rregull, aplikacionet Android janë shkruar në Java, por ka një mundësi për të zhvilluar programe në C / C ++ (duke përdorur Kit Zhvilluesin Native). Exotics mund të quhet duke përdorur Basic (duke përdorur Simple) dhe gjuhë të tjera. Ju gjithashtu mund të krijoni programet tuaja duke përdorur dizajnerët e aplikacioneve, të tilla si App Inventor.

1.6. Karakteristikat e kernelit

Kerneli është pjesa më e rëndësishme e sistemit operativ Linux, dhe ndryshe nga pjesët e tjera, ai u transferua pothuajse tërësisht në sistemin operativ Android. Megjithatë, në procesin e transferimit të rreth 250 patcheve u aplikuan në thelbin.

Në kernel të Android OS, u vendos që të braktisnin mjetet e komunikimit ndërprocesor të sistemit operativ Linux dhe në vend të kësaj krijonin një mekanizëm të vetëm të quajtur Binder. Binder ju lejon të thërrisni metodat e një procesi nga një proces tjetër, duke u dhënë argumente atyre dhe duke marrë rezultatin, ashtu si metodat quhen brenda të njëjtit proces. Binder e bën këtë punë me përdorim minimal të kujtesës.

Për të mundësuar debugging në pajisje të vogla, informacioni i debugging është shtuar në kernel. port serik  dhe zbatoi mbështetjen për komandën logcat.

Ndryshime të mëdha preku punën me kujtesë. Shpërndarja tradicionale e kujtesës së përbashkët Linux është zëvendësuar me ashmem. I njëjti problem, por në nivelin e kujtesës fizike, zgjidhet duke përdorur shoemistin pmem. Është shtuar një mbajtës i veçantë i kujtesës, i quajtur Viking Killer, në rastin më të thjeshtë, thjesht e vret procesin, por mund të vendosen rregulla më komplekse.

Cilësimet e reja të sigurisë janë shtuar në rafte të rrjetit; mbështetja e sistemit të skedarëve për disqet flash YAFFS2 është përfshirë në kernel.

1.7. Makinë Java Dalvik

Dalvik Virtual Machine është pjesë e platformës mobile Android. Është makinë virtualesponsorizuar nga Dan Bronstein. Ajo përhapet si software të lirë  sipas licencës Apache 2.0 me BSD. Në shumë mënyra, ky fakt ka luajtur një rol në zgjidhja google braktisni JME (Java Micro Edition), i cili do të duhet të marrë një licencë nga Sun. Prandaj, korporata, qëllimi i së cilës ishte krijimi i një sistemi operativ të hapur, krijoi makinën e vet virtuale.

Ndryshe nga shumica e makinave virtuale (e njëjta Java Virtual Machine) që janë të orientuar në rafte, Dalvik është i orientuar drejt regjistrit, i cili nuk mund të quhet një zgjidhje standarte. Nga ana tjetër, është shumë e përshtatshme për të punuar në procesorët e arkitekturës RISC, të cilat përfshijnë procesorë ARM, të cilat janë përdorur gjerësisht në pajisje të lëvizshmeah.

Dalvik u hartua posaçërisht për platformën Android. Fakti që platforma ndërton të gjitha proceset si të izoluara, secila që konkurron në hapësirën e saj të adresave, është marrë parasysh. Makinë virtuale   optimizuar për konsum të ulët të kujtesës dhe për të punuar në pajisje mobile. Duke filluar me Android 2.2., Dalvik përdor përpilimin e JIT (Just-in-Time). Si rezultat i këtyre karakteristikave, të shpejtë dhe produktiv makinë virtualeqë nuk mund të ndikojnë në funksionimin e aplikacionit në tërësi.

Dalvik përdor kodeksin e vet. Kur zhvilloni një aplikacion Android, ata janë përkthyer nga përpiluesi në një kod të veçantë të nivelit të veçantë të pavarur nga makina. Kur ekzekutohet në një platformë, Dalvik interpreton dhe ekzekuton një program të tillë.

Përveç kësaj, Dalvik është në gjendje të përkthejë bytecodes Java në kodet e formatit amë dhe gjithashtu t'i ekzekutojë ato në mjedisin e tij virtual. Kodi i programit është shkruar në Java, dhe pas përpilimit të çdo gjëje. skedarët e klasës konvertohen në formatin .dex (të përshtatshëm për interpretim në Dalvik) duke përdorur dx të veçantë të shërbimeve, të përfshira në Android SDK.

1.8. Bionic

Bionic është një bibliotekë standarde e gjuhës C e shpërndarë sipas licencës BSD (Berkeley Software Distribution? Sistemi i shpërndarjes program  në kodin burimor, krijuar për shkëmbimin e përvojave midis institucioneve arsimore) dhe të zhvilluara nga Google për Android. Në Bionic, ekzistojnë disa funksione POSIX jo Android që janë në dispozicion në implementimin e plotë të glibc.

Dallimet kryesore bionike:

  1. Licenca BSD: Android përdor kernelin Linux, i cili është nën licencën e përgjithshme publike GNU (GPL), por Google donte të izolonte aplikacionet Android nga efektet e GPL. GNU libc, i cili zakonisht përdoret me kernel Linux, është nën licencën GNU LGPL, si një alternativë ndaj uClibc.
  2. madhësia e vogël: Kodi bionik i objektit është shumë më i vogël (rreth 2 herë) se glibc dhe pak më i vogël se uclibc.
  3. bionik është projektuar për procesorë me shpejtësi relativisht të ulët të orës.
  4. një zbatim i shkurtuar por efektiv i temave POSIX.

1.9. Përmbledhje e Interfejsit të Programuesit të Aplikimit Java

Për programuesin e aplikacioneve Android - një sërë ndërfaqesh në gjuhën Java. Shqyrto se si është e organizuar. Në zemër të grupit janë paketat që janë të përfshira në standardin Java të gjuhës, të tilla si java.util, java.lang, java.io. Ata janë në çdo platformë ku zbatimet e Java mund të përdoren dhe nuk janë specifike për Android. Zgjerimet lidhen me to, të cilat nuk janë të përfshira në standardin e gjuhës, por de facto kanë qenë prej kohësh standarde - javax.net, pakot javax.xml.

Të përfshira edhe në Android më pak të zakonshme zgjerime Java   - package org.apache.http, zbatimi më i ngushtë i protokollit HTTP. Paketa org.json është përgjegjës për serializimin e objekteve JavaScript dhe mbështetjen e teknologjisë AJAX. Paketa org.w3c.dom siguron modelin e objektit të dokumentit

  • përkthim

Në këtë artikull do të shohim arkitekturën e aplikacioneve Android.

Sinqerisht, gjej Google zyrtare për këtë temë jo shumë të dobishme. Duke iu përgjigjur në detaje pyetjes "si", ajo nuk shpjegon fare se çfarë dhe pse. Pra, këtu është versioni im, dhe unë shpresoj se do të sjellë disa qartësi. Po, përkundrazi, unë e miratoj plotësisht leximin e artikujve të Google, sepse ato përmbajnë informata të dobishme, të cilat unë nuk kam ndërmend të përsëris.

Arkitektura e sistemit Android - pak histori

  Siç ndodh shpesh në IT, shumë gjëra nuk mund të shpjegohen në mënyrë të izoluar nga historia e shfaqjes së softuerit të veçantë. Kjo është arsyeja pse ne duhet të kthehemi në origjinën e sistemit Android.

Zhvillimi i sistemit Android u nis në vitin 2003 nga kompania e re Android Inc. Në vitin 2005, kjo kompani u ble nga Google. Unë besoj se karakteristikat kryesore të arkitekturës Android janë identifikuar gjatë kësaj periudhe. Kjo nuk është vetëm kredia e Android Inc; Konceptet arkitekturore dhe burimet financiare të Google kanë pasur një ndikim vendimtar në arkitekturën e Android. Tjetra do të jap disa shembuj.

Nëse ju kujtohet, 2003-2005 u shënua me rritjen e vëmendjes ndaj aplikacioneve AJAX. Unë mendoj se kjo kishte një ndikim thelbësor në arkitekturën e Android: në shumë aspekte është më afër arkitekturës së një aplikacioni tipik AJAX sesa në aplikacionin GUI desktop të shkruar në Java, C #, C + +, VB dhe kështu me radhë.

Nuk e di pse ndodhi kjo. Mendja ime ishte dikush nga Google që shpiku në një kohë kur aplikacionet e pasur të Internetit (Rich Internet Applications, RIA) në frymën e Google Docs ose Gmail u konsideruan si zgjidhje për të gjitha problemet. Sipas mendimit tim, kjo ide nuk mund të quhet as e mirë as e keqe. Vetëm mos harroni se aplikacionet Android janë shumë të ndryshme nga ato desktop.

Ndikimi i filozofisë arkitektonike të Eclipse është i dukshëm në zgjedhjen e parimit të zbatimit GUI, e cila është më shumë si SWT se Swing.

Në standardet për hartimin e kodit Android ekziston një "notacion hungarez", i lindur brenda mureve të MS. Mund të supozohet se personi i cili shkroi këto standarde ishte angazhuar më parë në zhvillimin nën Windows.

Nivelet e arkitekturës Android
  Sistemi operativ Android ka tre nivele shumë të ndryshme dhe shumë të ndara:
  1. Është e bazuar në një version të modifikuar dhe të shkurtohet të Linux, siç e përmenda në një nga artikujt e mi të mëparshëm.
  2. Mbi nivelin e Linux është shtresa e infrastrukturës së aplikacionit, e cila përmban makinën virtuale Dalvik, një shfletues web, një bazë të dhënash SQLite, disa paterica të infrastrukturës dhe një API Java.
  3. Dhe së fundi, niveli i aplikacioneve të shkruara Android me Google. Në përgjithësi, ato janë një zgjerim i nivelit të infrastrukturës, pasi zhvilluesi mund t'i përdorë këto aplikacione ose pjesë të tyre si blloqe ndërtimi për zhvillimin e tyre.
  Konsideroni këto shtresa një nga një dhe në më shumë detaje.

Niveli i Linux

  Imagjinoni që jeni arkitekt në një kompani të re. Ju duhet të zhvilloni një OS për një lloj të ri pajisjesh. Çfarë do të bëni?

Duke folur përreth, ju keni dy mënyra: të zbatoni idetë tuaja, duke filluar nga e para, ose të përdorni OS ekzistues dhe përshtateni atë me pajisjet tuaja.

Zbatimi nga e para gjithmonë tingëllon emocionuese për programuesit. Në këto momente, ne të gjithë besojmë se këtë herë ne do të bëjmë gjithçka më mirë se të tjerët, dhe madje edhe më mirë se ne që kemi bërë më parë.

Megjithatë, kjo nuk është gjithmonë praktike. Për shembull, përdorimi i kernelit Linux ka ulur ndjeshëm koston e zhvillimit (ndoshta diku tashmë tepër të madhe). Pajtohem, nëse dikush vendos të krijojë diçka që i ngjan kernelit Linux në gjendjen e tanishme, do të ketë nevojë për disa milionë dollarë.

Nëse jeni në krye të Android Inc, atëherë sipas përkufizimit ju nuk mund të keni aq shumë para. Nëse e drejtoni Google, atëherë do të gjeni atë lloj të parave, por ka shumë të ngjarë të mendoni dy herë para se të shpenzoni për krijimin e sistemit operativ tuaj. Ju gjithashtu do të kaloni disa vite para se të arrini gjendjen aktuale të Linux-it; disa vite vonesë mund të jetë tepër vonë për të hyrë në treg.

Në këtë situatë, Apple vendosi të ndërtojë një Mac OS bazuar në Free BSD. Android Inc vendosi të përdorë Linux si bazë për Android. Të dy burimet BSD dhe Linux janë në dispozicion të lirë dhe sigurojnë një bazë të mirë për çdo zhvillim, qoftë Apple apo Google.

Por në atë kohë ishte e pamundur të fillonte Linux standard në një pajisje mobile (tani kjo nuk është më kështu). Pajisjet kishin shumë pak RAM dhe memorie të paqëndrueshme. Procesorët ishin dukshëm më të ngadalshëm në krahasim me procesorët e kompjuterëve ku përdoret zakonisht Linux. Si rezultat, zhvilluesit e Android vendosën të minimizojnë kërkesat e sistemit  Linux.

Nëse ne e konsiderojmë Linuxin nivel të lartëatëherë është një kombinim i bërthamës (pa të cilën nuk mund të shmanget) dhe shumë pjesë të tjera opsionale. Mund të kryesh edhe një bazë, pa ndonjë gjë tjetër. Pra, Google është i detyruar në çdo rast të përdorë kernelin Linux si pjesë e sistemit operativ Android. Përveç kësaj, pjesët opsionale janë konsideruar dhe janë zgjedhur më të nevojshmet. Për shembull, u ngritën firewall i rrjetit IPTables dhe guaska e Ash. Është kureshtare që Ash ishte i shtuar, jo Bash, pavarësisht faktit se ky i fundit është një rend i madhësisë më i fuqishëm; ky vendim është bazuar ndoshta në faktin se Ash është më pak intensiv i burimeve.

Zhvilluesit e Android kanë modifikuar kernelin e Linux, duke shtuar mbështetjen për harduerin që përdoret në pajisjet celulare dhe, më shpesh, të paarritshëm në kompjuterë.

Zgjedhja e Linux si bazë ka pasur një ndikim të madh në të gjitha aspektet e sistemit operativ Android. Ndërtimi i Android, në fakt, është një variant i procesit të ndërtuar të Linux. Kodi Android  po drejton git (një mjet i projektuar për të menaxhuar kodin linux). Dhe kështu me radhë.

Le të jetë gjithçka interesante, por me siguri nuk do të prekni kurrë të gjitha këto momente specifike derisa qëllimi juaj është të zhvilloni aplikacione Android. Përjashtimi i vetëm mund të jetë një rishikim i sistemit të skedarëve duke përdorur komandat e hirit. Gjëja kryesore që duhet të dini gjatë zhvillimit të aplikacioneve për Android është niveli i infrastrukturës së aplikimit.

Ju mund të pyesni se si të jeni në qoftë se keni nevojë të zhvilloni një aplikacion Android të lindjes? Google e nxit fuqishëm këtë. Teknikisht, sigurisht, kjo është e mundur, por në të ardhmen nuk do të jeni në gjendje të shpërndani këtë aplikacion në mënyrë normale. Pra, mendoni dy herë para se të filloni zhvillimin Android amtare, përveç nëse sigurisht që jeni duke punuar në Open Source Project (AOSP), dmth. Android OS vetë.

Niveli i Infrastrukturës së Aplikimit

  Përkundër disa ngjashmërive Apple iOS  dhe Android OS, ekzistojnë dallime të konsiderueshme midis zgjidhjeve arkitekturore në nivelin e infrastrukturës të të dy OS.

Apple vendosi të përdorë Objektivi-C si një gjuhë programimi dhe mjedis runtime. aplikacionet iOS. Objektivi-C duket si një zgjedhje pak a shumë e natyrshme për një OS bazuar në Free BSD. Ju mund të mendoni për Objektivi-C si C + + rregullt me ​​një preprocessor me porosi që shton disa konstruksione të veçanta gjuhësore. Pse është e pamundur të përdorësh standarde C + + në të cilën është shkruar Free BSD? Mendoj se arsyeja është se Apple po përpiqet të bëjë gjithçka në stilin e saj "Apple".

Ideja themelore është se aplikacionet iOS janë shkruar më shumë ose më pak në të njëjtën gjuhë si OS pas tyre.

Aplikacionet Android janë shumë të ndryshme në këtë kuptim. Ato janë shkruar në Java, dhe kjo është një teknologji krejtësisht e ndryshme nga C + + (edhe pse sintaksë është trashëguar nga C + +).

Mendoj se arsyeja kryesore është se aplikacioni i njëjtë duhet të punojë në pajisje të ndryshme. Ky problem ndodh vetëm për Android OS; Djemtë nga Apple nuk kanë një problem të tillë. iOS punon vetëm në pajisjet e saj të prodhimit, dhe Apple plotësisht kontrollon tërë procesin. Për Android, e kundërta është e vërtetë: Google nuk kontrollon prodhuesit e pajisjeve. Për shembull, Android OS-i shkon në procesorët x86, ARM dhe Atom (në komentet, x86 përfshin Atom, dhe Android shkon në x86, ARM, PPC dhe MIPS - shënim i përkthyesit). Në nivelin binar, këto arkitektura janë të papajtueshme.

Nëse arkitektët e Android OS zgjodhën të njëjtën rrugë si arkitektët nga Apple, zhvilluesit e Android do të duhet të shpërndajnë disa versione të aplikacionit të njëjtë në të njëjtën kohë. Ky do të ishte një problem serioz që mund të çonte në rrëzimin e të gjithë projektit Android.

Në mënyrë që aplikacioni i njëjtë të punojë në harduer të ndryshëm, Google përdorte arkitekturën e bazuar në enë. Në këtë arkitekturë, kodi binar ekzekutohet nga një kontejner i softuerit dhe është i izoluar nga detajet e pajisjeve specifike. Shembujt janë të njohur për të gjithë - Java dhe C #. Në të dy gjuhët, kodi binar nuk varet nga hardueri specifik dhe ekzekutohet nga makina virtuale.

Sigurisht, ekziston një mënyrë tjetër për të arritur pavarësinë e harduerit në nivelin e kodit binar. Si një opsion, ju mund të përdorni një emulator hardware, i njohur edhe si QEMU. Kjo ju lejon të matni, për shembull, një pajisje me një procesor ARM në platformën x86 dhe kështu me radhë. Google mund të përdorë C ++ si një gjuhë për zhvillimin e aplikacioneve brenda emulatorëve. Në të vërtetë, Google e përdor këtë qasje në emuluesit e saj Android, të cilët janë të bazuara në QEMU.

Është shumë mirë që ata nuk e kanë ndjekur këtë rrugë, sepse atëherë dikush do të duhet të ekzekutojë sistemin operativ në një emulator, i cili kërkon më shumë burime dhe, si rezultat, shpejtësia e punës do të zvogëlohej. Për të arritur performancën më të mirë  emulimi u la vetëm kur nuk mund të shmanget, në rastin tonë në aplikacionet Android.

Sido që të jetë, Google ka vendosur të përdorë Java si gjuhë kryesore për zhvillimin e aplikacioneve dhe mjedisit të tyre.

Unë mendoj se kjo ishte një zgjidhje kritike arkitektonike që e vendosi Androidin nga pjesa tjetër e OS-ve mobile të bazuara në Linux që aktualisht janë në dispozicion. Me sa di unë, asnjëri prej tyre nuk ka pajtueshmëri binare në nivelin e aplikimit. Merrni për shembull MeeGo. Përdor C + + dhe kornizën Qt; Përkundër faktit se Qt është ndër-platformë, nevoja për të bërë ndërtime të ndryshme për platforma të ndryshme nuk zhduket.

Zgjedhja e Java, ju duhet të vendosni se cili makinë virtuale (JVM) duhet të përdorë. Për shkak të burimeve të kufizuara, përdorimi i standardeve JVM ishte i vështirë. E vetmja zgjidhje e mundshme ishte përdorimi i një JVM Java ME zhvilluar për pajisjet mobile. Megjithatë, lumturia e Google do të ishte e paplotë pa zhvillimin e makinës së vet virtuale dhe Dalvik VM u shfaq.

Dalvik VM ndryshon nga makinat e tjera virtuale Java në vijim:

  • Ai përdor një format të veçantë DEX për ruajtjen e kodeve binare, në krahasim me formatet JAR dhe Pack200, të cilat janë standardi për makinat e tjera virtuale Java. Google ka thënë se binarët DEX janë më të vogla se JAR. Unë mendoj se ata gjithashtu mund të kenë përdorur Pack200, por ata vendosën të shkonin vetë.
  • Dalvik VM është optimizuar për të drejtuar disa procese në të njëjtën kohë.
  • Dalvik VM përdor një arkitekturë të bazuar në regjistër kundër arkitekturës së stack në JVMs të tjera, gjë që çon në një rritje në shpejtësinë e ekzekutimit dhe një rënie në madhësinë e binareve.
  • Përdor grupin e vet të udhëzimeve (në vend të bytecode standard JVM).
  • Është e mundur të niset (nëse është e nevojshme) disa aplikacione të pavarura për Android në një proces.
  • Ekzekutimi i një aplikacioni mund të përfshijë proceset e shumta të Dalvik VM në një mënyrë "të natyrshme" (më vonë do të diskutojmë se çfarë do të thotë kjo). Për të mbështetur këtë, shtoi:
    • Një mekanizëm i serializimit të objekteve të veçanta të bazuara në parcelat dhe parcelat. Funksionalisht, ata ndjekin synimet e njëjta si Java Serializable, por si rezultat, të dhënat janë më të vogla dhe potencialisht më tolerante ndaj ndryshimeve të klasifikimit të versioneve.
    • Një mënyrë e veçantë për të bërë thirrje ndër-procesore (thirrje ndër procesi, IPC), bazuar në Android Interface Definition Language (AIDL).
  • Përpara Android 2.2, Dalvik VM nuk mbështeti përpilimin e JIT, e cila ishte një hit serioz i performancës. Duke filluar me versionin 2.2, shpejtësia e ekzekutimit të aplikacioneve të përdorura shpesh

    Në disa modele të tabletëve të bazuara në platformën Android, disa përbërës nga lista e mësipërme mund të mungojnë.

    Të gjitha tabletët "android" kontrollohen nga një nga versionet e sistemit operativ celular nga Google. Megjithatë, versionet e vjetra nuk mund të mbështesin disa nga aplikacionet moderne.

    Të gjitha versionet e sistemit operativ më popullor celular kanë një bazë të përbashkët. Ne mund ta imagjinojmë sistemin operativ Android si një strukturë me shumë shtresa. Inxhinierët e kompjuterëve e quajnë këtë stack software. Elementet në krye të pirgjeve janë ato që përdoruesi e sheh gjatë ndërveprimit të tij me sistemin operativ. Në pjesën e poshtme të pirgit janë ato pjesë të sistemit operativ që bashkëveprojnë drejtpërdrejt me harduerin e pajisjes.

    Pra, në nivelin më të ulët janë vetë komponentët e harduerit: procesorë, sensorë, tela dhe borde qarkore të shtypura. Shtresa tjetër është thelbi i sistemit operativ. Kerneli nganjëherë quhet edhe softuer i ngulitur (ose i pronarit). Njohur më së shumti është përkufizimi anglisht i "firmware". Ky softuer kontrollon burimet hardware të pajisjes, kontrollon ato dhe shpërndan ato.

    Kjo pjesë e sistemit operativ "përkthen" në gjuhën e komponentëve hardware ato komanda që përdoruesi i jep përmes një ndërfaqe grafike të përshtatshme. Kerneli i mostrës për Android është bërë sistem operativ  burim i hapur Linux 2.6.

    Bibliotekat Android janë të vendosura mbi kernelin e sistemit operativ. Ato janë grupe udhëzimesh që ndjek një pajisje në përpunimin e llojeve të ndryshme të të dhënave. Një shembull është biblioteka e orientimit në hapësirën tre-dimensionale. Ai përmban të gjitha udhëzimet që kërkon pajisja Android me qëllim njohjen e ndryshimeve në pozicionin e saj në hapësirë ​​dhe t'u përgjigjet atyre.

    Në të njëjtin nivel të rafikut të softuerit janë bibliotekat rrënjësore të nevojshme për të mbështetur aplikacionet e shkruara në gjuhën Java. Java është një gjuhë programimi nga Sun Microsystems. Kohët e fundit, telefonat me bazë Java kanë qenë shumë të zakonshme. Aktualisht, ata gjithnjë e më shumë po zëvendësohen nga smartphones.

    Makina virtuale Android është e vendosur në të njëjtin nivel të rafikut të softuerit të sistemit operativ. Kjo pjesë e softuerit po krijon një mjedis virtual operativ, i cili gjithashtu quhet një mjedis operativ virtual. Një makinë virtuale simulon një pajisje fizike me një sistem operativ të veçantë. Google ka dizajnuar këtë shtresë në mënyrë që çdo aplikacion që funksionon në sistemin operativ Android funksionon si një proces i veçantë. Kështu, nëse një nga proceset ekzistuese dështon, pjesa tjetër do të mbetet e paprekur. Makina virtuale gjithashtu luan rolin e një menaxher të kujtesës.

    Niveli tjetër është kuadri i aplikimit. Është baza për të gjitha aplikacionet "android". Infrastruktura e aplikimit është lidhja midis aplikacioneve dhe pjesës tjetër të sistemit operativ.

    Google rekomandon që zhvilluesit të krijojnë aplikacione që ndërveprojnë me këtë shtresë si pjesë e ndërfaqes së programimit të aplikacionit () të zhvilluar nga sistemi operativ gjigant i kërkimit. Zhvilluesit duhet vetëm të njihen me këto rregulla të lidhura me API. Ata nuk kanë nevojë të mendojnë specifikimet teknike  çdo tablet "android".

    Niveli më i lartë i rafikut të softuerit përmban ndërfaqen e përdoruesit dhe të gjitha aplikacionet e tabletit android. Kjo pjesë e sistemit operativ shihet vazhdimisht nga përdoruesi. Por prapa kësaj shtrese tërheqëse dhe të gjallë fsheh një shumë të mërzitshëm, dhe interesante vetëm për specialistët e kodit.

    Ashtu si çdo sistem tjetër operativ dhe burime të tjera hardware të tabletës.

    Bazuar në kompjuter.howstuffworks.com

# fakte Si funksionon Android?   Oleg Dovbnya