Documente Academic
Documente Profesional
Documente Cultură
Curs nr. 2
q Sisteme de operare
q sisteme de operare de uz general
q linux, windows, macOS
1
Arhitectura Android
Linux Kernel
2
Biblioteci
q Biblioteci
native C/C++
q Multe dintre componentele de bază și serviciile Android
(ART sau HAL) se bazează pe cod nativ scris în C sau C++.
q Platforma Android furnizează Java API pentru a expune
funcționalitățile unora dintre aceste biblioteci către
aplicații.
SRWDM Curs nr. 2 – 2022 – 2023 7
Biblioteci
Biblioteci
q Android Runtime
q >API Level 21 – fiecare aplicație rulează propriul său proces
cu propria sa instanță în Android RunTime (ART)
3
Java Framework
10
Systems Apps
11
Aplicații Android
q Dezvoltarea de aplicații: Android Studio, Android SDK
q Pot fi scrise folosind:
q Java
q Kotlin
q C/C++
q Android SDK: cod + date + resurse -> fișier arhivă (___.apk)
q Android package – conține toate resursele necesare pentru
instalarea aplicației
12
4
q AndroidManifest.xml:
q Numele pachetului aplicației (code namespace)
q Componentele aplicației
q Permisiunile
q Cerințele hardware și software pentru aplicație
13
14
15
5
Componentele unei aplicații Android: Activități
qO aplicație poate să aibă o activitate care arată o anumită
interfață și o altă activitate cu o interfață complet diferită.
q Dacă o aplicație are mai mult de o activitate, atunci una din ele
trebuie să fie marcată ca activitate implicită și să fie activată
atunci când este lansată în execuție aplicația respectivă.
q Exemplu: o aplicație pentru email poate avea
q o activitate care arată lista de email-uri
q o activitate pentru compunerea de e-mail-uri
q o activitate pentru citirea email-urilor
16
17
18
6
Componentele unei aplicații Android: Activități
19
20
21
7
Componentele unei aplicații Android: Fragmente
q Totuși, în timp ce o activitate rulează (ea este în starea
reluat) fiecare fragment poate fi manevrat independent
astfel încât poate fi adăugat sau șters.
q Când se realizează o astfel de tranzacție cu fragmente, un
fragment poate fi adăugat unei stive din fundal, stivă care
este gestionată de activitate – fiecare intrare este o
înregistrare a tranzacției care a fost făcută.
q Această stivă permite utilizatorului să execute în sens
invers tranzacțiile unui fragment (navigare în sens invers)
prin apăsarea butonului Back.
22
23
24
8
Componentele unei aplicații Android: Servicii
q De exemplu:
q un serviciu poate reda piese muzicale în timp ce utilizatorul
folosește o altă aplicație
q Un serviciu poate extrage date dintr-o rețea fără a bloca
interacțiunea utilizatorului cu o activitate
qO altă componentă, de exemplu o activitate, poate porni
serviciul și îl poate lăsa să ruleze sau poate să se lege la el
pentru a interacționa.
25
26
27
9
Componentele unei aplicații Android: Servicii
q Serviciile
sunt foarte flexibile și din acest motiv au devenit
elemente de bază diferite concepte ale sistemelor
q Exemplu:
q Live wallpaper
q Screen saver
q metode de introducere a datelor
q Servicii de accesibilitate
28
29
30
10
Componentele unei aplicații Android: Receptori
q Aplicațiile pot genera notificări
q De exemplu: informarea că anumite date au fost puse pe
dispozitiv și că sunt disponibile pentru pentru utilizare.
q Deși, receptori de notificări nu afișează o interfață
utilizator, ei pot crea o bară de stare (status bar) pentru
notificare pentru a anunța utilizatorul când are loc un
eveniment de notificare.
q Obișnuit, un receptor de notificări este doar o trecere spre
alte componente și se presupune că această componentă
realizează o cantitate minimală de operații.
31
32
33
11
Componentele unei aplicații Android: Furnizori
q Orice aplicație cu permisiunile necesare poate interoga
furnizorul de conținut, de exemplu: ContactContract.Data,
pentru a citi și scrie informații despre o anumită persoană.
q Este tentant de a ne gândi la un furnizor de conținut ca o
abstracție a unei baze de date, pentru că există o mulțime
de API-uri și suport inclus pentru baze de date pentru acest
caz comun.
34
35
36
12
Componentele unei aplicații Android: Furnizori
q Aceste URI furnizează un model de securitate foarte fin. De
exemplu, o aplicație poate pune URI pentru o imagine pe care o
are în clipboard, dar îl lasă pe furnizorul de conținut asociat
blocat, astfel încât alte aplicații să nu-l poată accesa. Când o a
doua aplicație încearcă să acceseze acel URI în clipboard, sistemul
poate permite ca acea aplicație să acceseze datele prin
intermediul unui grant temporar de permisiune URI astfel încât se
poate accesa acea dată numai în spatele acelui URI, dar nimic
altceva în cea de a doua aplicație.
37
38
39
13
Componentele unei aplicații Android: Furnizori
40
41
42
14
Componentele unei aplicații Android: Furnizori
q Estenevoie de propriul furnizor de conținut în următoarele
cazuri:
q Se dorește implementarea unor sugestii de căutare personalizată
în aplicație
q Când se dorește expunerea datelor aplicației pentru widgets
43
44
45
15
Componentele unei aplicații Android: Furnizori
q De notat că obiectele de tip CursorLoader se bazează pe
furnizorii de conținut pentru a rula interogări asincrone și
care apoi returnează rezultatele la stratul UI în aplicație.
46
47
1
APP1
3 Android System
Photo App
2
Take photo comp
48
16
Aplicații Android
q Fiecare aplicație Android – container (sandbox) protejat
de:
q SO android este un sistem Linux multi-user în care fiecare
aplicație este un user;
q Implicit, sistemul asignează fiecărei aplicații un user ID Linux unic
(ID este folosit numai de sistem și nu este știut de aplicație).
Sistemul setează permisiunile pentru toate fișierele din aplicație
astfel încât numai ID utilizatorului asignat acelei aplicații poate să
le acceseze
q Fiecare proces are propria mașină virtuală (VM) astfel încât o
aplicație se execută izolată de alte aplicații
49
Aplicații Android
q Implicit, fiecare aplicație rulează propriul său proces Linux.
Sistemul Android pornește procesul atunci când oricare din
componentele aplicației trebuie să fie executată și oprește
procesul atunci când acesta nu mai este necesar sau când
sistemul are nevoie de memorie pentru alte aplicații.
50
Aplicații Android
q Principiul privilegiului minim:
q Fiecare aplicație are acces numai la componentele cu care trebuie
să lucreze
q Se creează un mediu securizat în care o aplicație nu poate să
acceseze părți din sistem pentru care nu are permisiune de acces
51
17
Aplicații Android
q Dezvoltarea de aplicații cross-platform:
q Xamarin – folosește C# -> trebuie cumpărată licență de la
Microsoft pentru Visual Studio
q PhoneGap – dezvoltat de Adobe; folosește HTML5, CSS, Javascript
pentru dezvoltare de aplicații
q ReactNative – folosește puțină memorie, promovată de
Facebook; folosită de Walmart, Uber Eats, startup-uri și companii
mici.
q Flutter – dezvoltată de Google
52
Arhitectura iOS
53
Arhitectura iOS
q Este un sistem de operare *nix
q Este derivat din OS X
q Cocoa -> Cocoa touch: principala cale de a interfața o
aplicație cu iOS
q Are straturi similare cu platforma Android
54
18
Cocoa Touch
q Gestionează interfața utilizator
q Furnizează elementele de interfață (controale, widget)
q Furnizează acces la principalele funcții de sistem:
q Contacte, camera
q Primul loc de explorat pentru orice caracteristică a
aplicației
55
Media
q Bibliotecile grafice:
q Grafica de bază (Quartz), OpenGL, Metal, biblioteca de fotografii,
animații
q Audio
q Media player, OpenAL, elemente de bază audio
q AirPlay
56
Core Services
q Dă acces la resursele fundamentale cerute de o aplicație
q Construite pe Core Foundation și Foundation framework
q Bazele pentru NeXSTEP
q Networking, iCloud, Encryption, SQLite
q GPS, telefonie,SMS
q Facebook, Twitter
57
19
Core OS
q Bluetooth
q USB
q Operații kernel
58
Principalele componente
q Activități -> ViewController
q Intenții -> tranziții (Segues) prezentarea altor
ViewController-e
q Servicii -> „Background Mode” și apeluri de API-uri
specifice
q Furnizori de conținut -> CoreData
q Schema ecranului (layout) -> Storyboards și Scene
59
20