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:

  1. 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.
  2. 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.
  3. Motorul Android este reprezentat de:
    1. 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)
    2. 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.
  4. 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.
  5. 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ă:

  • 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.
  • 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ă.
  • 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)
    student@pdsd2015:~$ file /sbin/init
  • 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
    student@pdsd2015:~$ sudo mkdir -p /usr/local/java 
  • 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 Java SE Development Kit 8 Downloads în directorul /tmp
  • se dezarhivează binarele de Java în directorul /usr/local/java
    student@pdsd2015:~$ cd /usr/local/java
    student@pdsd2015:/usr/local/java$ sudo tar xvzf /tmp/jdk-8u31-linux-<platforma>-<arhitectura>.tar.gz

    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
    student@pdsd2015:~$ rm -f /tmp/jdk-8u31-linux-<platforma>-<arhitectura>.tar.gz
  • 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)
    student@pdsd2015:~$ sudo gedit /etc/profile
    /etc/profile
    # ...
     
    JAVA_HOME=/usr/local/java/jdk1.8.0_31
    PATH=$PATH:$JAVA_HOME/bin
    export JAVA_HOME
    export PATH
     
    # ...
  • se indică sistemului de operare locația la care se găsește instalată Java
    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 
  • se indică sistemului de operare faptul că versiunea instalată de Java este cea implicită
    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 
  • se încarcă fișierul /etc/profile ce conține variabilele de sistem globale
    student@pdsd2015:~$ . /etc/profile

Încărcarea variabilelor de sistem globale din fișierul /etc/profile se va face numai după repornirea sistemului de operare.

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 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:

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
Windows

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:
    student@pdsd2015:~$ cd /opt/android-sdk-linux/tools
    student@pdsd2015:/opt/android-sdk-linux/tools$ sudo ./android
  • 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

  • se acceptă termenii și condițiile de licențiere.

  • în fereastra de jurnalizare sunt afișate informații cu privire la starea pachetelor instalate

Operațiile de descărcare și instalare pot dura o perioadă de timp mai îndelungată, în funcție de viteza conexiunii la Internet.

Windows
  • se lansează în execuție fișierul descărcat, conținând SDK-ul de Android

  • 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

  • se solicită să se specifice tipul instalării

  • 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

  • se specifică intrarea din meniul de start de unde va putea fi accesat ulterior

  • se afișează rezultatele instalării

  • î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)

  • 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

  • în secțiunea Compatibility se bifează opțiunea Run this program as an administrator și se definitivează modificările accesând butonul Apply

  • 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 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
    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
  • arhitectura pe 64 de biți
    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

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:

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

  • se apasă butonul Add… și în câmpul Name se specifică o denumire sugestivă (spre exemplu, Android SDK Tools); se apasă butonul OK

  • se selectează Developer Tools; se apasă butonul Next

  • se vor afișa detaliile pentru instalare; se apasă butonul Next

  • se acceptă termenii și condițiile pentru licențierea conținutului

  • se confirmă instalarea de programe care au conținut nesemnat

  • se restartează Eclipse Luna SR1a (4.4.1)

  • 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 WindowPreferencesAndroid, secțiunea SDK Locations

  • î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

Android Studio

Linux
  • se descarcă arhiva .zip corespunzătoare în directorul /opt:
    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
  • se lanseaza in executie mediul integrat de dezvoltare:
    student@pdsd2015:/opt$ cd android-studio/bin
    student@pdsd2015:/opt/android-studio/bin$ sudo ./studio.sh

Procesul de configurare a mediului integrat de dezvoltare Android Studio implică următorii pași:

  • 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;

  • specificarea locației la care se găsește instalat JDK-ul (minim versiunea 7.0);

  • indicarea tipului de configurație dorit:
    • standard (cele mai frecvent utilizate configurații / opțiuni);
    • particularizat;

  • 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;

  • î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ă;

  • se acceptă termenii și condițiile de licențiere pentru pachetele corespunzătoare SDK-ului de Android;

  • pe măsura instalării pachetelor sunt afișate detalii cu privire la starea acestora;

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

Windows

  • î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)

  • se acceptă termenii și condițiile pentru licențiere

  • se indică locația la care va fi realizată instalarea și spațiul de pe disc care va fi ocupat

  • î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

  • se specifică intrarea din meniul de start de unde va putea fi accesat ulterior

  • se afișează rezultatele instalării

  • î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)

  • 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

  • în Control PanelSystem se accesează din meniu opțiunea Advanced System Settings

  • în cadrul secțiunii Advanced se accesează butonul Environment Variables…

  • se definește variabila de mediu JAVA_HOME în secțiunea System Variables prin accesarea butonului New…

  • î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)

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

  • în continuare, se urmează aceleași etape ca în cazul 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
    student@pdsd2015:~$ cd /opt
    student@pdsd2015:/opt$ sudo wget http://pdsd2015.andreirosucojocaru.ro/resources/genymotion-2.3.1_<platforma>.bin

    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

Emulatorul Genymotion are nevoie de o mașină virtuală în contextul căreia să ruleze.

  • Linux
    student@pdsd2015:~$ sudo apt-get install openbox virtualbox
  • 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
    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
  • 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

  • se apasă butonul Add… și în câmpul Name se specifică o denumire sugestivă (spre exemplu, Genymotion Plugin); se apasă butonul OK

  • se selectează Genymobile; se apasă butonul Next

  • se vor afișa detaliile pentru instalare; se apasă butonul Next

  • se acceptă termenii și condițiile pentru licențierea conținutului; se apasă butonul Finish

  • se confirmă instalarea de programe care au conținut nesemnat

  • se restartează Eclipse Luna SR1a (4.4.1)

  • se specifică locația la care este instalat emulatorul Genymotion WindowPreferencesGenymobileGenymotion, completându-se câmpul Genymotion directory


  • fereastra de gestiune a dispozitivelor mobile virtuale Genymotion se deschide folosind pictograma corespunzătoare din Toolbar sau apăsând Ctrl+6.

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
    • FileSettings

  • în fereastra Settings, în cadrul secțiunii IDE Settings se accesează opțiunea Plugins; se apasă butonul Browse repositories…

  • î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

  • se confirmă descărcarea și instalarea plugin-ului Genymotion

  • încărcarea propriu-zisă a plugin-ului Genymotion va fi realizată după repornirea mediului integrat de dezvoltare Android Studio


  • accesarea plugin-ului Genymotion poate fi realizată din bara de unele, cu condiția ca aceasta să fie vizibilă (conform configurării din ViewToolbar)


Configurare Dispozitiv Virtual

Se lansează în execuție Genymotion.

  • Linux - /opt/genymotion/genymotion

În situația în care este generată o eroare legată de versiunea bibliotecii glibc

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)

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ă:

student@pdsd2015:~$ sudo gedit /etc/apt/sources.list
/etc/apt/sources.list
# ...
deb http://ftp.debian.org/debian sid main
# ...

Se actualizează baza de date cu locațiile de la care pot fi descărcate pachetele.

student@pdsd2015:~$ sudo apt-get update

Se instalează pachetul eglibc.

student@pdsd2015:~$ sudo apt-get -t sid install libc6 libc6-dev libc6-dbg

(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).

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

Imaginea pentru dispozitivul mobil virtual trebuie descărcată doar o singură dată.

  • Se apasă butonul Add (+)
  • Se realizează procesul de autentificare prin furnizarea numelui de utilizator și a parolei, prin accesarea butonului Sign in

Autentificarea se face cu numele de utilizator pdsd și parola pdsd.

  • 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 - 480×800; se apasă butonul Next

  • 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
  • După ce s-a realizat instalarea, se apasă butonul Finish.
  • Pornirea unui dispozitiv mobil virtual se face apăsând butonul Play.

În situația în care nu pot fi compilate sursele de Android, se va instala pachetul lib32z1 cu sudo apt-get install lib32z1.

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
student@pdsd2015:~$ cd /opt/android-sdk-linux/tools/
student@pdsd2015:~$ sudo ./android avd
Windows
C:\Users\Pdsd2015>cd "C:\Program Files (x86)\Android\android-sdk"
C:\Program Files (x86)\Android\android-sdk> "AVD Manager.exe"

Utilitarul listează toate dispozitivele virtuale Android, oferind totodată posibilitatea de a crea unele noi.

Procesul de configurare a unui dispozitiv virtual Android implică specificarea următoarelor proprietăți:

  1. denumire (AVD Name): caracterele permise sunt litere minuscule / majuscule (a-z, A-Z), ., _ și -.
  2. 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)
  3. nivelul de API care va fi folosit (Target), în funcție de ceea ce a fost instalat anterior
  4. tipul de procesor (CPU/ABI): ARM (armeabi-v7a), MIPS (mips), Intel Atom (x86)
  5. posibilitatea de a folosi tastatura sistemului gazdă (Keyboard) este activată în cazul în care este selectată opțiunea Hardware keyboard present
  6. tipul de interfață grafică (Skin)
  7. utilizarea unor dispozitive ale sistemului gazdă pentru camerele dispozitivului virtual (Front Camera, Back Camera)
  8. valorile corespunzătoare pentru dimensiunea memoriei RAM și a heap-ului (Memory Options)
  9. valoarea corespunzătoare spațiului de stocare pe discul local (Internal Storage)
  10. 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
  11. opțiuni legate de emulare (Emulation Options)
    1. Snapshot - permite ca starea dispozitivului virtual să fie stocată, astfel încât acesta să pornească mai rapid ulterior
    2. Use Host GPU - folosirea unității de procesare grafică a sistemului gazdă

Rezultatele procesului de configurare a dispozitivului virtual pot fi vizualizate într-o fereastră care rezumă proprietățile specifice:

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

Pentru fiecare dispozitiv virtual din listă, există mai multe opțiuni:

  1. lansare în execuție (Start…)
  2. editarea configurației (Edit…)
  3. restaurare (Repair…) - în situația în care dispozitivul virtual nu a putut fi încărcat
  4. ștergere (Delete…)
  5. vizualizarea configurației (Details…)

Lansarea în execuție poate fi realizată:

  1. prin accesarea butonului Start… corespunzător unui dispozitiv virtual
  2. prin intermediul utilitarului emulator aflat în subdirectorul tools al SDK-ului Android
Linux
student@pdsd2015:~$ cd /opt/android-sdk-linux/tools/
student@pdsd2015:~$ sudo ./emulator @Nexus_S
Windows
C:\Users\Pdsd2015>cd "C:\Program Files (x86)\Android\android-sdk\tools"
C:\Program Files (x86)\Android\android-sdk\tools> emulator @Nexus_S

Pentru arhitecturile pe 32 de biți, utilitarul emulator trebuie rulat cu opțiunea -force-32bit.

Opțiunile prin care poate fi controlată lansarea în execuție sunt:

  1. scalarea ecranului la dimensiunea reală (specificându-se dimensiunea ecranului - exprimată în inchi și rezoluția acestuia - exprimată în dpi)
  2. ștergerea datelor utilizatorului de pe discul local al dispozitivului virtual
  3. rularea pornind de la o stare anterioară (eng. snapshot)
  4. stocarea stării dispozitivului virtual

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

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

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 ToolsDeveloper optionsDebuggingUSB debugging.

Resurse Utile

laboratoare/laborator01_old.txt · Last modified: 2016/02/09 11:31 (external edit)
CC Attribution-Share Alike 3.0 Unported
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0