Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
laboratoare:laborator01 [2016/02/26 06:25]
Andrei Roșu-Cojocaru
laboratoare:laborator01 [2017/02/20 20:54] (current)
Line 35: Line 35:
 |       ​1.1 ​       |     ​2 ​    ​| ​ 09.02.2009 ​  ​| ​                   |               | |       ​1.1 ​       |     ​2 ​    ​| ​ 09.02.2009 ​  ​| ​                   |               |
 |       ​1.0 ​       |     ​1 ​    ​| ​ 23.09.2008 ​  ​| ​                   |               | |       ​1.0 ​       |     ​1 ​    ​| ​ 23.09.2008 ​  ​| ​                   |               |
- 
-Android a fost lansat, ca sistem de operare în 2008. 
  
 Pentru identificarea versiunilor se folosesc, de regulă, trei sisteme: Pentru identificarea versiunilor se folosesc, de regulă, trei sisteme:
-  * numărul versiunii ​respectă formatul major.minor[.build],​ desemnând dacă modificările aduse sunt substanțiale sau reprezintă ajustări ale unor probleme identificate anterior; versiunea curentă este 6.0.1, lansată la sfârșitul anului 2015;+  * un număr, ce respectă formatul major.minor[.build],​ desemnând dacă modificările aduse sunt substanțiale sau reprezintă ajustări ale unor probleme identificate anterior; versiunea curentă este 6.0.1, lansată la sfârșitul anului 2015;
   * un nivel de API (același putând grupa un număr de mai multe versiuni), prin care se indică funcționalitățile expuse către programatori;​ versiunea curentă are nivelul de API 23;   * un nivel de API (același putând grupa un număr de mai multe versiuni), prin care se indică funcționalitățile expuse către programatori;​ versiunea curentă are nivelul de API 23;
   * o denumire, având un nume de cod inspirat din lumea dulciurilor;​ termenii respectivi încep cu inițiale care respectă ordinea alfabetică;​ versiunea curentă este Marshmellow.   * o denumire, având un nume de cod inspirat din lumea dulciurilor;​ termenii respectivi încep cu inițiale care respectă ordinea alfabetică;​ versiunea curentă este Marshmellow.
Line 49: Line 47:
 Arhitectura sistemului de operare Android cuprinde cinci secțiuni grupate pe patru niveluri: Arhitectura sistemului de operare Android cuprinde cinci secțiuni grupate pe patru niveluri:
  
-{{ :​laboratoare:​laborator01:​arhitecturaandroid.png?​nolink&​600 }}+{{ :​laboratoare:​laborator01:​android_architecture.png?​nolink&​600 }}
  
   - **Kernelul Linux** (cu unele modificări) conține driver-ele pentru diferitele componente hardware (ecran, cameră foto, tastatură, antenă WiFi, memorie flash, dispozitive audio), fiind responsabil cu gestiunea proceselor, memoriei, perifericelor (audio/​video,​ GPS, WiFi), dispozitivelor de intrare/​ieșire,​ rețelei și a consumului de energie; de asemenea, au fost implementate și unele îmbunătățiri:​   - **Kernelul Linux** (cu unele modificări) conține driver-ele pentru diferitele componente hardware (ecran, cameră foto, tastatură, antenă WiFi, memorie flash, dispozitive audio), fiind responsabil cu gestiunea proceselor, memoriei, perifericelor (audio/​video,​ GPS, WiFi), dispozitivelor de intrare/​ieșire,​ rețelei și a consumului de energie; de asemenea, au fost implementate și unele îmbunătățiri:​
-    * Binder, sistemul de comunicație inter-proces,​ a fost adaptat, întrucât reprezintă mediul de comunicație principal dintre aplicații și sistemul de operare, inclusiv funcțiile (serviciile) dispozitivului mobil; expunerea sa este realizată prin intermediul AIDL (Android Interface Definition Language) prin care pot fi manipulate obiecte transformate în primitive utilizate la comunicația propriu-zisă dintre aplicații și sistemul de operare); +    ​- **Binder**, sistemul de comunicație inter-proces,​ a fost adaptat, întrucât reprezintă mediul de comunicație principal dintre aplicații și sistemul de operare, inclusiv funcțiile (serviciile) dispozitivului mobil; expunerea sa este realizată prin intermediul AIDL (Android Interface Definition Language) prin care pot fi manipulate obiecte transformate în primitive utilizate la comunicația propriu-zisă dintre aplicații și sistemul de operare; 
- * Logger, sistemul de jurnalizare,​ este esențial în cazul în care trebuie realizată depanarea aplicațiilor,​ în special pentru a detecta anumite situații particulare (informații cu privire la rețea, senzori); acesta este capabil să agrege datele provenite atât de la aplicația propriu-zisă cât și de la sistemul de operare, datele fiind disponibile prin intermediul unor utilitare specializate;​ +    - **Logger**, sistemul de jurnalizare,​ este esențial în cazul în care trebuie realizată depanarea aplicațiilor,​ în special pentru a detecta anumite situații particulare (informații cu privire la rețea, senzori); acesta este capabil să agrege datele provenite atât de la aplicația propriu-zisă cât și de la sistemul de operare, datele fiind disponibile prin intermediul unor utilitare specializate;​ 
- * sistemul prin intermediul căruia se previne transferul sistemului de operare într-o stare de latență (//​eng.// ​wake locks), în care consumul de energie este redus, întrucât se blochează execuția oricărei aplicații; utilizarea unui astfel de mecanism trebuie realizată cu precauție, întrucât poate determina epuizarea bateriei; +    ​- ​sistemul prin intermediul căruia se previne transferul sistemului de operare într-o stare de latență (**wake locks**), în care consumul de energie este redus, întrucât se blochează execuția oricărei aplicații; utilizarea unui astfel de mecanism trebuie realizată cu precauție, întrucât poate determina epuizarea bateriei; 
- * sistemul de alarme oferă posibilitatea ca anumite sarcini să fie planificate la anumite momente de timp, putând fi executate, chiar dacă sistemul de operare se găsește într-o stare de latență;​ +    ​- ​sistemul de **alarme** oferă posibilitatea ca anumite sarcini să fie planificate la anumite momente de timp, putând fi executate, chiar dacă sistemul de operare se găsește într-o stare de latență;​ 
- * Viking Killer este un mecanism prin care sistemul de operare revendică memoria utilizată, atunci când nivelul acesteia atinge un anumit prag (aplicațiile Android care au fost rulate anterior sunt de regulă stocate în memorie pentru a se putea comuta rapid între ele, de vreme ce încărcarea în memorie este o operație costisitoare);​ +    - **Viking Killer** este un mecanism prin care sistemul de operare revendică memoria utilizată, atunci când nivelul acesteia atinge un anumit prag (aplicațiile Android care au fost rulate anterior sunt de regulă stocate în memorie pentru a se putea comuta rapid între ele, de vreme ce încărcarea în memorie este o operație costisitoare);​ 
- * YAFFS2 (Yet Another Flash File System) este un sistem de fișiere adecvat pentru cipuri flash bazate pe porți NAND; platforma Android este stocată pe mai multe partiții, ceea ce îi conferă flexibilitate la actualizări,​ împiedicând modificarea sa în timpul rulării (''/​boot''​ - conține secvența de pornire, ''/​system''​ - stochează fișierele de sistem și aplicațiile încorporate,​ ''/​recovery''​ - deține o imagine din care se poate restaura sistemul de operare, ''/​data''​ - include aplicațiile instalate și datele aferente acestora, ''/​cache''​ - utilizată pentru fișiere temporare, folosind memoria RAM, pentru acces rapid).+    - **YAFFS2** (Yet Another Flash File System) este un sistem de fișiere adecvat pentru cipuri flash bazate pe porți NAND; platforma Android este stocată pe mai multe partiții, ceea ce îi conferă flexibilitate la actualizări,​ împiedicând modificarea sa în timpul rulării (''/​boot''​ - conține secvența de pornire, ''/​system''​ - stochează fișierele de sistem și aplicațiile încorporate,​ ''/​recovery''​ - deține o imagine din care se poate restaura sistemul de operare, ''/​data''​ - include aplicațiile instalate și datele aferente acestora, ''/​cache''​ - utilizată pentru fișiere temporare, folosind memoria RAM, pentru acces rapid).
   - **Bibliotecile** (user-space) conțin codul care oferă principalele funcționalități a sistemului de operare Android, făcând legătura între kernel și aplicații. Sunt incluse aici motorul open-source pentru navigare WebKit, biblioteca FreeType pentru suportul seturilor de caractere, baza de date SQLite utilizată atât ca spațiu de stocare cât și pentru partajarea datelor specifice aplicațiilor,​ biblioteca libc (Bionic), ​ biblioteca de sistem C bazată pe BSD și optimizată pentru dispozitive mobile bazate pe Linux, biblioteci pentru redarea și înregistrarea de conținut audio/video (bazate pe OpenCORE de la PacketVideo),​ biblioteci SSL pentru asigurarea securității pe Internet și Surface Manager, bibliotecă pentru controlul accesului la sistemul de afișare care suportă 2D și 3D. Aceste biblioteci nu sunt expuse prin API, reprezentând detalii de implementare Android.   - **Bibliotecile** (user-space) conțin codul care oferă principalele funcționalități a sistemului de operare Android, făcând legătura între kernel și aplicații. Sunt incluse aici motorul open-source pentru navigare WebKit, biblioteca FreeType pentru suportul seturilor de caractere, baza de date SQLite utilizată atât ca spațiu de stocare cât și pentru partajarea datelor specifice aplicațiilor,​ biblioteca libc (Bionic), ​ biblioteca de sistem C bazată pe BSD și optimizată pentru dispozitive mobile bazate pe Linux, biblioteci pentru redarea și înregistrarea de conținut audio/video (bazate pe OpenCORE de la PacketVideo),​ biblioteci SSL pentru asigurarea securității pe Internet și Surface Manager, bibliotecă pentru controlul accesului la sistemul de afișare care suportă 2D și 3D. Aceste biblioteci nu sunt expuse prin API, reprezentând detalii de implementare Android.
   - **Motorul Android** rulează serviciile de platformă precum și aplicațiile care le utilizează,​ fiind reprezentat de:   - **Motorul Android** rulează serviciile de platformă precum și aplicațiile care le utilizează,​ fiind reprezentat de:
-    - ART (Android Runtime) este mașina virtuală Java care a fost implementată începând cu versiunea 5.0, folosind un tip de compilare AOH (Ahead of Time), în care bytecode-ul este transpus în cod mașină la momentul instalării,​ astfel încât acesta este executat direct de mediul dispozitivului mobil; compatibilitatea cu versiuni anterioare (care folosesc mașina virtuală Dalvik, ce se bazează pe un compilator JIT - Just in Time) este asigurată prin transformarea pachetelor în format .dex (Dalvik Executable) la momentul compilării,​ urmând ca translatarea în format .oat să se realizeze la momentul instalării;​ fiecare aplicație Android rulează în procesul propriu, într-o instanță a mașinii virtuale ART, izolând astfel codul și datele sale prin intermediul unor permisiuni, care se aplică inclusiv la comunicația prin intermediul interfețelor de comunicare oferite de sistemul de operare Android; +    - **ART (Android Runtime)** este mașina virtuală Java care a fost implementată începând cu versiunea 5.0, folosind un tip de compilare AOH (Ahead of Time), în care bytecode-ul este transpus în cod mașină la momentul instalării,​ astfel încât acesta este executat direct de mediul dispozitivului mobil; compatibilitatea cu versiuni anterioare (care folosesc mașina virtuală Dalvik, ce se bazează pe un compilator JIT - Just in Time) este asigurată prin transformarea pachetelor în format .dex (Dalvik Executable) la momentul compilării,​ urmând ca translatarea în format .oat să se realizeze la momentul instalării;​ fiecare aplicație Android rulează în procesul propriu, într-o instanță a mașinii virtuale ART, izolând astfel codul și datele sale prin intermediul unor permisiuni, care se aplică inclusiv la comunicația prin intermediul interfețelor de comunicare oferite de sistemul de operare Android; 
- - Zygote este procesul care gestionează toate aplicațiile,​ fiind lansat în execuție odată cu sistemul de operare: +    - **Zygote** este procesul care gestionează toate aplicațiile,​ fiind lansat în execuție odată cu sistemul de operare: 
-   * inițial, creează o instanță a mașinii virtuale Java pentru sistemul de operare Android, în contextul căreia plasează serviciile de bază: gestiunea energiei, telefonie, furnizori de conținut, gestiunea pachetelor, serviciul de localizare, serviciul de notificări;​ +      ​- ​inițial, creează o instanță a mașinii virtuale Java pentru sistemul de operare Android, în contextul căreia plasează serviciile de bază: gestiunea energiei, telefonie, furnizori de conținut, gestiunea pachetelor, serviciul de localizare, serviciul de notificări;​ 
-   * atunci când este necesar să lanseze în execuție o anumită aplicație, se clonează, partajând astfel componentele sistemului de operare Android, astfel încât să se asigure performanța (timp de execuție) și eficiența (memorie folosită), de vreme ce fiecare aplicație trebuie rulată în propria sa instanță a mașinii virtuale Java;+      ​- ​atunci când este necesar să lanseze în execuție o anumită aplicație, se clonează, partajând astfel componentele sistemului de operare Android, astfel încât să se asigure performanța (timp de execuție) și eficiența (memorie folosită), de vreme ce fiecare aplicație trebuie rulată în propria sa instanță a mașinii virtuale Java;
   - **Cadrul pentru Aplicații** expune diferitele funcționalități ale sistemului de operare Android către programatori,​ astfel încât aceștia să le poată utiliza în aplicațiile lor.   - **Cadrul pentru Aplicații** expune diferitele funcționalități ale sistemului de operare Android către programatori,​ astfel încât aceștia să le poată utiliza în aplicațiile lor.
   - La nivelul de **aplicații** se regăsesc atât produsele împreună cu care este livrat dispozitivul mobil (Browser, Calculator, Camera, Contacts, Clock, FM Radio, Launcher, Music Player, Phone, S Note, S Planner, Video Player, Voice Recorder), cât și produsele instalate de pe Play Store sau cele dezvoltate de programatori.   - La nivelul de **aplicații** se regăsesc atât produsele împreună cu care este livrat dispozitivul mobil (Browser, Calculator, Camera, Contacts, Clock, FM Radio, Launcher, Music Player, Phone, S Note, S Planner, Video Player, Voice Recorder), cât și produsele instalate de pe Play Store sau cele dezvoltate de programatori.
Line 964: Line 962:
 student@eim2016:​~$ git config --global merge.tool diff student@eim2016:​~$ git config --global merge.tool diff
 </​code>​ Verificarea valorii pe care o au variabilele de configurare poate fi realizată în mai multe moduri: <​code>​ </​code>​ Verificarea valorii pe care o au variabilele de configurare poate fi realizată în mai multe moduri: <​code>​
-student@eim2016:​~$ git cofig --list+student@eim2016:​~$ git config ​--list
 </​code>​ <​code>​ </​code>​ <​code>​
 student@eim2016:​~$ cat .git/config student@eim2016:​~$ cat .git/config
Line 975: Line 973:
   - Să se creeze un depozit pe contul Github creat, denumit '​Laborator01'​. Inițial, acesta trebuie să fie gol (nu trebuie să bifați nici adăugarea unui fișier ''​README.md'',​ nici a fișierului ''​.gitignore''​ sau a a fișierului ''​LICENSE''​).   - Să se creeze un depozit pe contul Github creat, denumit '​Laborator01'​. Inițial, acesta trebuie să fie gol (nu trebuie să bifați nici adăugarea unui fișier ''​README.md'',​ nici a fișierului ''​.gitignore''​ sau a a fișierului ''​LICENSE''​).
   - Să se cloneze în directorul de pe discul local conținutul depozitului la distanță de la [[https://​www.github.com/​eim2016/​Laborator01|]]. În urma acestei operații, directorul Laborator01 va trebui să se conțină un director ''​labtaks''​ care conține proiectele Eclipse și AndroidStudio denumite ''​MyFirstAndroidApplication'',​ fișierele ''​README.md''​ și ''​LICENSE''​ și un fișier ''​.gitignore''​ care indică tipurile de fișiere (extensiile) ignorate. <​code>​   - Să se cloneze în directorul de pe discul local conținutul depozitului la distanță de la [[https://​www.github.com/​eim2016/​Laborator01|]]. În urma acestei operații, directorul Laborator01 va trebui să se conțină un director ''​labtaks''​ care conține proiectele Eclipse și AndroidStudio denumite ''​MyFirstAndroidApplication'',​ fișierele ''​README.md''​ și ''​LICENSE''​ și un fișier ''​.gitignore''​ care indică tipurile de fișiere (extensiile) ignorate. <​code>​
-student@eim2016:​~$ git init 
 student@eim2016:​~$ git clone https://​www.github.com/​eim2016/​Laborator01.git student@eim2016:​~$ git clone https://​www.github.com/​eim2016/​Laborator01.git
 </​code>​ </​code>​
laboratoare/laborator01.1456460700.txt.gz · Last modified: 2017/02/20 20:43 (external edit)
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0