[curs android] c02 - aplicatii (ipw 2011)

24
1 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea Android Securitate, Aplicatii, Manifest, Structura, Resurse, Componente, Context Vlad PETRE vlad@vladpetre.com http://twitter.com/vladpetre88 http://facebook.com/vladpetre88 http://www.linkedin.com/in/ vladpetre88

Upload: vlad-petre

Post on 05-Dec-2014

1.615 views

Category:

Education


2 download

DESCRIPTION

These slides are part of the Android Development Course which I taught to 10 students, while participating in the IP Workshop Summer School 2011. http://www.scoaladevara.info/2011/?page_id=39

TRANSCRIPT

Page 1: [Curs Android] C02 - Aplicatii (IPW 2011)

1 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

AndroidSecuritate, Aplicatii, Manifest, Structura,

Resurse, Componente, Context

Vlad PETRE

[email protected]

http://twitter.com/vladpetre88

http://facebook.com/vladpetre88

http://www.linkedin.com/in/vladpetre88

Page 2: [Curs Android] C02 - Aplicatii (IPW 2011)

2 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Securitatea Aplicatiilor (I)• Implementata in kernelul Linux:

– Sistem de fisiere ext3 (ext4 incepand cu 2.3)– Fiecare aplicatie ruleaza sub un alt utilizator Linux

• Determinat de semnatura digitala a aplicatiei

– Utilizatorii pot scrie doar in directorul lor– Pot scrie in:

• /data/<package_name>/• /sdcard/

– Valabil pentru orice tip de aplicatie Android• Standard Dalvik / AJAX / NDK

Page 3: [Curs Android] C02 - Aplicatii (IPW 2011)

3 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Securitatea Aplicatiilor (II)• Implementata in bibliotecile Android:

– Pe baza de permisiuni declarate in Manifest– Permite accesul la functiile telefonului:

• Retea• Aparat Foto• GPS• Internet

– Utilizatorul este informat la instalare – Functioneaza doar pentru aplicatiile normale Dalvik

Page 4: [Curs Android] C02 - Aplicatii (IPW 2011)

4 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Aplicatiile Dalvik (I)• Scrise in limbajul orientat obiect Java• Uneltele din SDK compileaza codul Java, impreuna

cu alte fisiere resursa necesare, intr-un pachet Android *.apk

• Un pachet apk este o aplicatie Android• Fiecare aplicatie traieste in propriul spatiu de

memorie virtualizat – sandboxing• Fiecare aplicatie ruleaza in cadrul propriului ei

proces Linux

Page 5: [Curs Android] C02 - Aplicatii (IPW 2011)

5 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Aplicatiile Dalvik (II)• Nu exista main() • Formate din diferite componente ce exista ca niste

entitati separate, cu un rol bine definit:– Activitati - Activities– Servicii - Services– Furnizorii de Continut – Content Providers– Receptorii de Difuzare – Broadcast Receivers

Page 6: [Curs Android] C02 - Aplicatii (IPW 2011)

6 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Semnatura Digitala• Fiecare pachet apk trebuie semnat pentru a putea fi

instalat pe telefon• In functie de utilizare, semnaturile digitale sunt de

doua tipuri:– Pentru dezvoltare

• Generata de SDK-ul Android

– Pentru productie (publicarea pe Android Market)• Autosemnata• Autentica - reprezinta autorul aplicatiei (persoana fizica /

companie / organizatie)

Page 7: [Curs Android] C02 - Aplicatii (IPW 2011)

7 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Fisier APK• Un pachet apk este o arhiva ZIP, similar pachetelor JAR.• Un pachet apk reprezinta o aplicatie Android• Contine:

– Executabilul Dalvik .dex– Resurse

• Imagini• Fisiere XML

– Fisierul cu informatii Manifest

Page 8: [Curs Android] C02 - Aplicatii (IPW 2011)

8 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Structura unui proiect Android

Structura & metadata proiectului

Surse

Fisiere generate de ADT

Drawables

Resursele unui proiect

Fisiere RAW

Page 9: [Curs Android] C02 - Aplicatii (IPW 2011)

9 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Resursele unui proiect• anim/ - fisiere xml ce descriu animatii de obiecte• color/ - fisiere xml ce descriu culori• drawable/ - fisiere bitmap de tip PNG, JPEG, GIF sau de tip XML ce

descriu forme de obiecte Drawable sau stari pentru butoane.• layout/ - fisiere xml ce descriu layout-ul vizual• menu/ - fisere xml ce descriu meniuri• raw/ - pentru fisiere raw• values/ - fisiere xml ce pot descrie valori utile aplicatiei voastre• xml/ - pentru alte fisiere xml (e.g. cele ce descriu un

PreferenceScreen)

Page 10: [Curs Android] C02 - Aplicatii (IPW 2011)

10 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Fisierul AndroidManifest.xml• Descrie informatii esentiale despre aplicatie:

– Defineste pachetul Java al aplicatiei – trebuie sa fie unic!– Descrie componentele aplicatiei (activitati, servicii, etc)– Declara permisiunile necesare aplicatiei (Internet, GPS, etc)– Declara nivelul minim de API necesar functionarii aplicatiei– Listeaza bibliotecile necesare rularii aplicatiei (e.g.

com.google.android.maps)– Specifica tipurile de ecrane suportate

Page 11: [Curs Android] C02 - Aplicatii (IPW 2011)

11 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Activities• Componenta a aplicatiilor Dalvik.• O activitate reprezinta un singur ecran cu o singura interfata

pentru utilizator.• Desi activitatile conclucreza pentru a cea o experienta

coeziva, ele sunt totusi independente.• Trebuie declarate in Manifest!• Nu este penru procesare multa!

– Daca devine unresponsive, sistemul va cere permisinea utilizatorului sa o inchida!

Page 12: [Curs Android] C02 - Aplicatii (IPW 2011)

12 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Cicl

u de

via

ta a

l une

i acti

vita

ti (I)

Page 13: [Curs Android] C02 - Aplicatii (IPW 2011)

13 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Cicl

u de

via

ta a

l une

i acti

vita

ti (II

)

Page 14: [Curs Android] C02 - Aplicatii (IPW 2011)

14 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Metode de callback (I)• public class ExampleActivity extends Activity {

@Override public void onCreate (Bundle savedInstanceState) { super.onCreate(savedInstanceState); // The activity is being created. // Obligatoriu sa fie declarata } @Override protected void onStart() { super.onStart(); // The activity is about to become visible. } @Override protected void onResume() { super.onResume(); // The activity has become visible (it is now "resumed"). }

Page 15: [Curs Android] C02 - Aplicatii (IPW 2011)

15 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Metode de callback (II)• @Override

protected void onPause() { super.onPause(); // Another activity is taking focus (this activity is about to be "paused"). } @Override protected void onStop() { super.onStop(); // The activity is no longer visible (it is now "stopped") } @Override protected void onDestroy() { super.onDestroy(); // The activity is about to be destroyed. }}

Page 16: [Curs Android] C02 - Aplicatii (IPW 2011)

16 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Tasks and Back Stack (I)• Un task este o colectie de activitati cu care utilizatorul

interactioneaza la un moment dat.• Activitatile sunt aranjate sub forma de stiva, in ordinea in care

au fost pornite• HomeScreen-ul reprezinta punctul de plecare• La atingerea unei iconite din HomeScreen sau Launcher, taskul

aplicatiei respective este adus in foreground sau este creat.• Un task nu mai exista cand toate activitatile sunt eliberate din

stiva.

Page 17: [Curs Android] C02 - Aplicatii (IPW 2011)

17 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Tasks and Back Stack (II)

Page 18: [Curs Android] C02 - Aplicatii (IPW 2011)

18 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Services• Componenta a aplicatiilor Dalvik.• Ruleaza in fundal (background).• Destinata pentru procesare.• In general, este mai stabila in timp.• Trebuie declarat in Manifest.

Page 19: [Curs Android] C02 - Aplicatii (IPW 2011)

19 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Content Providers• Componenta a aplicatiilor Dalvik.• Baze de continut pentru oferirea de informatii.• Singura modalitate prin care aplicatiile pot paraja date.• Trebuie declarati in Manifest.• Bazate pe URI-uri

– e.g. content://android.provider.Contacts.Phones.CONTENT_URI

• Ex: Android pune la dispozitie un ContentProvider ce gestioneaza contactele utilizatorului.

Page 20: [Curs Android] C02 - Aplicatii (IPW 2011)

20 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Broadcast Receivers• Componenta a aplicatiilor Dalvik.• Receptioneaza anunturi generale cu informatii

publice:– SCREEN_ON– SCREEN_OFF– BOOT_COMPLETED– SHUTDOWN

• Trebuie declarati in Manifest.

Page 21: [Curs Android] C02 - Aplicatii (IPW 2011)

21 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Context (I)• Generat de Dalvik la pornirea aplicatiei si pasat ca

parametru.• Este definit de o clasa abstracta, extinsa de:

– Activity– Service– ContentProvider– …

Page 22: [Curs Android] C02 - Aplicatii (IPW 2011)

22 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Context (II)• Permite accesul la:

– mediul aplicatiei (environment)– resurse si clase– metode prin care putem

• porni activitati• distribui Intent-uri• recepta Intent-uri

Page 23: [Curs Android] C02 - Aplicatii (IPW 2011)

23 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Referinţe• http://pdm.ipworkshop.ro• http://developer.android.com/guide/publishing/app-signing.html• http://developer.android.com/guide/topics/fundamentals.html• http://developer.android.com/guide/developing/projects/index.html• http://developer.android.com/guide/topics/manifest/manifest-intro.html• http://developer.android.com/guide/topics/resources/index.html• http://developer.android.com/guide/topics/fundamentals/activities.html• http://developer.android.com/guide/topics/fundamentals/tasks-and-back-

stack.html• http://developer.android.com/guide/topics/providers/content-

providers.html

Page 24: [Curs Android] C02 - Aplicatii (IPW 2011)

24 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

Întrebări?