SlideShare ist ein Scribd-Unternehmen logo
1 von 24
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

Weitere ähnliche Inhalte

Andere mochten auch

[Curs Android] C07 - Liste (IPW 2011)
[Curs Android] C07 - Liste (IPW 2011)[Curs Android] C07 - Liste (IPW 2011)
[Curs Android] C07 - Liste (IPW 2011)Vlad Petre
 
[Curs Android] C01 - Introducere (IPW 2011)
[Curs Android] C01 - Introducere (IPW 2011)[Curs Android] C01 - Introducere (IPW 2011)
[Curs Android] C01 - Introducere (IPW 2011)Vlad Petre
 
Android N is now Android Nougat
Android N is now Android NougatAndroid N is now Android Nougat
Android N is now Android NougatAppinventiv
 
Code Division Multiple Access- CDMA
Code Division Multiple Access- CDMA Code Division Multiple Access- CDMA
Code Division Multiple Access- CDMA ViVek Patel
 
Android seminar-presentation
Android seminar-presentationAndroid seminar-presentation
Android seminar-presentationconnectshilpa
 
Presentation on Android operating system
Presentation on Android operating systemPresentation on Android operating system
Presentation on Android operating systemSalma Begum
 

Andere mochten auch (9)

[Curs Android] C07 - Liste (IPW 2011)
[Curs Android] C07 - Liste (IPW 2011)[Curs Android] C07 - Liste (IPW 2011)
[Curs Android] C07 - Liste (IPW 2011)
 
[Curs Android] C01 - Introducere (IPW 2011)
[Curs Android] C01 - Introducere (IPW 2011)[Curs Android] C01 - Introducere (IPW 2011)
[Curs Android] C01 - Introducere (IPW 2011)
 
Ppt on android
Ppt on androidPpt on android
Ppt on android
 
Android N is now Android Nougat
Android N is now Android NougatAndroid N is now Android Nougat
Android N is now Android Nougat
 
Code Division Multiple Access- CDMA
Code Division Multiple Access- CDMA Code Division Multiple Access- CDMA
Code Division Multiple Access- CDMA
 
Android seminar-presentation
Android seminar-presentationAndroid seminar-presentation
Android seminar-presentation
 
Android ppt
Android pptAndroid ppt
Android ppt
 
Presentation on Android operating system
Presentation on Android operating systemPresentation on Android operating system
Presentation on Android operating system
 
Android ppt
Android ppt Android ppt
Android ppt
 

Ähnlich wie [Curs Android] C02 - Aplicatii (IPW 2011)

[Curs Android] C10 - Threaduri & Servicii (IPW 2011)
[Curs Android] C10 - Threaduri & Servicii (IPW 2011)[Curs Android] C10 - Threaduri & Servicii (IPW 2011)
[Curs Android] C10 - Threaduri & Servicii (IPW 2011)Vlad Petre
 
[Curs Android] C04 - User Interface (IPW 2011)
[Curs Android] C04 - User Interface (IPW 2011)[Curs Android] C04 - User Interface (IPW 2011)
[Curs Android] C04 - User Interface (IPW 2011)Vlad Petre
 
[Curs Android] C06 - DDMS & LogCat (IPW 2011)
[Curs Android] C06 - DDMS & LogCat (IPW 2011)[Curs Android] C06 - DDMS & LogCat (IPW 2011)
[Curs Android] C06 - DDMS & LogCat (IPW 2011)Vlad Petre
 
[Curs Android] C09 - Stocarea Datelor (IPW 2011)
[Curs Android] C09 - Stocarea Datelor (IPW 2011)[Curs Android] C09 - Stocarea Datelor (IPW 2011)
[Curs Android] C09 - Stocarea Datelor (IPW 2011)Vlad Petre
 
Limbajul java
Limbajul javaLimbajul java
Limbajul javaCromina
 
Cu codul în "nori"
Cu codul în "nori"Cu codul în "nori"
Cu codul în "nori"Sabin Buraga
 

Ähnlich wie [Curs Android] C02 - Aplicatii (IPW 2011) (7)

[Curs Android] C10 - Threaduri & Servicii (IPW 2011)
[Curs Android] C10 - Threaduri & Servicii (IPW 2011)[Curs Android] C10 - Threaduri & Servicii (IPW 2011)
[Curs Android] C10 - Threaduri & Servicii (IPW 2011)
 
[Curs Android] C04 - User Interface (IPW 2011)
[Curs Android] C04 - User Interface (IPW 2011)[Curs Android] C04 - User Interface (IPW 2011)
[Curs Android] C04 - User Interface (IPW 2011)
 
[Curs Android] C06 - DDMS & LogCat (IPW 2011)
[Curs Android] C06 - DDMS & LogCat (IPW 2011)[Curs Android] C06 - DDMS & LogCat (IPW 2011)
[Curs Android] C06 - DDMS & LogCat (IPW 2011)
 
[Curs Android] C09 - Stocarea Datelor (IPW 2011)
[Curs Android] C09 - Stocarea Datelor (IPW 2011)[Curs Android] C09 - Stocarea Datelor (IPW 2011)
[Curs Android] C09 - Stocarea Datelor (IPW 2011)
 
Limbajul java
Limbajul javaLimbajul java
Limbajul java
 
Cu codul în "nori"
Cu codul în "nori"Cu codul în "nori"
Cu codul în "nori"
 
Proiect
ProiectProiect
Proiect
 

Mehr von Vlad Petre

SSD pe intelesul tuturor!
SSD pe intelesul tuturor!SSD pe intelesul tuturor!
SSD pe intelesul tuturor!Vlad Petre
 
The 3-D Secure Protocol
The 3-D Secure ProtocolThe 3-D Secure Protocol
The 3-D Secure ProtocolVlad Petre
 
Founding a startup. DOs and DON'Ts.
Founding a startup. DOs and DON'Ts.Founding a startup. DOs and DON'Ts.
Founding a startup. DOs and DON'Ts.Vlad Petre
 
[Curs Android] C05 - Emulator (IPW 2011)
[Curs Android] C05 - Emulator (IPW 2011)[Curs Android] C05 - Emulator (IPW 2011)
[Curs Android] C05 - Emulator (IPW 2011)Vlad Petre
 
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizareDiploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizareVlad Petre
 
Diploma Presentation: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Presentation: Friloc - Retea de socializare bazata pe geolocalizareDiploma Presentation: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Presentation: Friloc - Retea de socializare bazata pe geolocalizareVlad Petre
 
Eneco: Energy Economy
Eneco: Energy EconomyEneco: Energy Economy
Eneco: Energy EconomyVlad Petre
 
Kickstart Project: Android+Restlet+Hibernate+PostgreSQL
Kickstart Project: Android+Restlet+Hibernate+PostgreSQLKickstart Project: Android+Restlet+Hibernate+PostgreSQL
Kickstart Project: Android+Restlet+Hibernate+PostgreSQLVlad Petre
 
[SCS]Friloc - Scientific Paper
[SCS]Friloc - Scientific Paper[SCS]Friloc - Scientific Paper
[SCS]Friloc - Scientific PaperVlad Petre
 
Critica asupra lucrarii Proactive Computing
Critica asupra lucrarii Proactive ComputingCritica asupra lucrarii Proactive Computing
Critica asupra lucrarii Proactive ComputingVlad Petre
 
Critica asupra Singularitatii lui Vernor Vinge
Critica asupra Singularitatii lui Vernor VingeCritica asupra Singularitatii lui Vernor Vinge
Critica asupra Singularitatii lui Vernor VingeVlad Petre
 
Aplicare Filtre pe Imagini
Aplicare Filtre pe ImaginiAplicare Filtre pe Imagini
Aplicare Filtre pe ImaginiVlad Petre
 
Voicenger - Software Architecture Document
Voicenger - Software Architecture DocumentVoicenger - Software Architecture Document
Voicenger - Software Architecture DocumentVlad Petre
 
Voicenger - Software Design Document
Voicenger - Software Design DocumentVoicenger - Software Design Document
Voicenger - Software Design DocumentVlad Petre
 
Voicenger - System Requirements Specification
Voicenger - System Requirements SpecificationVoicenger - System Requirements Specification
Voicenger - System Requirements SpecificationVlad Petre
 
SIM Project: Optimizing a Benchmarking Tool
SIM Project: Optimizing a Benchmarking ToolSIM Project: Optimizing a Benchmarking Tool
SIM Project: Optimizing a Benchmarking ToolVlad Petre
 
Optimizarea metodelor de sortare SIMD pentru GPU-uri NVIDIA
Optimizarea metodelor de sortare SIMD pentru GPU-uri NVIDIAOptimizarea metodelor de sortare SIMD pentru GPU-uri NVIDIA
Optimizarea metodelor de sortare SIMD pentru GPU-uri NVIDIAVlad Petre
 
The Bluetooth Protocol
The Bluetooth ProtocolThe Bluetooth Protocol
The Bluetooth ProtocolVlad Petre
 
[SCS]Friloc: Retea de socializare bazata pe geolocalizare in timp real
[SCS]Friloc: Retea de socializare bazata pe geolocalizare in timp real[SCS]Friloc: Retea de socializare bazata pe geolocalizare in timp real
[SCS]Friloc: Retea de socializare bazata pe geolocalizare in timp realVlad Petre
 

Mehr von Vlad Petre (20)

SSD pe intelesul tuturor!
SSD pe intelesul tuturor!SSD pe intelesul tuturor!
SSD pe intelesul tuturor!
 
The 3-D Secure Protocol
The 3-D Secure ProtocolThe 3-D Secure Protocol
The 3-D Secure Protocol
 
Founding a startup. DOs and DON'Ts.
Founding a startup. DOs and DON'Ts.Founding a startup. DOs and DON'Ts.
Founding a startup. DOs and DON'Ts.
 
[Curs Android] C05 - Emulator (IPW 2011)
[Curs Android] C05 - Emulator (IPW 2011)[Curs Android] C05 - Emulator (IPW 2011)
[Curs Android] C05 - Emulator (IPW 2011)
 
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizareDiploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare
 
Diploma Presentation: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Presentation: Friloc - Retea de socializare bazata pe geolocalizareDiploma Presentation: Friloc - Retea de socializare bazata pe geolocalizare
Diploma Presentation: Friloc - Retea de socializare bazata pe geolocalizare
 
Eneco: Energy Economy
Eneco: Energy EconomyEneco: Energy Economy
Eneco: Energy Economy
 
Kickstart Project: Android+Restlet+Hibernate+PostgreSQL
Kickstart Project: Android+Restlet+Hibernate+PostgreSQLKickstart Project: Android+Restlet+Hibernate+PostgreSQL
Kickstart Project: Android+Restlet+Hibernate+PostgreSQL
 
[SCS]Friloc - Scientific Paper
[SCS]Friloc - Scientific Paper[SCS]Friloc - Scientific Paper
[SCS]Friloc - Scientific Paper
 
Critica asupra lucrarii Proactive Computing
Critica asupra lucrarii Proactive ComputingCritica asupra lucrarii Proactive Computing
Critica asupra lucrarii Proactive Computing
 
Critica asupra Singularitatii lui Vernor Vinge
Critica asupra Singularitatii lui Vernor VingeCritica asupra Singularitatii lui Vernor Vinge
Critica asupra Singularitatii lui Vernor Vinge
 
Aplicare Filtre pe Imagini
Aplicare Filtre pe ImaginiAplicare Filtre pe Imagini
Aplicare Filtre pe Imagini
 
Voicenger - Software Architecture Document
Voicenger - Software Architecture DocumentVoicenger - Software Architecture Document
Voicenger - Software Architecture Document
 
Voicenger - Software Design Document
Voicenger - Software Design DocumentVoicenger - Software Design Document
Voicenger - Software Design Document
 
Voicenger - System Requirements Specification
Voicenger - System Requirements SpecificationVoicenger - System Requirements Specification
Voicenger - System Requirements Specification
 
SIM Project: Optimizing a Benchmarking Tool
SIM Project: Optimizing a Benchmarking ToolSIM Project: Optimizing a Benchmarking Tool
SIM Project: Optimizing a Benchmarking Tool
 
Optimizarea metodelor de sortare SIMD pentru GPU-uri NVIDIA
Optimizarea metodelor de sortare SIMD pentru GPU-uri NVIDIAOptimizarea metodelor de sortare SIMD pentru GPU-uri NVIDIA
Optimizarea metodelor de sortare SIMD pentru GPU-uri NVIDIA
 
Nvidia Tegra
Nvidia TegraNvidia Tegra
Nvidia Tegra
 
The Bluetooth Protocol
The Bluetooth ProtocolThe Bluetooth Protocol
The Bluetooth Protocol
 
[SCS]Friloc: Retea de socializare bazata pe geolocalizare in timp real
[SCS]Friloc: Retea de socializare bazata pe geolocalizare in timp real[SCS]Friloc: Retea de socializare bazata pe geolocalizare in timp real
[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