Differences

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

Link to this comparison view

laboratoare:laborator01_old [2017/02/20 20:54] (current)
Line 1: Line 1:
 +====== Laborator 01. Introducere în Programarea Android ======
  
 +===== Sistemul de Operare Android =====
 +
 +==== Android - Prezentare Generală =====
 +
 +Android este un sistem de operare mobil bazat pe o versiune modificată de Linux (pentru gestiunea componentelor hardware, a proceselor și a memoriei) și biblioteci Java (pentru telefonie (audio/​video),​ conectivitate,​ grafică, programarea interfețelor cu utilizatorul). Este un produs open-source (putând fi dezvoltat de producătorii de dispozitive mobile cu extensii proprietare pentru a-și particulariza platforma), dezvoltat în prezent de compania Google, conceput pe ideea transformării dispozitivelor mobile în adevărate mașini de calcul. Comunitatea Android este în creștere, mai multe companii renunțând la propriul sistem de operare în favoarea acestuia, pentru a putea face față fenomenului iPhone.
 +
 +În condițiile în care pe piața dispozitivelor mobile aplicațiile sunt cele care aduc avantajul competițional,​ beneficiul Android este reprezentat de abordarea unitară pentru dezvoltarea aplicațiilor. Cu alte cuvinte, o aplicație dezvoltată conform API-ului Android va putea rula pe mai multe dispozitive mobile pe care este instalat sistemul de operare respectiv.
 +
 +==== Versiuni Android ====
 +
 +^ Versiune Android ^ Nivel API ^ Data Lansării ^    Nume de Cod     ^ Cota de Piață ^
 +|   5.0 - 5.0.2    |    21     ​| ​ 12.11.2014 ​  ​| ​     Lollipop ​     |     ​1.6% ​     |
 +|  4.4W - 4.4W.2 ​  ​| ​   20     ​| ​ 25.06.2014 ​  ​| ​ KitKat with wearable extensions ​ |  |
 +|   4.4 - 4.4.4    |    19     ​| ​ 31.10.2013 ​  ​| ​      ​KitKat ​      ​| ​    ​39.7% ​    |
 +|       ​4.3 ​       |    18     ​| ​ 24.07.2013 ​  ​| ​    Jelly Bean     ​| ​    ​6.3% ​     |
 +|      4.2.x       ​| ​   17     ​| ​ 13.11.2012 ​  ​| ​    Jelly Bean     ​| ​    ​19.8% ​    |
 +|      4.1.x       ​| ​   16     ​| ​ 09.07.2012 ​  ​| ​    Jelly Bean     ​| ​    ​18.4% ​    |
 +|  4.0.3 - 4.0.4   ​| ​   15     ​| ​ 16.12.2011 ​  ​| ​ Ice Cream Sandwich ​ |     ​6.4% ​     |
 +|   4.0 - 4.0.2    |    14     ​| ​ 19.10.2011 ​  ​| ​ Ice Cream Sandwich ​ |               |
 +|       ​3.2 ​       |    13     ​| ​ 15.07.2011 ​  ​| ​    ​Honeycomb ​     |               |
 +|       ​3.1 ​       |    12     ​| ​ 10.05.2011 ​  ​| ​    ​Honeycomb ​     |               |
 +|       ​3.0 ​       |    11     ​| ​ 22.02.2011 ​  ​| ​    ​Honeycomb ​     |               |
 +|  2.3.3 - 2.3.7   ​| ​   10     ​| ​ 09.02.2011 ​  ​| ​   Gingerbread ​    ​| ​    ​7.4% ​     |
 +|   2.3 - 2.3.2    |     ​9 ​    ​| ​ 06.12.2010 ​  ​| ​   Gingerbread ​    ​| ​              |
 +|   2.2 - 2.2.3    |     ​8 ​    ​| ​ 20.05.2010 ​  ​| ​      ​Froyo ​       |     ​0.4% ​     |
 +|       ​2.1 ​       |     ​7 ​    ​| ​ 12.01.2010 ​  ​| ​      ​Eclair ​      ​| ​              |
 +|      2.0.1       ​| ​    ​6 ​    ​| ​ 03.12.2009 ​  ​| ​      ​Eclair ​      ​| ​              |
 +|       ​2.0 ​       |     ​5 ​    ​| ​ 26.10.2009 ​  ​| ​      ​Eclair ​      ​| ​              |
 +|       ​1.6 ​       |     ​4 ​    ​| ​ 15.09.2009 ​  ​| ​      ​Donut ​       |               |
 +|       ​1.5 ​       |     ​3 ​    ​| ​ 30.04.2009 ​  ​| ​     Cupcake ​      ​| ​              |
 +|       ​1.1 ​       |     ​2 ​    ​| ​ 09.02.2009 ​  ​| ​                   |               |
 +|       ​1.0 ​       |     ​1 ​    ​| ​ 23.09.2008 ​  ​| ​                   |               |
 +
 +==== Arhitectura Android ====
 +
 +Arhitectura sistemului de operare Android cuprinde cinci secțiuni grupate pe patru niveluri:
 +
 +{{ :​laboratoare:​laborator01:​arhitecturaandroid.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.
 +  - **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:
 +    - 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)
 +    - **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.
 +  - **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.
 +
 +==== Funcționalități Android ====
 +
 +De vreme ce Android este un produs open-source,​ producătorii având posibilitatea de a-l modifica în mod gratuit, nu există configurații hardware sau software standard. Totuși, Android implementează următoarele funcționalități:​
 +  * **stocare** - folosește SQLite, o bază de date relațională ce utilizează resurse puține
 +  * **conectivitate** - suportă GSM/CDMA, GPRS, EDGE, 3G, IDEN, EV-DO, UMTS, Bluetooth (inclusiv A2DP si AVRCP), WiFi, LTE, WiMAX
 +  * **WiFi Direct** - tehnologie care permite aplicațiilor să se descopere și să se interconecteze peste o conexiune punct-la-punct având lățime de bandă mare
 +  * **Android Beam** - o tehnologie bazată pe NFC (Near Field Communication) care permite utilizatorilor să partajeze conținut instant, prin apropierea dispozitivelor mobile respective
 +  * **mesagerie** - atât SMS cât și MMS
 +  * **navigare pe Internet** - bazat pe motorul open source pentru navigare WebKit impreună cu motorul JavaScript de la Chrome V8 suportând HTML5 și CSS3
 +  * **multimedia** - suportă formatele H.263, H.264 (într-un container 3GP sau MP4), MPEG-4 SP, AMR, AMR-WB (într-un container 3GP), AAC, HE-AAC (într-un container MP4 sau 3GP), MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF si BMP
 +  * **grafică** - 2D optimizată,​ 3D (OpenGL ES)
 +  * **senzori** - accelerometru,​ cameră foto, busolă digitală (magnetometru),​ senzor de proximitate,​ GPS / AGPS
 +  * **multi-touch** - suportă ecrane cu posibilitate de contact în mai multe puncte concomitent
 +  * **multi-tasking** - permite rularea de aplicații cu mai multe fire de execuție
 +  * **GCM (Google Cloud Messaging)** - serviciu ce permite dezvoltatorilor să trimită date de dimensiuni mici către utilizatori pe dispozitive Android, fără a avea nevoie de o soluție de sincronizare proprietară
 +  * **multi-Language** - suport pentru text unidirecțional și bidirecțional
 +  * **suport pentru aplicații Flash** (până în versiunea 4.3)
 +  * **legătură la Internet** - suportă partajarea conexiunilor la Internet ca punct de distribuție cu fir / fără fir
 +
 +==== Android vs. iPhone ====
 +
 +Deși platforma celor de la Apple pune la dispoziție o gamă de aplicații mult mai variată decât a celor de la Google, la sfârșitul lui 2013 Android deținea 51.8% din totalul descărcărilor,​ în timp ce iPhone numai 40.7%. Totuși, politica de distribuție a acestora (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) se traduce prin încasările obținute, raportul dintre Apple și Google fiind de 65% la 35%.
 +
 +Î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 90,60% din piață, OS X 7,68%, sistemele de operare cu kernel Linux 1,60%, iar alte sisteme de operare 0,10%).
 +
 +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.
 +
 +==== Comunitatea programatorilor Android ====
 +
 +Ajunsă deja la a cincea versiune, Android este o platformă care beneficiază de experiența a numeroși dezvoltatori ce poate fi exploatată:​
 +  * [[http://​developer.android.com/​training/​index.html|Google Android Training]] conține o serie de tutoriale și exemple de clase grupate în funcție de diferite subiecte, utile pentru deprinderea cunoștințelor de bază pentru dezvoltarea aplicațiilor Android.
 +  * [[http://​www.stackoverflow.com/​questions/​tagged/​android|Stack Overflow]] este un forum pentru programatori editat în mod colaborativ,​ conținând întrebări și răspunsuri la acestea (cele mai bune putând fi identificate cu ușurință prin voturile primite de la participanți). Este destul de probabil ca o întrebare să își găsească deja răspunsul pe acestă resursă.
 +  * [[http://​groups.google.com/​group/​android-discuss|Android Discuss]] este o listă de discuții monitorizată îndeaproape de echipa Android de la Google astfel încât reprezintă un loc unde pot fi clarificate numeroase nelămuriri putând fi însușite diferite sfaturi și trucuri.
 +
 +===== Cerințe pentru dezvoltarea unei aplicații Android =====
 +
 +==== Kit de Dezvoltare pentru Limbajul de Programare Java (JDK) ====
 +
 +=== Linux ===
 +
 +  * se obține arhitectura mașinii pe care se dorește să se realizeze instalarea (în situația în care nu este cunoscută în prealabil)\\ <​code>​
 +student@pdsd2015:​~$ file /sbin/init
 +</​code>​
 +  * se stabilește dacă există o versiune de Java instalată (cu ''​java -version''​) și în caz afirmativ, se dezinstalează pachetul din care face parte (folosind ''​sudo apt-get purge''​)
 +  * se creează directorul ''/​usr/​local/​java''​ în care va fi instalată versiunea curentă de Java\\ <​code>​
 +student@pdsd2015:​~$ sudo mkdir -p /​usr/​local/​java ​
 +</​code>​
 +  * se descarcă arhiva ''​tar.gz''​ conținând SDK-ul de Java corespunzător arhitecturii mașinii pe care se dorește să se realizeze instalarea de la [[http://​www.oracle.com/​technetwork/​java/​javase/​downloads/​jdk8-downloads-2133151.html|Java SE Development Kit 8 Downloads]] în directorul ''/​tmp''​
 +  * se dezarhivează binarele de  Java în directorul ''/​usr/​local/​java''​\\ <​code>​
 +student@pdsd2015:​~$ cd /​usr/​local/​java
 +student@pdsd2015:/​usr/​local/​java$ sudo tar xvzf /​tmp/​jdk-8u31-linux-<​platforma>​-<​arhitectura>​.tar.gz
 +</​code>​ unde:
 +    * ''​platforma''​ poate avea valorile:
 +      * ''​linux''​ - sisteme de operare Linux
 +      * ''​macosx''​ - sistemul de operare Mac OS X (doar versiuni pe 64 de biți)
 +      * ''​solaris''​ - sisteme de operare Solaris
 +      * ''​windows''​ - sisteme de operare Windows
 +    * ''​arhitectura''​ poate avea valorile:
 +      * ''​i586''​ - arhitecturi pe 32 de biți
 +      * ''​x64''​ - arhitecturi pe 64 de biți
 +      * ''​sparcv9''​ - arhitecturi SPARC
 +  * se sterge arhiva al carui continut a fost deja despachetat <​code>​
 +student@pdsd2015:​~$ rm -f /​tmp/​jdk-8u31-linux-<​platforma>​-<​arhitectura>​.tar.gz
 +</​code>​
 +  * se definește variabila de sistem ''​JAVA_HOME''​ prin editarea fișierului ''/​etc/​profile''​ (se poate folosi orice editor de text, precum ''​vi''​ sau ''​nano''​)\\ <​code>​
 +student@pdsd2015:​~$ sudo gedit /​etc/​profile
 +</​code>​ <file txt /​etc/​profile>​
 +# ...
 +
 +JAVA_HOME=/​usr/​local/​java/​jdk1.8.0_31
 +PATH=$PATH:​$JAVA_HOME/​bin
 +export JAVA_HOME
 +export PATH
 +
 +# ...
 +</​file>​
 +  * se indică sistemului de operare locația la care se găsește instalată Java\\ <​code>​
 +student@pdsd2015:​~$ sudo update-alternatives --install "/​usr/​bin/​java"​ "​java"​ "/​usr/​local/​java/​jdk1.8.0_31/​bin/​java"​ 1 
 +student@pdsd2015:​~$ sudo update-alternatives --install "/​usr/​bin/​javac"​ "​javac"​ "/​usr/​local/​java/​jdk1.8.0_31/​bin/​javac"​ 1 
 +student@pdsd2015:​~$ sudo update-alternatives --install "/​usr/​bin/​javaws"​ "​javaws"​ "/​usr/​local/​java/​jdk1.8.0_31/​bin/​javaws"​ 1 
 +</​code>​
 +  * se indică sistemului de operare faptul că versiunea instalată de Java este cea implicită\\ <​code>​
 +student@pdsd2015:​~$ sudo update-alternatives --set java /​usr/​local/​java/​jdk1.8.0_31/​bin/​java ​
 +student@pdsd2015:​~$ sudo update-alternatives --set javac /​usr/​local/​java/​jdk1.8.0_31/​bin/​javac ​
 +student@pdsd2015:​~$ sudo update-alternatives --set javaws /​usr/​local/​java/​jdk1.8.0_31/​bin/​javaws ​
 +</​code>​
 +  * se încarcă fișierul ''/​etc/​profile''​ ce conține variabilele de sistem globale\\ <​code>​
 +student@pdsd2015:​~$ . /​etc/​profile
 +</​code>​
 +<note important>​Încărcarea variabilelor de sistem globale din fișierul ''/​etc/​profile''​ se va face numai după repornirea sistemului de operare.</​note>​
 +
 +=== Windows ===
 +
 +  * se descarcă executabilul conținând SDK-ul de Java, corespunzător arhitecturii mașinii pe care se dorește să se realizeze instalarea de la [[http://​www.oracle.com/​technetwork/​java/​javase/​downloads/​jdk8-downloads-2133151.html|Java SE Development Kit 8 Downloads]]
 +  * se instalează SDK-ul de Java folosind executabilul descărcat
 +
 +==== SDK Android ====
 +
 +=== Descărcare ===
 +
 +== Linux ==
 +
 +Se descarcă arhiva ''​.tgz''​ conținând SDK-ul de Android:\\ <​code>​
 +student@pdsd2015:​~$ cd /tmp
 +student@pdsd2015:/​tmp$ wget http://​dl.google.com/​android/​android-sdk_r24.0.2-linux.tgz
 +student@pdsd2015:/​tmp$ cd /opt
 +student@pdsd2015:/​opt$ sudo tar xzvf /​tmp/​android-sdk_r24.0.2-linux.tgz
 +student@pdsd2015:/​opt$ rm -f /​tmp/​android-sdk_r24.0.2-linux.tgz
 +</​code>​
 +
 +== Windows ==
 +
 +Se descarcă [[http://​dl.google.com/​android/​installer_r24.0.2-windows.exe|executabilul conținând SDK-ul de Android]].
 +
 +=== Instalare ===
 +
 +== Linux ==
 +
 +  * se lansează Android SDK Manager (cu drepturi de administrator,​ altfel nu este posibilă descărcarea și instalarea pachetelor necesare), selectându-se nivelul de API pe care vor fi dezvoltate aplicațiile:​\\ <​code>​
 +student@pdsd2015:​~$ cd /​opt/​android-sdk-linux/​tools
 +student@pdsd2015:/​opt/​android-sdk-linux/​tools$ sudo ./android
 +</​code> ​
 +  * sunt selectate următoarele pachete:
 +    * Tools
 +      * Android SDK Tools (daca nu a fost instalat anterior)
 +      * Android SDK Platform-tools
 +      * Android SDK Build-tools
 +    * Android 4.1.2 (API16) - toate pachetele
 +    * Extras
 +      * Android Support Library 21.0.3
 +      * Google Play Services 22
 +      * Google Play APK Extension Library 3
 +      * Google Play Billing Library 5
 +      * Google Play Licensing Library 2
 +  * se accesează butonul //Install packages//
 +
 +{{ :​laboratoare:​laborator01:​androidsdk01.png?​nolink&​600 }} 
 +
 +  * se acceptă termenii și condițiile de licențiere.
 +
 +{{ :​laboratoare:​laborator01:​androidsdk02.png?​nolink&​800 }}
 +
 +  * în fereastra de jurnalizare sunt afișate informații cu privire la starea pachetelor instalate
 +
 +{{ :​laboratoare:​laborator01:​androidsdk03.png?​nolink }} 
 +
 +<​note>​Operațiile de descărcare și instalare pot dura o perioadă de timp mai îndelungată,​ în funcție de viteza conexiunii la Internet.</​note>​
 +
 +== Windows ==
 +
 +  * se lansează în execuție fișierul descărcat, conținând SDK-ul de Android
 +
 +{{ :​laboratoare:​laborator01:​androidsdkwindows01.png?​nolink }} 
 +
 +  * se verifică dacă sistemul de operare conține o versiune de JDK, altfel utilizatorul trebuie să precizeze locația la care se găsește aceasta
 +
 +{{ :​laboratoare:​laborator01:​androidsdkwindows02.png?​nolink }} 
 +
 +  * se solicită să se specifice tipul instalării
 +
 +{{ :​laboratoare:​laborator01:​androidsdkwindows03.png?​nolink }}
 +
 +    * pentru toți utilizatorii care folosesc sistemul de operare
 +    * doar pentru utilizatorul curent
 +
 +  * se indică locația la care va fi realizată instalarea, spațiul de pe disc care va fi ocupat / disponibil
 +
 +{{ :​laboratoare:​laborator01:​androidsdkwindows04.png?​nolink }} 
 +  ​
 +  * se specifică intrarea din meniul de start de unde va putea fi accesat ulterior
 +
 +{{ :​laboratoare:​laborator01:​androidsdkwindows05.png?​nolink }} 
 +
 +  * se afișează rezultatele instalării
 +
 +{{ :​laboratoare:​laborator01:​androidsdkwindows06.png?​nolink }}
 +
 +  * în urma completării instalării,​ există posibilitatea de a lansa în execuție SDK-ul de Android, operație care va fi temporizată până la momentul în care executabilul aferent va primi drepturi corespunzătoare utilizatorului de tip administrator (necesare pentru a descărca și instala definițiile corespunzătoare nivelului de API pentru care se vor dezvolta aplicațiile Android)
 + 
 +{{ :​laboratoare:​laborator01:​androidsdkwindows07.png?​nolink }}
 +
 +    * folosind un utilitar de tip gestiune a fișierelor se accesează locația la care a fost realizată instalarea (în cazul de față ''​C:​\Program Files (x86)\Android\android-sdk''​)
 +    * din meniul contextual al fișierului ''​SDK Manager.exe''​ (click dreapta) se accesează opțiunea ''​Properties''​
 + 
 +{{ :​laboratoare:​laborator01:​androidsdkwindows08.png?​nolink }}
 +
 +    * în secțiunea ''​Compatibility''​ se bifează opțiunea //Run this program as an administrator//​ și se definitivează modificările accesând butonul //Apply//
 +
 +{{ :​laboratoare:​laborator01:​androidsdkwindows09.png?​nolink }} 
 +
 +  * se lansează în execuție Android SDK Manager, selectându-se nivelul de API pentru care vor fi dezvoltate aplicațiile,​ parcurgându-se aceleași etape ca și în cazul [[:​laboratoare:​laborator01#​linux2|Linux]].
 +
 +==== Medii de Dezvoltare Integrate (IDE) ====
 +
 +=== Eclipse Luna SR1a (4.4.1) ===
 +
 +== Linux ==
 +
 +Se descarcă arhiva ''​.tar.gz''​ corespunzătoare arhitecturii mașinii pe care se dorește să se realizeze instalarea în directorul ''/​opt'':​
 +  * arhitectura pe 32 de biți\\ <​code>​
 +student@pdsd2015:​~$ cd /tmp
 +student@pdsd2015:/​tmp$ wget http://​ftp.snt.utwente.nl/​pub/​software/​eclipse//​technology/​epp/​downloads/​release/​luna/​SR1a/​eclipse-java-luna-SR1a-linux-gtk.tar.gz
 +student@pdsd2015:/​tmp$ cd /opt
 +student@pdsd2015:/​opt$ sudo tar xzvf /​tmp/​eclipse-java-luna-SR1a-linux-gtk.tar.gz
 +student@pdsd2015:/​opt$ rm -f /​tmp/​eclipse-java-luna-SR1a-linux-gtk.tar.gz
 +</​code>​
 +  * arhitectura pe 64 de biți\\ <​code>​
 +student@pdsd2015:​~$ cd /tmp
 +student@pdsd2015:/​tmp$ wget http://​eclipse.mirror.triple-it.nl/​technology/​epp/​downloads/​release/​luna/​SR1a/​eclipse-java-luna-SR1a-linux-gtk-x86_64.tar.gz
 +student@pdsd2015:/​tmp$ cd /opt
 +student@pdsd2015:/​opt$ sudo tar xzvf /​tmp/​eclipse-java-luna-SR1a-linux-gtk-x86_64.tar.gz
 +student@pdsd2015:/​opt$ rm -f /​tmp/​eclipse-java-luna-SR1a-linux-gtk-x86_64.tar.gz
 +</​code>​
 +Lansarea în execuție a mediului de dezvoltare integrat se face prin ''/​opt/​eclipse/​eclipse''​.
 +
 +== Windows ==
 +
 +Se descarcă arhiva ''​.zip''​ corespunzătoare arhitecturii mașinii pe care se dorește să se realizeze instalarea:
 +  * [[http://​www.eclipse.org/​downloads/​download.php?​file=/​technology/​epp/​downloads/​release/​luna/​SR1a/​eclipse-java-luna-SR1a-win32.zip&​mirror_id=1099|arhitectura pe 32 de biți]]
 +  * [[http://​www.eclipse.org/​downloads/​download.php?​file=/​technology/​epp/​downloads/​release/​luna/​SR1a/​eclipse-java-luna-SR1a-win32-x86_64.zip&​mirror_id=1099|arhitectura pe 64 de biți]]
 +
 +== Plugin Android Developer Tools pentru Eclipse Luna SR1a (4.4.1) ==
 +  * Se pornește Eclipse Luna SR1a (4.4.1):
 +    * Linux ''/​opt/​eclipse/​eclipse''​
 +    * Windows - se apelează executabilul ''​eclipse.exe''​ din directorul în care s-a realizat instalarea
 +  * Se instalează plugin-ul Android Developer Tools pentru Eclipse Luna SR1a
 +    * //Help// → //Install new Software//
 +    * în secțiunea //Work with// se completează locația [[https://​dl-ssl.google.com/​android/​eclipse|]]
 +{{ :​laboratoare:​laborator01:​eclipse01.png?​nolink&​600 }} 
 +    * se apasă butonul //Add...// și în câmpul //Name// se specifică o denumire sugestivă (spre exemplu, //Android SDK Tools//); se apasă butonul //OK//
 +{{ :​laboratoare:​laborator01:​eclipse02.png?​nolink&​600 }} 
 +    * se selectează //Developer Tools//; se apasă butonul //Next//
 +{{ :​laboratoare:​laborator01:​eclipse03.png?​nolink&​600 }} 
 +    * se vor afișa detaliile pentru instalare; se apasă butonul //Next//
 +{{ :​laboratoare:​laborator01:​eclipse04.png?​nolink&​600 }} 
 +    * se acceptă termenii și condițiile pentru licențierea conținutului
 +{{ :​laboratoare:​laborator01:​eclipse05.png?​nolink&​600 }} 
 +    * se confirmă instalarea de programe care au conținut nesemnat
 +{{ :​laboratoare:​laborator01:​eclipse06.png?​nolink }} 
 +    * se restartează Eclipse Luna SR1a (4.4.1)
 +{{ :​laboratoare:​laborator01:​eclipse07.png?​nolink }} 
 +    * se solicită specificarea căii pentru SDK-ul de Android; în cazul în care fereastra de dialog nu este afișată în mod automat, calea pentru Android SDK poate fi indicată din //Window// → //​Preferences//​ → //​Android//,​ secțiunea //SDK Locations//
 +{{ :​laboratoare:​laborator01:​eclipse08.png?​nolink }}
 +
 +{{ :​laboratoare:​laborator01:​eclipse09.png?​nolink }}
 +
 +{{ :​laboratoare:​laborator01:​eclipse10.png?​nolink&​600 }}
 +
 +{{ :​laboratoare:​laborator01:​eclipse11.png?​nolink&​600 }}
 +
 +    * în bara de unele vor putea fi accesate
 +      * Android SDK Manager - pentru gestiunea unor module / niveluri de API
 +      * Android Virtual Device (AVD) Manager - pentru gestiunea configurațiilor de dispozitive virtuale care vor putea fi rulate în emulator pentru testarea aplicațiilor
 +
 +{{ :​laboratoare:​laborator01:​eclipse12.png?​nolink&​800 }}
 +
 +=== Android Studio ===
 +
 +== Linux ==
 +
 +  * se descarcă arhiva ''​.zip''​ corespunzătoare în directorul ''/​opt'':​\\ <​code>​
 +student@pdsd2015:​~$ cd /tmp
 +student@pdsd2015:/​tmp$ wget https://​dl.google.com/​dl/​android/​studio/​ide-zips/​1.0.1/​android-studio-ide-135.1641136-linux.zip
 +student@pdsd2015:/​tmp$ cd /opt
 +student@pdsd2015:/​opt$ sudo unzip /​tmp/​android-studio-ide-135.1641136-linux.zip
 +student@pdsd2015:/​opt$ rm -f /​tmp/​android-studio-ide-135.1641136-linux.zip
 +</​code>​
 +  * se lanseaza in executie mediul integrat de dezvoltare:​\\ <​code>​
 +student@pdsd2015:/​opt$ cd android-studio/​bin
 +student@pdsd2015:/​opt/​android-studio/​bin$ sudo ./studio.sh
 +</​code>​
 +
 +Procesul de configurare a mediului integrat de dezvoltare Android Studio implică următorii pași:
 +
 +{{ :​laboratoare:​laborator01:​androidstudio02.png?​nolink&​600 }}
 +
 +  * preluarea configurațiilor specifice unei versiuni anterioare (în caz că există, cu specificarea locației respective) / specificarea configurațiilor necesare rulării mediului integrat de dezvoltare Android Studio;
 +
 +{{ :​laboratoare:​laborator01:​androidstudio01.png?​nolink }}
 +
 +  * specificarea locației la care se găsește instalat JDK-ul (minim versiunea 7.0);
 +
 +{{ :​laboratoare:​laborator01:​androidstudio03.png?​nolink&​600 }} 
 +
 +{{ :​laboratoare:​laborator01:​androidstudio04.png?​nolink }} 
 +
 +{{ :​laboratoare:​laborator01:​androidstudio05.png?​nolink&​600 }}
 +
 +  * indicarea tipului de configurație dorit:
 +    * standard (cele mai frecvent utilizate configurații / opțiuni);
 +    * particularizat;​
 +
 +{{ :​laboratoare:​laborator01:​androidstudio06.png?​nolink&​600 }}
 +
 +  * precizarea componentelor care se doresc a fi instalate:
 +    * SDK-ul de Android - se indică locația la care acesta a fost instalat anterior în câmpul //Android SDK Location// astfel încât nu vor fi instalate decât actualizările (corespunzătoare celui mai recent nivel de API);
 +    * un dispozitiv virtual Android pe care vor putea fi testate aplicațiile în situația în care nu este disponibil un dispozitiv mobil fizic;
 +
 +{{ :​laboratoare:​laborator01:​androidstudio07.png?​nolink&​600 }}
 +
 +  * în situația în care mașina pe care se instalează mediul integrat de dezvoltare Android Studio poate rula emulatorul de Android într-un mod de performanță ridicată (prin intermediul KVM - Kernel-mode Virtual Machine), utilizatorul este invitat să verifice dacă acest pachet este activat astfel încât experiența utilizării emulatorului să fie îmbunătățită;​
 +
 +{{ :​laboratoare:​laborator01:​androidstudio08.png?​nolink&​600 }}
 +
 +  * se acceptă termenii și condițiile de licențiere pentru pachetele corespunzătoare SDK-ului de Android;
 +
 +{{ :​laboratoare:​laborator01:​androidstudio09.png?​nolink&​600 }} 
 +
 +  * pe măsura instalării pachetelor sunt afișate detalii cu privire la starea acestora;
 +
 +{{ :​laboratoare:​laborator01:​androidstudio10.png?​nolink&​600 }} 
 +
 +{{ :​laboratoare:​laborator01:​androidstudio11.png?​nolink&​600 }}
 +
 +  * opțiunile disponibile la accesarea mediului integrat de dezvoltare Android Studio sunt:
 +    * crearea unui proiect nou;
 +    * accesarea unui proiect existent anterior;
 +    * importarea unui proiect pe baza exemplelor de cod sursă;
 +    * descărcarea unui proiect disponibil într-un sistem de versionare a codului sursă;
 +    * importarea unui proiect dezvoltat într-un alt mediu integrat de dezvoltare decât Android Studio;
 +    * precizarea unor opțiuni de configurare;​
 +    * consultarea documentației și a tutorialelor.
 +
 +{{ :​laboratoare:​laborator01:​androidstudio12.png?​nolink&​600 }}
 +
 +== Windows ==
 +
 +  * se descarcă [[https://​dl.google.com/​dl/​android/​studio/​install/​1.0.1/​android-studio-ide-135.1641136.exe|executabilul fără SDK-ul de Android]] și se rulează
 +
 +{{ :​laboratoare:​laborator01:​androidstudiowindows01.png?​nolink }}
 +
 +  * în afara mediului integrat de dezvoltare Android Studio, pot fi instalate
 +    * un dispozitiv virtual Android (o configurație pentru emulator)
 +    * o aplicație pentru îmbunătățirea performanțelor tuturor instanțelor de emulator pe care vor fi rulate aplicațiile Android (HAXM - Hardware Accelerated Manager)
 +
 +{{ :​laboratoare:​laborator01:​androidstudiowindows02.png?​nolink }}
 +
 +  * se acceptă termenii și condițiile pentru licențiere
 +
 +{{ :​laboratoare:​laborator01:​androidstudiowindows03.png?​nolink }}
 +
 +  * se indică locația la care va fi realizată instalarea și spațiul de pe disc care va fi ocupat
 +
 +{{ :​laboratoare:​laborator01:​androidstudiowindows04.png?​nolink }}
 +
 +  * în situația în care mașina pe care se instalează mediul integrat de dezvoltare Android Studio poate rula emulatorul de Android într-un mod de performanță ridicată, utilizatorul este invitat să rezerve un spațiu de memorie (valoare recomandată fiind 512MB) care va fi utilizată de emulator
 +
 +{{ :​laboratoare:​laborator01:​androidstudiowindows05.png?​nolink }}
 +
 +  * se specifică intrarea din meniul de start de unde va putea fi accesat ulterior
 +
 +{{ :​laboratoare:​laborator01:​androidstudiowindows06.png?​nolink }}
 +
 +  * se afișează rezultatele instalării
 +
 +{{ :​laboratoare:​laborator01:​androidstudiowindows07.png?​nolink }}
 +
 +  * în urma completării instalării,​ există posibilitatea de a lansa în execuție mediul integrat de dezvoltare Android Studio, operație care va fi temporizată până la momentul în care executabilul aferent va primi drepturi corespunzătoare utilizatorului de tip administrator (necesare pentru a descărca și instala definițiile corespunzătoare celui mai recent nivel de API / un dispozitiv virtual corespunzător acestuia)
 +
 +{{ :​laboratoare:​laborator01:​androidstudiowindows08.png?​nolink }}
 +
 +  * pentru configurarea mediului integrat de execuție Android Studio, este necesar ca în prealabil să existe JDK corespunzător arhitecturii mașinii respective, iar locația acestuia să fie indicată de variabila de mediu ''​JAVA_HOME'',​ în caz contrar generându-se un mesaj de eroare
 +
 +{{ :​laboratoare:​laborator01:​androidstudiowindows09.png?​nolink }}
 +
 +  * în //Control Panel// → //System// se accesează din meniu opțiunea //Advanced System Settings//
 +
 +{{ :​laboratoare:​laborator01:​androidstudiowindows10.png?​nolink&​800 }}
 +
 +  * în cadrul secțiunii //​Advanced//​ se accesează butonul //​Environment Variables...//​
 +
 +{{ :​laboratoare:​laborator01:​androidstudiowindows11.png?​nolink }}
 +
 +  * se definește variabila de mediu ''​JAVA_HOME''​ în secțiunea //System Variables// prin accesarea butonului //New...//
 +
 +{{ :​laboratoare:​laborator01:​androidstudiowindows12.png?​nolink }}
 +
 +  * în cadrul ferestrei //New System Variable// se completează informațiile solicitate
 +    * denumirea variabilei de mediu: ''​JAVA_HOME''​
 +    * valoarea variabilei de mediu: locația la care a fost instalat în prealabil JDK-ul de Java (de regulă, în ''​C:​\Program Files\Java\jdk1.8.0_31''​)
 +
 +{{ :​laboratoare:​laborator01:​androidstudiowindows13.png?​nolink }}
 +
 +<note important>​
 +Executabilul corespunzător mediului integrat de dezvoltare Android Studio (''​studio.exe''​) trebuie să dețină drepturi de rulare corespunzătoare utilizatorului de tip administrator.
 +  * din meniul contextual al fișierului (click dreapta) se accesează opțiunea //​Properties//​
 +  * în secțiunea //​Compatibility//​ se bifează opțiunea //Run this program as an administrator//​ și se definitivează modificările accesând butonul //Apply//
 +</​note>​
 +
 +  * în continuare, se urmează aceleași etape ca în cazul [[:​laboratoare:​laborator01#​linux4|Linux]].
 +
 +==== Emulatoare ====
 +
 +=== Genymotion ===
 +
 +O versiune gratuită pentru emulatorul Genymotion poate fi descărcată de pe [[http://​www.genymotion.com|]] după ce se creează un cont.
 +Alternativ, executabilele pot fi descărcate de la următoarele locații:
 +  * Linux <​code>​
 +student@pdsd2015:​~$ cd /opt
 +student@pdsd2015:/​opt$ sudo wget http://​pdsd2015.andreirosucojocaru.ro/​resources/​genymotion-2.3.1_<​platforma>​.bin
 +</​code>​ unde ''​platforma''​ are valoarea
 +      * ''​x86''​ - arhitecturi pe 32 de biți
 +      * ''​x64''​ - arhitecturi pe 64 de biți
 +      * ''​x64_debian''​ - distribuția Debian pe 64 de biți
 +  * Windows
 +    * [[http://​pdsd2015.andreirosucojocaru.ro/​resources/​genymotion-2.3.1.exe|executabil fără VirtualBox]]
 +    * [[http://​pdsd2015.andreirosucojocaru.ro/​resources/​genymotion-2.3.1-vbox.exe|executabil cu VirtualBox]]
 +Emulatorul Genymotion are nevoie de o mașină virtuală în contextul căreia să ruleze. ​
 +  * Linux\\ <​code>​
 +student@pdsd2015:​~$ sudo apt-get install openbox virtualbox
 +</​code>​
 +  * Windows - se poate folosi executabilul integrat cu VirtualBox sau acesta poate fi instalat separat de la [[https://​www.virtualbox.org/​wiki/​Downloads|]].
 +
 +Se instalează emulatorul Genymotion pornind de la executabilele descărcate.
 +  * Linux <​code>​
 +student@pdsd2015:/​opt$ sudo chmod +x genymotion-2.3.1_<​platforma>​.bin
 +student@pdsd2015:/​opt$ sudo ./​genymotion-2.3.1_<​platforma>​.bin
 +student@pdsd2015:/​opt$ sudo rm -f genymotion-2.3.1_<​platforma>​.bin
 +</​code>​
 +  * Windows - se rulează fișierul ''​.exe''​ în cauză
 +
 +== Plugin pentru Medii de Execuție Integrate (IDE) ==
 +
 +**Eclipse**
 +
 +  * Se pornește Eclipse Luna SR1a (4.4.1):
 +    * Linux ''/​opt/​eclipse/​eclipse''​
 +    * Windows - se apelează executabilul ''​eclipse.exe''​ din directorul în care s-a realizat instalarea
 +  * Se instalează plugin-ul Genymotion pentru Eclipse Luna SR1a
 +    * //Help// → //Install new Software//
 +    * în secțiunea //Work with// se completează locația [[http://​plugins.genymotion.com/​eclipse/​|]]\\ ​
 +{{ :​laboratoare:​laborator01:​eclipsegenymotion01.png?​nolink&​600 }}
 +    * se apasă butonul //Add...// și în câmpul //Name// se specifică o denumire sugestivă (spre exemplu, //​Genymotion Plugin//); se apasă butonul //​OK//​\\ ​
 +{{ :​laboratoare:​laborator01:​eclipsegenymotion02.png?​nolink&​600 }}
 +    * se selectează //​Genymobile//;​ se apasă butonul //​Next//​\\ ​
 +{{ :​laboratoare:​laborator01:​eclipsegenymotion03.png?​nolink&​600 }}
 +    * se vor afișa detaliile pentru instalare; se apasă butonul //​Next//​\\ ​
 +{{ :​laboratoare:​laborator01:​eclipsegenymotion04.png?​nolink&​600 }}
 +    * se acceptă termenii și condițiile pentru licențierea conținutului;​ se apasă butonul //​Finish//​\\ ​
 +{{ :​laboratoare:​laborator01:​eclipsegenymotion05.png?​nolink&​600 }}
 +    * se confirmă instalarea de programe care au conținut nesemnat\\ ​
 +{{ :​laboratoare:​laborator01:​eclipsegenymotion06.png?​nolink }}
 +    * se restartează Eclipse Luna SR1a (4.4.1)\\ ​
 +{{ :​laboratoare:​laborator01:​eclipsegenymotion07.png?​nolink }}
 +    * se specifică locația la care este instalat emulatorul Genymotion //Window// → //​Preferences//​ → //​Genymobile//​ → //​Genymotion//,​ completându-se câmpul //​Genymotion directory//​\\ ​
 +{{ :​laboratoare:​laborator01:​eclipsegenymotion09.png?​nolink&​600 }}\\ 
 +{{ :​laboratoare:​laborator01:​eclipsegenymotion10.png?​nolink&​600 }}
 +    * fereastra de gestiune a dispozitivelor mobile virtuale Genymotion se deschide folosind pictograma corespunzătoare din Toolbar sau apăsând ''​Ctrl+6''​.\\ ​
 +{{ :​laboratoare:​laborator01:​eclipsegenymotion08.png?​nolink&​800 }}
 +
 +**Android Studio**
 +
 +  * Se pornește Android Studio 1.0.1:
 +    * Linux ''​sudo /​opt/​android-studio/​bin/​studio.sh''​
 +    * Windows - se apelează executabilul ''​studio.exe''​ din directorul în care s-a realizat instalarea
 +  * Se instalează plugin-ul Genymotion pentru Android Studio
 +    * //File// → //​Settings//​\\ ​
 +{{ :​laboratoare:​laborator01:​genymotionandroidstudio01.png?​nolink }}
 +    * în fereastra //​Settings//,​ în cadrul secțiunii //IDE Settings// se accesează opțiunea //​Plugins//;​ se apasă butonul //Browse repositories...//​\\ ​
 +{{ :​laboratoare:​laborator01:​genymotionandroidstudio02.png?​nolink&​600 }}
 +    * în fereastra //Browse Repositories...//​ se selectează intrarea //​Genymotion//​ (aceasta poate fi și căutată, astfel încât identificarea să se realizeze mai facil); se apasă butonul //Install plugin//​\\ ​
 +{{ :​laboratoare:​laborator01:​genymotionandroidstudio03.png?​nolink&​600 }}
 +    * se confirmă descărcarea și instalarea plugin-ului Genymotion\\ ​
 +{{ :​laboratoare:​laborator01:​genymotionandroidstudio04.png?​nolink&​600 }}
 +    * încărcarea propriu-zisă a plugin-ului Genymotion va fi realizată după repornirea mediului integrat de dezvoltare Android Studio\\ ​
 +{{ :​laboratoare:​laborator01:​genymotionandroidstudio05.png?​nolink&​600 }}\\ 
 +{{ :​laboratoare:​laborator01:​genymotionandroidstudio06.png?​nolink&​600 }}
 +    * accesarea plugin-ului Genymotion poate fi realizată din bara de unele, cu condiția ca aceasta să fie vizibilă (conform configurării din //View// → //​Toolbar//​)\\ ​
 +{{ :​laboratoare:​laborator01:​genymotionandroidstudio07.png?​nolink }}\\ 
 +{{ :​laboratoare:​laborator01:​genymotionandroidstudio08.png?​nolink&​800 }}
 +
 +== Configurare Dispozitiv Virtual ==
 +
 +Se lansează în execuție Genymotion.
 +  * Linux - ''/​opt/​genymotion/​genymotion''​
 +
 +<note warning>​În situația în care este generată o eroare legată de versiunea bibliotecii ''​glibc''​
 +<​code>​
 +student@pdsd2015:​~$ sudo /​opt/​genymotion/​genymotion
 +/​opt/​genymotion/​genymotion:​ /​lib/​i386-linux-gnu/​i686/​cmov/​libc.so.6:​ version `GLIBC_2.15'​ not found (required by /​opt/​genymotion/​libQtGui.so.4)
 +/​opt/​genymotion/​genymotion:​ /​lib/​i386-linux-gnu/​i686/​cmov/​libc.so.6:​ version `GLIBC_2.15'​ not found (required by /​opt/​genymotion/​libQtNetwork.so.4)
 +/​opt/​genymotion/​genymotion:​ /​lib/​i386-linux-gnu/​i686/​cmov/​libc.so.6:​ version `GLIBC_2.15'​ not found (required by /​opt/​genymotion/​libQtCore.so.4)
 +</​code>​
 +este necesar să se instaleze o versiune mai recentă (experimentală).
 +
 +Se modifică fișierul care conține lista locațiilor de la care pot fi descărcate pachetele (''/​etc/​apt/​sources.list''​),​ specificându-se o nouă sursă:
 +
 +<​code>​
 +student@pdsd2015:​~$ sudo gedit /​etc/​apt/​sources.list
 +</​code>​
 +
 +<file list /​etc/​apt/​sources.list>​
 +# ...
 +deb http://​ftp.debian.org/​debian sid main
 +# ...
 +</​file>​
 +
 +Se actualizează baza de date cu locațiile de la care pot fi descărcate pachetele.
 +
 +<​code>​
 +student@pdsd2015:​~$ sudo apt-get update
 +</​code>​
 +
 +Se instalează pachetul ''​eglibc''​.
 +
 +<​code>​
 +student@pdsd2015:​~$ sudo apt-get -t sid install libc6 libc6-dev libc6-dbg
 +</​code>​
 +
 +(pentru platformele pe 64 de biți se va instala pachetul ''​libc6-amd64''​).
 +
 +În timpul instalării,​ unele servicii afectate vor fi repornite, fiind solicitat acceptul utilizatorului în acest sens.
 +
 +Este necesară repornirea mașinii după care fișierul care conține locațiile de la care pot fi descărcate pachetele trebuie restaurat la starea inițială (cu actualizarea corespunzătoare a bazei de date).
 +</​note>​
 +
 +  * Windows - se rulează fișierul ''​genymotion.exe''​ din directorul de instalare al emulatorului.
 +
 +Inițial, se solicită descarcarea unei imagini corespunzătoare pentru un dispozitiv mobil virtual.
 +
 +{{ :​laboratoare:​laborator01:​genymotionvirtualdevice01.png?​nolink }}
 +
 +<note tip>​Imaginea pentru dispozitivul mobil virtual trebuie descărcată doar o singură dată.</​note>​
 +
 +  * Se apasă butonul //Add// (+)\\ {{ :​laboratoare:​laborator01:​genymotionvirtualdevice02.png?​nolink&​600 }}
 +  * Se realizează procesul de autentificare prin furnizarea numelui de utilizator și a parolei, prin accesarea butonului //Sign in//\\ {{ :​laboratoare:​laborator01:​genymotionvirtualdevice03.png?​nolink&​600 }}\\ {{ :​laboratoare:​laborator01:​genymotionvirtualdevice04.png?​nolink }}
 +
 +<note important>​Autentificarea se face cu numele de utilizator ''​pdsd''​ și parola ''​pdsd''​.</​note>​
 +
 +  * Se caută dispozitive mobile virtuale în funcție de versiunea de Android (4.1.1) și se selectează pentru instalare //Nexus S - 4.1.1 - API 16 - 480x800//; se apasă butonul //Next//\\ {{ :​laboratoare:​laborator01:​genymotionvirtualdevice05.png?​nolink&​600 }}\\ {{ :​laboratoare:​laborator01:​genymotionvirtualdevice06.png?​nolink&​600 }}
 +
 +  * Se afișează detaliile dispozitivului mobil care se dorește a fi instalat pentru care se poate indica și o denumire sugestivă; se apasă butonul //Next//\\ {{ :​laboratoare:​laborator01:​genymotionvirtualdevice07.png?​nolink&​600 }}
 +  * După ce s-a realizat instalarea, se apasă butonul ''​Finish''​.\\ {{ :​laboratoare:​laborator01:​genymotionvirtualdevice08.png?​nolink&​600 }}
 +  * Pornirea unui dispozitiv mobil virtual se face apăsând butonul ''​Play''​.\\ {{ :​laboratoare:​laborator01:​genymotionvirtualdevice09.png?​nolink&​600 }}
 +
 +<note important>​În situația în care nu pot fi compilate sursele de Android, se va instala pachetul ''​lib32z1''​ cu ''​sudo apt-get install lib32z1''​.</​note>​
 +
 +=== AVD (Android Virtual Device) ===
 +
 +Ca alternativă la Genymotion, pot fi configurate dispozitive virtuale care vor fi rulate folosind emulatorul standard din cadrul SDK-ului de Android. De regulă, acestea sunt mai lente, consumă mai multă memorie și nu oferă la fel de multe facilități cu privire la funcționalitățile dispozitivului propriu-zis.
 +
 +Configurarea unui dispozitiv virtual se face prin intermediul aplicației //Android Virtual Device (AVD) Manager//, livrată împreună cu SDK-ul Android.
 +
 +== Linux ==
 +
 +<​code>​
 +student@pdsd2015:​~$ cd /​opt/​android-sdk-linux/​tools/​
 +student@pdsd2015:​~$ sudo ./android avd
 +</​code>​
 +
 +== Windows ==
 +
 +<​code>​
 +C:​\Users\Pdsd2015>​cd "​C:​\Program Files (x86)\Android\android-sdk"​
 +C:\Program Files (x86)\Android\android-sdk>​ "AVD Manager.exe"​
 +</​code>​
 +
 +=== ===
 +
 +Utilitarul listează toate dispozitivele virtuale Android, oferind totodată posibilitatea de a crea unele noi.
 +
 +{{ :​laboratoare:​laborator01:​androidvirtualdevice01.png?​nolink&​600 }}
 +
 +Procesul de configurare a unui dispozitiv virtual Android implică specificarea următoarelor proprietăți:​
 +  - denumire (//AVD Name//): caracterele permise sunt litere minuscule / majuscule (a-z, A-Z), ''​.'',​ ''​_''​ și ''​-''​.
 +  - dispozitiv virtual (//​Device//​):​ se alege dintr-o listă în care fiecare dispozitiv virtual este identificat prin dimensiunea ecranului (diagonală exprimată în inchi, rezoluție exprimată în pixeli - lungime x lățime, densitate: ''​ldpi'',​ ''​mdpi'',​ ''​hdpi'',​ ''​xhdpi'',​ ''​xxhdpi'',​ ''​tvdpi''​)
 +  - nivelul de API care va fi folosit (//​Target//​),​ în funcție de ceea ce a fost instalat anterior
 +  - tipul de procesor (//​CPU/​ABI//​):​ ''​ARM (armeabi-v7a)'',​ ''​MIPS (mips)'',​ ''​Intel Atom (x86)''​
 +  - posibilitatea de a folosi tastatura sistemului gazdă (//​Keyboard//​) este activată în cazul în care este selectată opțiunea //Hardware keyboard present//
 +  - tipul de interfață grafică (//Skin//)
 +  - utilizarea unor dispozitive ale sistemului gazdă pentru camerele dispozitivului virtual (//Front Camera//, //Back Camera//)
 +  - valorile corespunzătoare pentru dimensiunea memoriei RAM și a heap-ului (//Memory Options//)
 +  - valoarea corespunzătoare spațiului de stocare pe discul local (//Internal Storage//)
 +  - informații cu privire la cardul de memorie (//SD Card//): dimensiune (exprimată în MB), fișier din cadrul sistemului gazdă care să îi reflecte conținutul
 +  - opțiuni legate de emulare (//​Emulation Options//)
 +    - //​Snapshot//​ - permite ca starea dispozitivului virtual să fie stocată, astfel încât acesta să pornească mai rapid ulterior
 +    - //Use Host GPU// - folosirea unității de procesare grafică a sistemului gazdă
 +
 +{{ :​laboratoare:​laborator01:​androidvirtualdevice02.png?​nolink&​400 }}
 +
 +Rezultatele procesului de configurare a dispozitivului virtual pot fi vizualizate într-o fereastră care rezumă proprietățile specifice:
 +
 +{{ :​laboratoare:​laborator01:​androidvirtualdevice03.png?​nolink&​600 }}
 +
 +<note tip>​Dispozitivele virtuale sunt stocate în directorul ''​$HOME/​.android/​avd'',​ pentru fiecare dintre acestea fiind stocat un fișier .avd și un fișier .ini (care conțin toate proprietățile dispozitivului virtual, acestea putând fi modificate și manual).</​note>​
 +
 +Pentru fiecare dispozitiv virtual din listă, există mai multe opțiuni:
 +
 +  - lansare în execuție (//​Start...//​)
 +  - editarea configurației (//​Edit...//​)
 +  - restaurare (//​Repair...//​) - în situația în care dispozitivul virtual nu a putut fi încărcat
 +  - ștergere (//​Delete...//​)
 +  - vizualizarea configurației (//​Details...//​)
 +
 +{{ :​laboratoare:​laborator01:​androidvirtualdevice04.png?​nolink&​600 }}
 +
 +Lansarea în execuție poate fi realizată:
 +  - prin accesarea butonului //​Start...//​ corespunzător unui dispozitiv virtual
 +  - prin intermediul utilitarului ''​emulator''​ aflat în subdirectorul ''​tools''​ al SDK-ului Android
 +
 +== Linux ==
 +
 +<​code>​
 +student@pdsd2015:​~$ cd /​opt/​android-sdk-linux/​tools/​
 +student@pdsd2015:​~$ sudo ./emulator @Nexus_S
 +</​code>​
 +
 +== Windows ==
 +
 +<​code>​
 +C:​\Users\Pdsd2015>​cd "​C:​\Program Files (x86)\Android\android-sdk\tools"​
 +C:\Program Files (x86)\Android\android-sdk\tools>​ emulator @Nexus_S
 +</​code>​
 +
 +=== ===
 +
 +<note important>​Pentru arhitecturile pe 32 de biți, utilitarul ''​emulator''​ trebuie rulat cu opțiunea ''​-force-32bit''​. </​note>​
 +
 +Opțiunile prin care poate fi controlată lansarea în execuție sunt:
 +  - scalarea ecranului la dimensiunea reală (specificându-se dimensiunea ecranului - exprimată în inchi și rezoluția acestuia - exprimată în dpi)
 +  - ștergerea datelor utilizatorului de pe discul local al dispozitivului virtual
 +  - rularea pornind de la o stare anterioară (//eng.// snapshot)
 +  - stocarea stării dispozitivului virtual
 +
 +{{ :​laboratoare:​laborator01:​androidvirtualdevice05.png?​nolink }}
 +
 +Emulatorul furnizat împreună cu SDK-ul Android conține o secțiune a ecranului și o secțiune a controalelor utilizatorului (butoane pentru controlul volumului, pornire/​oprire,​ tastele home / menu (meniu contextual) / back / search și un pad cu tastele direcționale (de regulă, dezactivat).
 +
 +{{ :​laboratoare:​laborator01:​androidvirtualdevice06.png?​nolink&​600 }}
 +
 +<note tip>În funcție de capabilitățile hardware ale sistemului gazdă, este posibil ca pornirea dispozitivului virtual în cadrul emulatorului să dureze o perioadă de timp mai mare.</​note>​
 +
 +==== Dispozitiv Mobil Fizic ====
 +
 +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 }}
 +
 +===== Resurse Utile =====
 +
 +[[http://​developer.android.com/​about/​dashboards/​index.html|Dashboards]]\\ ​
 +[[http://​developer.android.com/​sdk/​index.html|Download Android Studio and SDK Tools - Android Developers]]\\
 +[[https://​www.genymotion.com|Genymotion]]\\
 +[[http://​stackoverflow.com/​questions/​10863613/​how-to-upgrade-glibc-from-version-2-13-to-2-15-on-debian|How to upgrade glibc from version 2.13 to 2.15 on Debian?]]
laboratoare/laborator01_old.txt · Last modified: 2017/02/20 20:54 (external edit)
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0