Android
Sistem, platformă, tipuri de aplicații
Drd. Ing. Alexandru RADOVICI
Bibliografie
1. Mark MURPHY, Beginning Android 2, Apress, 2010
2. Satya KOMATINENI, Sayed HASHIMI, Pro Android 2, Apress 2010
3. Android Application Fundamentals, http://developer.android.com/guide/topics/fundamentals.html
4. Google IO, http://code.google.com/intl/ro-RO/events/io/2010/
2
Google Android
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 pentruprogramare– 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
• 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
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
Schema Android
14
Facilități
• API pentru dezvoltarea de aplicații– Dalvik
• Browser integrat• Grafică
– 2D optimizată– 3D – OpenGL ES 1.0
• SQLite– Baza de date
• Support Multimedia– Audio / Video
• GSM• Conectivitate
– Bluetooth– WiFi– GPRS / EDGE / 3G
• Sezori– Aparat foto– GPS / AGPS– Magnetometru– Accelerometru
• Platformă de dezvoltare– Linie de comandă– Eclipse
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țiileDalvik
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
• Extinde clasa Service
– Serviciu simplu• void onCreate ();
• void onStart (Intent intent,
int startID);
• void onDestroy ();
– Folosind AIDL• void onBind (Intent intent);
• void onUnbind();
28
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
Baze de conținut / Receptori
• Baze de conținut
– Oferire de informații
– Legătură cu SQLite
– Bazate pe URL-uri
• Receptori
– Observatori
– Sunt informați despre evenimente publice• SCREEN_ON
• SCREEN_OFF
• BATTER_STATUS_CHANGED
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
XML Cod Jave
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