Sunteți pe pagina 1din 44

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/f
undamentals.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 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

• 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 • 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
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

• 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 • 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
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

S-ar putea să vă placă și