3
Platforma Android
• Android
– Sistem de operare
– Platforma
• Tipuri de aplicații
– Activități
– Servicii
– Baze de conținut
– Intenții
– Receptori
4
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
Schema Android
6
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
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
Gestiunea consumului de putere
9
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
Biblioteci User Space
• SQlite
• WebKit
• Surfaces
• FreeType
• Media Framework
• OpenGL|ES
• SSL
• …
11
Dalvik - Android Runtime
• 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
Schema Android
14
Facilități
15
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
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
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
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
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
Componentele aplicației
21
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
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
Activitatea
24
Funcții importante
• Clasa Activity
– void onCreate (…);
– void onStart (…);
– void onRestart (…);
– void onResume (…);
– void onPause (…);
– void onStop (…);
– void onDestroy (…);
• Trebuie apelate funcțiile
și funcțiile din părinte
– super.onCreate (…);
–… 25
Activitatea
• Fereastră
• Supraviețuiește
procesului
– Serializarea
– Parțial controlată de
programator
• Nu este pentru
procesare multă
26
Servicii
• Componentă Android
• Specială pentru
procesare
• Rulează în fundal
(background)
• Proces
– Prioritate mai mică
– Mai stabil (în timp)
27
Implementarea serviciilor
28
Implmentarea unui serviciu
29
Baze de conținut / Receptori
30
Dezvoltare
• Android SDK
– Compilator DEX
– Simulator
– Programe pentru depanare
• Eclipse
– Plugin Android
• Telefon Android
– Preferabil cu drept de root
31
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
Depanare - DDMS
33
Scheletul unei aplicații
• AndroidManifest.xml
• build.xml
• default.properties
• bin
– fișierele compilate
• res
– drawable
– layout
– values
• assets
– resurse
• src
– fișierele sursă
34
Resurse Automate în cod Java
• Drawable
– Imagini
– R.drawable.nume
• R.drawable.icon
• R.drawable.img1
• R.drawable.img2
• Layout
– Containere
– R.layout.nume
• R.layout.main
• R.layout.people
35
Resurse Automate în XML
• Drawable
– Imagini
– @drawable/nume
• @drawable/icon
• @drawable/img1
• @drawable/img2
• Layout
– Containere
– @layout/nume
• @layout/main
• @layout/people
36
Construcția GUI cu XML
• Componentă complexă
• Cod simplu
• Fără cod Java
• În codul activității
– this.setContentView (R.layout.nume);
37
Exemplu de fișier GUI XML
38
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
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
Exemplu de fișier GUI XML
41
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
Application Inventor
43
Întrebări
44