4. Platforma Android
• Android
– Sistem de operare
– Platforma
• Tipuri de aplicații
– Activități
– Servicii
– Baze de conținut
– Intenții
– Receptori
4
5. NU doar un sistem de operare
• Radio Firmware
– Sistemul de telefonie
• GSM/CDMA / UMTS
• Linux
– Kernel 2.6.36
• Android Cupcake (2.1)
– Optimizat pentru ARM
• Biblioteci User Space
– Bionic
– SQLite
– WebKit
• Platformă pentru aplicații
5
7. Kernel
• Sistemul de operare
• Nu se vede
• Mașina extinsă
– Abstractizare a hardware-ului
• Conține driver-ele
• Gestionarea
– Proceselor
– Perifericelor
• Audio
• Video
• GPS
• WiFi
– Intrare/Ieșire
– Stiva de rețea
7
8. Kernel - Optimizări
• Gestionare de memorie
– Fară swap
– Sistem de inchidere de
aplicații la nevoie
• Gestionarea consumului
– WAIT_LOCK
• IPC specific
– Binder
• AIDL
• Apeluri sincron între procese
8
10. Biblioteci User Space
• Biblioteci pentru
programare
– Fac legărura între kernel
și program
– Afișare pe ecran
• printf (…)
• scanf (…)
– Acces la rețea
• socket (…)
• Bionic
– Libc pentru Android
10
11. Biblioteci User Space
• SQlite
• WebKit
• Surfaces
• FreeType
• Media Framework
• OpenGL|ES
• SSL
• …
11
12. Dalvik - Android Runtime
• Mașină virtuala (Java)
– Java 1.5 SE
• Aproximativ
• Lipsesc
– AWT / Swing
– Imprimare
– Alte componente speciale
– Optimizată pentru mobile
• Spațiu mic de memorie
• Colectare de gunaoie rapidă
– Format de fișiere diferit
• .class -> .dex
• Compilator JIT
12
13. Bibliotecile Android
• Pentru Dalvik
– Nu sunt biblioteciile user
space!
• Scrise în Java
• Access la funcțiile
telefonului
– Telefonie
– Mesaje
– Senzori
• Servicii
– Manager de ferestre
– Manager Audio
13
15. Facilități
• API pentru dezvoltarea de • Sezori
aplicații – Aparat foto
– Dalvik – GPS / AGPS
• Browser integrat – Magnetometru
• Grafică – Accelerometru
– 2D optimizată • Platformă de dezvoltare
– 3D – OpenGL ES 1.0 – Linie de comandă
• SQLite – Eclipse
– Baza de date
• Support Multimedia
– Audio / Video
• GSM
• Conectivitate
– Bluetooth
– WiFi
– GPRS / EDGE / 3G
15
16. Posibilități de programare
• Dalvik (Aplicație)
– În Java
– Viteză medie
– Acces la multe biblioteci
• AJAX
– În Browser (WebKit)
– Lent
– Programare JavaScript
• Native Development Kit (NDK)
– C/C++
– Număr limitat de biblioteci
– Rapid
– Suport JNI
– Nerecomandat
• Beta
• C/C++ (direct pe sistem)
16
17. Securitatea Aplicațiilor
• Implmentată in kernel
– Politica din Linux
• Sistem de fișiere ext3
• Utilizatorii pot scrie doar în
directorul lor
– Fiecare aplicație rulează sub alt
utilizator
• Determinat de semnătura digitală!
• Grupuri de permisiuni
• Verificare subsitemul de rețea
– Poate scrie în
• /data/nume.pachet.aplicație/
• /SDCard/
– Funcționează pentru orice tip de
apliucație
• Dalvik / AJAX / NDK / C/C++
17
18. Securitatea Aplicațiilor
• Implmentată in bibliotecile Android
– Drepturi (Permission)
• Declarate de aplicație în Manifest
• Access la funcțiile telefonului
– Rețea
– Telefon / mesaje
– Aparat foto
– GPS
• Access la componentele altei aplicații
– Drepturi impuse de aplicația respectivă
– Utilizatorul va fi avertizat la instalare
– Funcționează doar pentru aplicațiile
Dalvik
18
19. Programe (Dalvik)
• Nu exista main()
• Formate din componente
– Activiăți
– Servicii
– Intenții
– Baze de conținut
– Receptori de evenimente
• Componentele pot rula
separat
19
20. Aplicație (Dalvik)
• Fișier APK
– JAR nearhivat
• Componente
– Fișier .dex
• Resurse
– Imagini
– Fișiere XML
• Manifest
– Fișier de informații
– Semnătura digitala
• Pentru dezvoltare
• Pentru producție
– Autentică
– Autosemnată
20
22. Task (aplicație cu interfață grafică)
• Rulează într-un process
– în general!
– există excepții
• Stivă de activități
– Activitate rădăcină
• Root activity
– Adăugarea
• Afișare
• push
– Ștergerea
• Ascundere
• pop
– Activiăți din altă aplicație
22
23. Task (aplicație cu interfață grafică)
• Rulează într-un process
– în general!
– există excepții
• Stivă de activități
– Activitate rădăcină
• Root activity
– Adăugarea
• Afișare
• push
– Ștergerea
• Ascundere
• pop
– Activiăți din altă aplicație
23
26. Activitatea
• Fereastră
• Supraviețuiește
procesului
– Serializarea
– Parțial controlată de
programator
• Nu este pentru
procesare multă
26
27. Servicii
• Componentă Android
• Specială pentru
procesare
• Rulează în fundal
(background)
• Proces
– Prioritate mai mică
– Mai stabil (în timp)
27
29. Implmentarea unui serviciu
1. Extinderea clasei Service
– Implmentarea funcțiilor
– Crearea unor fire de execuție
2. Declararea în manifest
3. Pornirea / oprirea
– startService (…)
– stopService (…)
29
30. Baze de conținut / Receptori
• Baze de conținut • Receptori
– Oferire de informații – Observatori
– Legătură cu SQLite – Sunt informați despre
– Bazate pe URL-uri evenimente publice
• SCREEN_ON
• SCREEN_OFF
• BATTER_STATUS_CHANGED
30
31. Dezvoltare
• Android SDK
– Compilator DEX
– Simulator
– Programe pentru depanare
• Eclipse
– Plugin Android
• Telefon Android
– Preferabil cu drept de root
31
32. Simulator vs. Telefon Real
• Simulator
– Real
• Bootează Linux
– Diferite versiuni
• 1.5
• 1.6
• 2.1
– Se pornește separat!
• Telefon real
– USB Debugging
• Applications/Developent
32
39. Exemplu de fișier GUI XML
• xmlns:android
– Doar componenta rădăcină
– necesar
• android:layout_width
• android:layout_height
– necesare
– Valori
• fill_parent
• wrap_content
• n px
• n cm
39
40. Exemplu de fișier GUI XML
• android:id
– Utilizarea componentei
în codul Java
– @+id/nume
• R.id.nume
– Exemplu
• @+id/button1
– R.id.button1
40
42. Concluzii
• Paltforma Android
– Sistem de operare Linux
– Biblioteci de programare Android
• Modalități de programare
– Dalvik – Java
– AJAX – Web
– NDK – C/C++
• Aplicațiile Dalvik sunt compuse din componente
– Activități
– Servicii
– Intenții
– Baze de conșinut
– Receptori de enimente
– Nu există main()
• Simulator real
• Task - Aplicațiile cu interfață grafică
– Compuse din Activități
• Supraviețuiesc procesului
42