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
[SCS]Friloc: Retea de socializare bazata pe geolocalizare in timp real
[Curs Android] C02 - Aplicatii (IPW 2011)
1. 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
1 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
2. 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
2 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
3. 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
3 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
4. 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
4 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
5. 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
5 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
6. 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)
6 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
7. 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
7 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
8. Structura unui proiect Android
Surse
Resursele
Fisiere generate de ADT unui proiect
Fisiere RAW
Drawables
Structura &
metadata
proiectului
8 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
9. 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)
9 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
10. 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
10 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
11. 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!
11 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
12. Ciclu de viata al unei activitati (I)
12 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
13. Ciclu de viata al unei activitati (II)
13 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
14. 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").
}
14 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
15. 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.
}
}
15 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
16. 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.
16 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
17. Tasks and Back Stack (II)
17 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
18. Services
• Componenta a aplicatiilor Dalvik.
• Ruleaza in fundal (background).
• Destinata pentru procesare.
• In general, este mai stabila in timp.
• Trebuie declarat in Manifest.
18 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
19. 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.
19 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
20. Broadcast Receivers
• Componenta a aplicatiilor Dalvik.
• Receptioneaza anunturi generale cu informatii
publice:
– SCREEN_ON
– SCREEN_OFF
– BOOT_COMPLETED
– SHUTDOWN
• Trebuie declarati in Manifest.
20 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
21. Context (I)
• Generat de Dalvik la pornirea aplicatiei si pasat ca
parametru.
• Este definit de o clasa abstracta, extinsa de:
– Activity
– Service
– ContentProvider
– …
21 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
22. Context (II)
• Permite accesul la:
– mediul aplicatiei (environment)
– resurse si clase
– metode prin care putem
• porni activitati
• distribui Intent-uri
• recepta Intent-uri
22 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
23. 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.ht
• http://developer.android.com/guide/topics/providers/content-providers.html
23 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
24. Întrebări?
24 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea