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
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
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
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
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
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
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
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
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
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
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
Ciclu de viata al unei activitati (I)




     12                                 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Ciclu de viata al unei activitati (II)




      13                                 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").
           }

14                              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.
             }
         }


15                                 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.



16                     Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Tasks and Back Stack (II)




17      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.




18                    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.


19                      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.

20                  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
        –   …




21                      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




22                         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.ht
     •   http://developer.android.com/guide/topics/providers/content-providers.html




23                        Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Întrebări?


24   Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

[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 proiectAndroid 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 viataal unei activitati (I) 12 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  • 13.
    Ciclu de viataal 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 BackStack (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 BackStack (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