Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
laboratoare:laborator01 [2016/02/26 04:27]
Andrei Roșu-Cojocaru
laboratoare:laborator01 [2017/02/20 20:54] (current)
Line 1: Line 1:
 ====== Laborator 01. Introducere în Programarea Android ====== ====== Laborator 01. Introducere în Programarea Android ======
- 
-===== Materiale Ajutătoare ===== 
- 
-  * [[http://​pdsd2015.andreirosucojocaru.ro/​_media/​laboratoare/​laborator01/​pdsd2015-lab01-slides.pdf|pdsd2015-lab01-slides.pdf]] 
-  * [[http://​pdsd2015.andreirosucojocaru.ro/​_media/​laboratoare/​laborator01/​pdsd2015-lab01-slides-3pp.pdf|pdsd2015-lab01-slides-3pp.pdf]] 
  
 ===== Sistemul de Operare Android ===== ===== Sistemul de Operare Android =====
Line 40: Line 35:
 |       ​1.1 ​       |     ​2 ​    ​| ​ 09.02.2009 ​  ​| ​                   |               | |       ​1.1 ​       |     ​2 ​    ​| ​ 09.02.2009 ​  ​| ​                   |               |
 |       ​1.0 ​       |     ​1 ​    ​| ​ 23.09.2008 ​  ​| ​                   |               | |       ​1.0 ​       |     ​1 ​    ​| ​ 23.09.2008 ​  ​| ​                   |               |
 +
 +Pentru identificarea versiunilor se folosesc, de regulă, trei sisteme:
 +  * un număr, ce respectă formatul major.minor[.build],​ desemnând dacă modificările aduse sunt substanțiale sau reprezintă ajustări ale unor probleme identificate anterior; versiunea curentă este 6.0.1, lansată la sfârșitul anului 2015;
 +  * un nivel de API (același putând grupa un număr de mai multe versiuni), prin care se indică funcționalitățile expuse către programatori;​ versiunea curentă are nivelul de API 23;
 +  * o denumire, având un nume de cod inspirat din lumea dulciurilor;​ termenii respectivi încep cu inițiale care respectă ordinea alfabetică;​ versiunea curentă este Marshmellow.
 +
 +În momentul în care se ia decizia cu privire la versiunea pentru care se dezvoltă o aplicație Android, trebuie avute în vedere și cotele de piață ale dispozitivelor mobile. Dezvoltarea unei aplicații Android pentru cea mai nouă versiune are avantajul de a se putea utiliza cele mai noi funcționalități expuse prin API. Dezvoltarea unei aplicații Android pentru cea mai veche versiune are avantajul unei adresabilități pe scară largă. Un compromis în acest sens poate fi obținut prin intermediul **bibliotecilor de suport**, dezvoltate pentru fiecare versiune, prin intermediul cărora pot fi utilizate la niveluri de API mai mici funcționalități din niveluri de API mai mari (în limita capabilităților dispozitivului mobil respectiv). Utilizarea acestora reprezintă o practică recomandată în dezvoltarea aplicațiilor Android.
  
 ==== Arhitectura Android ==== ==== Arhitectura Android ====
Line 45: Line 47:
 Arhitectura sistemului de operare Android cuprinde cinci secțiuni grupate pe patru niveluri: Arhitectura sistemului de operare Android cuprinde cinci secțiuni grupate pe patru niveluri:
  
-{{ :​laboratoare:​laborator01:​arhitecturaandroid.png?​nolink&​600 }}+{{ :​laboratoare:​laborator01:​android_architecture.png?​nolink&​600 }}
  
-  - **Kernelul Linux** (cu unele modificări) conține driver-ele pentru diferitele componente hardware (ecran, cameră foto, tastatură, antenă WiFi, memorie flash, dispozitive audio), fiind responsabil cu gestiunea proceselor, memoriei, perifericelor (audio/​video,​ GPS, WiFi), dispozitivelor de intrare/​ieșire,​ rețelei și a consumului de energie.+  - **Kernelul Linux** (cu unele modificări) conține driver-ele pentru diferitele componente hardware (ecran, cameră foto, tastatură, antenă WiFi, memorie flash, dispozitive audio), fiind responsabil cu gestiunea proceselor, memoriei, perifericelor (audio/​video,​ GPS, WiFi), dispozitivelor de intrare/​ieșire,​ rețelei și a consumului de energie; de asemenea, au fost implementate și unele îmbunătățiri:​ 
 +    - **Binder**, sistemul de comunicație inter-proces,​ a fost adaptat, întrucât reprezintă mediul de comunicație principal dintre aplicații și sistemul de operare, inclusiv funcțiile (serviciile) dispozitivului mobil; expunerea sa este realizată prin intermediul AIDL (Android Interface Definition Language) prin care pot fi manipulate obiecte transformate în primitive utilizate la comunicația propriu-zisă dintre aplicații și sistemul de operare; 
 +    - **Logger**, sistemul de jurnalizare,​ este esențial în cazul în care trebuie realizată depanarea aplicațiilor,​ în special pentru a detecta anumite situații particulare (informații cu privire la rețea, senzori); acesta este capabil să agrege datele provenite atât de la aplicația propriu-zisă cât și de la sistemul de operare, datele fiind disponibile prin intermediul unor utilitare specializate;​ 
 +    - sistemul prin intermediul căruia se previne transferul sistemului de operare într-o stare de latență (**wake locks**), în care consumul de energie este redus, întrucât se blochează execuția oricărei aplicații; utilizarea unui astfel de mecanism trebuie realizată cu precauție, întrucât poate determina epuizarea bateriei; 
 +    - sistemul de **alarme** oferă posibilitatea ca anumite sarcini să fie planificate la anumite momente de timp, putând fi executate, chiar dacă sistemul de operare se găsește într-o stare de latență;​ 
 +    - **Viking Killer** este un mecanism prin care sistemul de operare revendică memoria utilizată, atunci când nivelul acesteia atinge un anumit prag (aplicațiile Android care au fost rulate anterior sunt de regulă stocate în memorie pentru a se putea comuta rapid între ele, de vreme ce încărcarea în memorie este o operație costisitoare);​ 
 +    - **YAFFS2** (Yet Another Flash File System) este un sistem de fișiere adecvat pentru cipuri flash bazate pe porți NAND; platforma Android este stocată pe mai multe partiții, ceea ce îi conferă flexibilitate la actualizări,​ împiedicând modificarea sa în timpul rulării (''/​boot''​ - conține secvența de pornire, ''/​system''​ - stochează fișierele de sistem și aplicațiile încorporate,​ ''/​recovery''​ - deține o imagine din care se poate restaura sistemul de operare, ''/​data''​ - include aplicațiile instalate și datele aferente acestora, ''/​cache''​ - utilizată pentru fișiere temporare, folosind memoria RAM, pentru acces rapid).
   - **Bibliotecile** (user-space) conțin codul care oferă principalele funcționalități a sistemului de operare Android, făcând legătura între kernel și aplicații. Sunt incluse aici motorul open-source pentru navigare WebKit, biblioteca FreeType pentru suportul seturilor de caractere, baza de date SQLite utilizată atât ca spațiu de stocare cât și pentru partajarea datelor specifice aplicațiilor,​ biblioteca libc (Bionic), ​ biblioteca de sistem C bazată pe BSD și optimizată pentru dispozitive mobile bazate pe Linux, biblioteci pentru redarea și înregistrarea de conținut audio/video (bazate pe OpenCORE de la PacketVideo),​ biblioteci SSL pentru asigurarea securității pe Internet și Surface Manager, bibliotecă pentru controlul accesului la sistemul de afișare care suportă 2D și 3D. Aceste biblioteci nu sunt expuse prin API, reprezentând detalii de implementare Android.   - **Bibliotecile** (user-space) conțin codul care oferă principalele funcționalități a sistemului de operare Android, făcând legătura între kernel și aplicații. Sunt incluse aici motorul open-source pentru navigare WebKit, biblioteca FreeType pentru suportul seturilor de caractere, baza de date SQLite utilizată atât ca spațiu de stocare cât și pentru partajarea datelor specifice aplicațiilor,​ biblioteca libc (Bionic), ​ biblioteca de sistem C bazată pe BSD și optimizată pentru dispozitive mobile bazate pe Linux, biblioteci pentru redarea și înregistrarea de conținut audio/video (bazate pe OpenCORE de la PacketVideo),​ biblioteci SSL pentru asigurarea securității pe Internet și Surface Manager, bibliotecă pentru controlul accesului la sistemul de afișare care suportă 2D și 3D. Aceste biblioteci nu sunt expuse prin API, reprezentând detalii de implementare Android.
-  - **Motorul Android** ​este reprezentat de: +  - **Motorul Android** ​rulează serviciile de platformă precum și aplicațiile care le utilizează,​ fiind reprezentat de: 
-    - un set de **biblioteci de bază** care permit utilizatorilor să dezvolte aplicații Android folosind limbajul de programare ​Java; acestea includ acces la funcțiile telefonului (telefonie, mesaje, resurse, locații), interfața cu utilizatorul, furnizori ​de conținut și gestiunea pachetelor ​(instalare, securitate) +    - **ART (Android Runtime)** este mașina virtuală Java care a fost implementată începând ​cu versiunea 5.0, folosind un tip de compilare AOH (Ahead of Time), în care bytecode-ul este transpus în cod mașină la momentul instalării, astfel încât acesta este executat direct ​de mediul dispozitivului mobil; compatibilitatea cu versiuni anterioare (care folosesc mașina virtuală Dalvik, ce se bazează pe un compilator JIT - Just in Time) este asigurată prin transformarea pachetelor în format ​.dex (Dalvik Executable) la momentul compilării, urmând ca translatarea în format .oat să se realizeze ​la momentul instalării; fiecare aplicație Android rulează în procesul propriu, într-o instanță a mașinii virtuale ART, izolând astfel codul și datele sale prin intermediul unor permisiuni, care se aplică inclusiv la comunicația prin intermediul interfețelor ​de comunicare oferite de sistemul de operare Android; 
-    ​- **mașina virtuală (Java) Dalvik** este optimizată special pentru Android (dispozitive mobile alimentate de o baterie, resurse ​de procesare ​și de memorie limitate, sistem de operare fără swap). Arhitectura sa se bazează pe regiștri, fiind echipată cu un compilator JIT (just-in-time), executabilul obținut putând fi modificat când este instalat pe dispozitivul mobil. Întrucât este utilizată o bibliotecă proprie ce pornește de la un subset al implementării Java realizată de Apache Harmony, nu sunt conținute pachetele pentru AWT / Swing, imprimare sau alte componente speciale. Prin urmare, deși de poate utiliza versiunea curentă de Java (7) pentru dezvoltarea ​aplicației, facilitățile ce pot fi folosite sunt limitate aproximativ la versiunea 6. Bytecode-ul este compilat în fișiere .dex - Dalvik Executable (în loc de .class), datele duplicate provenind din clase diferite (șiruri ​de caractere, alte constante) fiind incluse ​o singură dată, motiv pentru care un astfel de fișier necomprimat va avea o dimensiune mai mică decât o arhivă .jar (comprimată). De asemenea, se permite ca fiecare aplicație ​Android să ruleze ​în procesul propriu, într-o ​instanță a mașinii virtuale ​Dalvik.+    - **Zygote** este procesul care gestionează toate aplicațiile, fiind lansat în execuție odată cu sistemul de operare: 
 +      ​- inițial, creează o instanță a mașinii virtuale Java pentru sistemul de operare Android, ​în contextul căreia plasează serviciile ​de bază: gestiunea energiei, telefonie, furnizori ​de conținut, gestiunea pachetelor, serviciul de localizare, serviciul de notificări;​ 
 +      - atunci când este necesar să lanseze în execuție ​o anumită aplicație, se clonează, partajând ​astfel ​componentele sistemului ​de operare Android, astfel încât să se asigure performanța ​(timp de execuție) și eficiența (memorie folosită), de vreme ce fiecare aplicație ​trebuie rulată în propria sa instanță a mașinii virtuale ​Java;
   - **Cadrul pentru Aplicații** expune diferitele funcționalități ale sistemului de operare Android către programatori,​ astfel încât aceștia să le poată utiliza în aplicațiile lor.   - **Cadrul pentru Aplicații** expune diferitele funcționalități ale sistemului de operare Android către programatori,​ astfel încât aceștia să le poată utiliza în aplicațiile lor.
-  - La nivelul de **aplicații** se regăsesc atât produsele împreună cu care este livrat dispozitivul mobil (Calculator,​ Camera, Contacts, Clock, FM Radio, Music Player, S Note, S Planner, Video Player, Voice Recorder), cât și produsele instalate de pe Play Store sau cele dezvoltate de programatori.+  - La nivelul de **aplicații** se regăsesc atât produsele împreună cu care este livrat dispozitivul mobil (Browser, ​Calculator, Camera, Contacts, Clock, FM Radio, Launcher, Music Player, Phone, S Note, S Planner, Video Player, Voice Recorder), cât și produsele instalate de pe Play Store sau cele dezvoltate de programatori.
  
 ==== Funcționalități Android ==== ==== Funcționalități Android ====
Line 76: Line 86:
 ==== Android vs. iPhone ==== ==== Android vs. iPhone ====
  
-Piața de telefoane inteligente este dominată de Android (care - potrivit estimărilor - își va menține supremația până ​îm 2018), cu 81.2% (peste un miliard de dispozitive vândute) pe întreg anul 2014, în ciuda revenirii spectaculoase a Apple odată cu lansarea Iphone 6 în luna septembrie, reușind să ajungă astfel la 15%, la nivel mondial. În privința tabletelor, Apple devansează de departe orice producător Android (având o cotă de piață de 33.8%), înregistrând însă o scădere cu 14.6% față de anul precedent, fapt ce reflectă de fapt întregul segment reprezentat de astfel de produse (Lenovo fiind singura excepție, cu o creștere a vânzărilor de 43.5% față de 2013).+Piața de telefoane inteligente este dominată de Android (care - potrivit estimărilor - își va menține supremația până ​în 2018), cu 82.8% (peste un miliard de dispozitive vândute) pe întreg anul 2015, în timp ce Apple deține doar 13.9%, la nivel mondial.
  
-În 2014, numărul de aplicații disponibile pentru platforma Android le-a depășit pe cele destinată dispozitivelor Apple (1.5 milioane, comparativ cu 1.25 milioane). Și în privința numărului de descărcări Android se află în fața Apple cu aproximativ 25%. Totuși, politica de distribuție a aplicațiilor(faptul că aplicațiile iPhone pot fi instalate numai prin intermediul App Store, în timp ce Android pune la dispoziție mai multe posibilități - Play Store, Amazon App Store, prin conexiune USB de la calculator, prin email sau prin pagina Internet a organizației),​ la care se adaugă numărul mare de programe gratuite și posibilitatea de piratare mai ușoară se traduce prin încasările obținute, Apple generând un profit mult mai mare din aplicații decât Google (cifrele oficiale nu sunt disponibile încă). O altă explicație a acestei situații este dată și de potența financiară a posesorilor de produse Apple (valoarea unui iPhone fiind de aproximativ 600$) față de puterea de cumpărare a persoanelor ce dețin un telefon Android (al cărui preț mediu este de 200-300$), existând o corespondență directă cu disponibilitatea de a achiziționa aplicații. De asemenea, statisticile arată că utilizatorii Apple își folosesc mult mai intens dispozitivele pentru accesarea de conținut Internet decât cei cumpărătorii de produse echipate cu Android.+În 2015, numărul de aplicații disponibile pentru platforma Android le-a depășit pe cele destinată dispozitivelor Apple (1.6 milioane, comparativ cu 1.5 milioane). Și în privința numărului de descărcări Android se află în fața Apple cu aproximativ 25%. Totuși, politica de distribuție a aplicațiilor (faptul că aplicațiile iPhone pot fi instalate numai prin intermediul App Store, în timp ce Android pune la dispoziție mai multe posibilități - Play Store, Amazon App Store, prin conexiune USB de la calculator, prin email sau prin pagina Internet a organizației),​ la care se adaugă numărul mare de programe gratuite și posibilitatea de piratare mai ușoară se traduce prin încasările obținute, Apple generând un profit mult mai mare din aplicații decât Google (cifrele oficiale nu sunt disponibile încă). O altă explicație a acestei situații este dată și de potența financiară a posesorilor de produse Apple (valoarea unui iPhone fiind de aproximativ 600$) față de puterea de cumpărare a persoanelor ce dețin un telefon Android (al cărui preț mediu este de 200-300$), existând o corespondență directă cu disponibilitatea de a achiziționa aplicații. De asemenea, statisticile arată că utilizatorii Apple își folosesc mult mai intens dispozitivele pentru accesarea de conținut Internet decât cei cumpărătorii de produse echipate cu Android.
  
 Aplicațiile destinate dispozitivelor mobile reprezintă un segment extrem de productiv al economiei, doar vânzările din AppStore depășind încasările obținute din producția de filme de la Holywood. Ca tematică, cele mai multe aplicații aparțin domeniului social (jocuri, fotografie, muzică, aplicații culinare, stil de viață), urmate de cele destinate gestionării unor segmente ale unor afaceri. Aplicațiile destinate dispozitivelor mobile reprezintă un segment extrem de productiv al economiei, doar vânzările din AppStore depășind încasările obținute din producția de filme de la Holywood. Ca tematică, cele mai multe aplicații aparțin domeniului social (jocuri, fotografie, muzică, aplicații culinare, stil de viață), urmate de cele destinate gestionării unor segmente ale unor afaceri.
  
-În privința limbajului de programare utilizat pentru dezvoltarea de aplicații mobile, iPhone folosește **Objective-C**,​ similar cu C++, care nu se bucură însă de o răspândire prea largă (cu excepția aplicațiilor pentru iPhone), în timp ce Android utilizează **Java** (limbajul de programare cel mai adoptat pe scară largă în cadrul corporațiilor) dar și **C/C++**, prin care se pot apela (cu o oarecare dificultate) aplicații native, prin suport JNI (numărul bibliotecilor disponibile în cazul C/C++ este mai redus decât în Java, însă viteza aplicațiilor este mai mare). Dezvoltarea aplicațiilor pentru iPhone se poate realiza numai folosind mașini Mac (echipate cu MacOS), în timp ce aplicațiile Android pot fi scrise în orice sistem de operare cu Java și Eclipse (atât PC-uri cât și Mac-uri echipate cu Windows, Linux sau MacOS). În această situație, se pune problema cotelor de piață ale sistemelor de operare în cadrul companiilor dezvoltatoare de software, care creează sau nu oportunități pentru dezvoltarea unui anumit tip de aplicații (la începutul lui 2014, sistemele de operare Windows dețineau ​92,51% din piață, OS X 7,11%, sistemele de operare cu kernel Linux 1,34%, iar alte sisteme de operare 0,51%).+În privința limbajului de programare utilizat pentru dezvoltarea de aplicații mobile, iPhone folosește **Objective-C**,​ similar cu C++, care nu se bucură însă de o răspândire prea largă (cu excepția aplicațiilor pentru iPhone), în timp ce Android utilizează **Java** (limbajul de programare cel mai adoptat pe scară largă în cadrul corporațiilor) dar și **C/C++**, prin care se pot apela (cu o oarecare dificultate) aplicații native, prin suport JNI (numărul bibliotecilor disponibile în cazul C/C++ este mai redus decât în Java, însă viteza aplicațiilor este mai mare). Dezvoltarea aplicațiilor pentru iPhone se poate realiza numai folosind mașini Mac (echipate cu MacOS), în timp ce aplicațiile Android pot fi scrise în orice sistem de operare cu Java și Eclipse (atât PC-uri cât și Mac-uri echipate cu Windows, Linux sau MacOS). În această situație, se pune problema cotelor de piață ale sistemelor de operare în cadrul companiilor dezvoltatoare de software, care creează sau nu oportunități pentru dezvoltarea unui anumit tip de aplicații (la începutul lui 2016, sistemele de operare Windows dețineau ​90,60% din piață, OS X 7,68%, sistemele de operare cu kernel Linux 1,71%, iar alte sisteme de operare 0,01%).
  
 Așadar, dacă pentru utilizare personală nu se poate stabili un câștigător clar între Android și iPhone (deși produsul celor de la Apple pare să aibă un ușor avantaj printr-un număr mai mare de aplicații și prin loialitatea clienților),​ în cazul aplicațiilor dezvoltate de corporații situația este inversă, date fiind posibilitățile de instalare și limbajul de programare folosit. Așadar, dacă pentru utilizare personală nu se poate stabili un câștigător clar între Android și iPhone (deși produsul celor de la Apple pare să aibă un ușor avantaj printr-un număr mai mare de aplicații și prin loialitatea clienților),​ în cazul aplicațiilor dezvoltate de corporații situația este inversă, date fiind posibilitățile de instalare și limbajul de programare folosit.
Line 105: Line 115:
       - [[tutoriale:​genymotion|Genymotion]]       - [[tutoriale:​genymotion|Genymotion]]
       - [[tutoriale:​android_virtual_device|Android Virtual Device]] (livrat împreună cu SDK-ul de Android)       - [[tutoriale:​android_virtual_device|Android Virtual Device]] (livrat împreună cu SDK-ul de Android)
-    - un telefon mobil cu sistemul de operare Android pentru care s-a dezvoltat aplicația\\ Pentru a se putea rula o aplicație pe un dispozitiv mobil fizic, trebuie să se activeze posibilitatea de depanare prin USB, din //Dev Tools// → //Developer options// → //​Debugging//​ → //USB debugging//.\\ \\ {{ :​laboratoare:​laborator01:​debugging.png?​nolink&​400 }}+    - un telefon mobil cu sistemul de operare Android pentru care s-a dezvoltat aplicația\\ \\ Pentru a se putea rula o aplicație pe un dispozitiv mobil fizic, trebuie să se activeze posibilitatea de depanare prin USB, din //Settings// → //System// → //Developer Options//. Această opțiune trebuie activată, ca de altfel și opțiunea ​//​Debugging//​ → //Android Debugging// (pe unele sisteme poate apărea ca //USB Debugging//​).\\ \\ {{ :​laboratoare:​laborator01:​android_debugging01.png?​nolink&​400 }}\\ \\ În situația în care opțiunea //Developer Options// nu este disponibilă,​ aceasta poate fi vizualizată prin intermediul modului //​Developer//,​ obțiunut prin apăsarea de mai multe ori asupra opțiunii //Build Number// din secțiunea //​Settings//​ → //System// → //About Phone//.\\ \\ {{ :​laboratoare:​laborator01:​android_debugging02.png?​nolink&​400 }}
  
 Dacă telefonul nu este recunoscut la conectarea prin USB, trebuie instalate niște reguli pentru udev, conform instrucțiunilor de pe [[http://​unix.stackexchange.com/​questions/​119128/​linux-mint-16-android-device-not-listed-with-lsusb|stackexchange]]:​ Dacă telefonul nu este recunoscut la conectarea prin USB, trebuie instalate niște reguli pentru udev, conform instrucțiunilor de pe [[http://​unix.stackexchange.com/​questions/​119128/​linux-mint-16-android-device-not-listed-with-lsusb|stackexchange]]:​
Line 841: Line 851:
 Activitatea va fi identificată printr-o denumire, precizându-se un nume și pentru fișierul xml care conține modul de dispunere al elementelor grafice (acesta putând fi editat atât în mod text cât și în mod vizual). Activitatea va fi identificată printr-o denumire, precizându-se un nume și pentru fișierul xml care conține modul de dispunere al elementelor grafice (acesta putând fi editat atât în mod text cât și în mod vizual).
  
-{{ :​laboratoare:​laborator01:​eclipseproiectandroid07.png?​nolink&​500 }}+{{ :​laboratoare:​laborator01:​eclipse_project07.png?​nolink&​500 }}
  
 Rularea aplicației se face prin accesarea opțiunii //Run As// → //Android Application//​ din cadrul meniului contextual asociat proiectului (și accesibil prin click dreapta pe mouse). Rularea aplicației se face prin accesarea opțiunii //Run As// → //Android Application//​ din cadrul meniului contextual asociat proiectului (și accesibil prin click dreapta pe mouse).
Line 879: Line 889:
 Pentru a crea o aplicație Android se selectează //Start a New Android Studio project//. Pentru a crea o aplicație Android se selectează //Start a New Android Studio project//.
  
-{{ :​laboratoare:​laborator01:​android_studio_project01.png?​nolink&​600 }}+{{ :​laboratoare:​laborator01:​android_studio_project01.png?​nolink&​500 }}
  
-<note tip>​Portarea proiectelor dezvoltate folosind Eclipse ADT este foarte facilă, prin intermediul opțiunii //Import project (Eclipse ADT, Gradle, etc.).</​note>​+<note tip>​Portarea proiectelor dezvoltate folosind Eclipse ADT este foarte facilă, prin intermediul opțiunii //Import project (Eclipse ADT, Gradle, etc.)//.</​note>​
  
 Configurarea proiectului presupune specificarea unor parametri: Configurarea proiectului presupune specificarea unor parametri:
Line 900: Line 910:
   * ochelari inteligenți.   * ochelari inteligenți.
  
-{{ :​laboratoare:​laborator01:​android_studio_project04.png?​nolink&​600 }}+{{ :​laboratoare:​laborator01:​android_studio_project03.png?​nolink&​600 }}
  
 Este selectat tipul de actvitate care va fi vizualizată în momentul în care aplicația Android este pornită (//Blank Activity//, //Empty Activity//, //​Fullscreen Activity//, //Google AdMob Activity//, //Google Maps Activity//, //Login Activity//, //​Master/​Detail Flow//, //​Navigation Drawer Activity//, //Scrolling Activity//, //Settings Activity//, //Tabbed Activity//​). Este selectat tipul de actvitate care va fi vizualizată în momentul în care aplicația Android este pornită (//Blank Activity//, //Empty Activity//, //​Fullscreen Activity//, //Google AdMob Activity//, //Google Maps Activity//, //Login Activity//, //​Master/​Detail Flow//, //​Navigation Drawer Activity//, //Scrolling Activity//, //Settings Activity//, //Tabbed Activity//​).
Line 914: Line 924:
 Rularea unei aplicații Android se face prin intermediul unei pictograme asociate unei liste de selecție, în care sunt plasate toate aplicațiile disponibile în cadrul mediului integrat de dezvoltare. Se poate folosi și prescurtarea ''​Shift + F10''​. Rularea unei aplicații Android se face prin intermediul unei pictograme asociate unei liste de selecție, în care sunt plasate toate aplicațiile disponibile în cadrul mediului integrat de dezvoltare. Se poate folosi și prescurtarea ''​Shift + F10''​.
  
-{{ :​laboratoare:​laborator01:​android_studio_project06.png?​nolink&​800 }}+{{ :​laboratoare:​laborator01:​android_studio_project06.png?​nolink&​1000 }}
  
 Utilizatorul are posibilitatea de a selecta dispozitivul pe care va fi rulată aplicația, dintre cele conectate la mașina pe care se rulează. Utilizatorul are posibilitatea de a selecta dispozitivul pe care va fi rulată aplicația, dintre cele conectate la mașina pe care se rulează.
  
-{{ :​laboratoare:​laborator01:​android_studio_project07.png?​nolink&​600 ​}}+{{ :​laboratoare:​laborator01:​android_studio_project07.png?​nolink }}
  
 {{ :​laboratoare:​laborator01:​android_studio_project08.png?​nolink&​400 }} {{ :​laboratoare:​laborator01:​android_studio_project08.png?​nolink&​400 }}
Line 952: Line 962:
 student@eim2016:​~$ git config --global merge.tool diff student@eim2016:​~$ git config --global merge.tool diff
 </​code>​ Verificarea valorii pe care o au variabilele de configurare poate fi realizată în mai multe moduri: <​code>​ </​code>​ Verificarea valorii pe care o au variabilele de configurare poate fi realizată în mai multe moduri: <​code>​
-student@eim2016:​~$ git cofig --list+student@eim2016:​~$ git config ​--list
 </​code>​ <​code>​ </​code>​ <​code>​
 student@eim2016:​~$ cat .git/config student@eim2016:​~$ cat .git/config
Line 963: Line 973:
   - Să se creeze un depozit pe contul Github creat, denumit '​Laborator01'​. Inițial, acesta trebuie să fie gol (nu trebuie să bifați nici adăugarea unui fișier ''​README.md'',​ nici a fișierului ''​.gitignore''​ sau a a fișierului ''​LICENSE''​).   - Să se creeze un depozit pe contul Github creat, denumit '​Laborator01'​. Inițial, acesta trebuie să fie gol (nu trebuie să bifați nici adăugarea unui fișier ''​README.md'',​ nici a fișierului ''​.gitignore''​ sau a a fișierului ''​LICENSE''​).
   - Să se cloneze în directorul de pe discul local conținutul depozitului la distanță de la [[https://​www.github.com/​eim2016/​Laborator01|]]. În urma acestei operații, directorul Laborator01 va trebui să se conțină un director ''​labtaks''​ care conține proiectele Eclipse și AndroidStudio denumite ''​MyFirstAndroidApplication'',​ fișierele ''​README.md''​ și ''​LICENSE''​ și un fișier ''​.gitignore''​ care indică tipurile de fișiere (extensiile) ignorate. <​code>​   - Să se cloneze în directorul de pe discul local conținutul depozitului la distanță de la [[https://​www.github.com/​eim2016/​Laborator01|]]. În urma acestei operații, directorul Laborator01 va trebui să se conțină un director ''​labtaks''​ care conține proiectele Eclipse și AndroidStudio denumite ''​MyFirstAndroidApplication'',​ fișierele ''​README.md''​ și ''​LICENSE''​ și un fișier ''​.gitignore''​ care indică tipurile de fișiere (extensiile) ignorate. <​code>​
-student@eim2016:​~$ git init 
 student@eim2016:​~$ git clone https://​www.github.com/​eim2016/​Laborator01.git student@eim2016:​~$ git clone https://​www.github.com/​eim2016/​Laborator01.git
 </​code>​ </​code>​
laboratoare/laborator01.1456453635.txt.gz · Last modified: 2017/02/20 20:43 (external edit)
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0