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:
- 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ă:
- 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 (folosindsudo 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 Linuxmacosx
- sistemul de operare Mac OS X (doar versiuni pe 64 de biți)solaris
- sisteme de operare Solariswindows
- sisteme de operare Windows
arhitectura
poate avea valorile:i586
- arhitecturi pe 32 de bițix64
- arhitecturi pe 64 de bițisparcv9
- 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, precumvi
saunano
)
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
/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
Se descarcă 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:
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
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țiuneaProperties
- î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
- Help → Install new Software
- în secțiunea Work with se completează locația https://dl-ssl.google.com/android/eclipse
- 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 Window → Preferences → Android, 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
- se descarcă executabilul fără SDK-ul de Android și se rulează
- î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 Panel → System 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
)
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 valoareax86
- arhitecturi pe 32 de bițix64
- arhitecturi pe 64 de bițix64_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
- Help → Install new Software
- în secțiunea Work with se completează locația http://plugins.genymotion.com/eclipse/
- 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 Window → Preferences → Genymobile → Genymotion, 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
- File → Settings
- î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 View → Toolbar)
Configurare Dispozitiv Virtual
Se lansează în execuție Genymotion.
- Linux -
/opt/genymotion/genymotion
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.
- Se apasă butonul Add (+)
- Se realizează procesul de autentificare prin furnizarea numelui de utilizator și a parolei, prin accesarea butonului Sign in
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
.
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:
- 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ă
Rezultatele procesului de configurare a dispozitivului virtual pot fi vizualizate într-o fereastră care rezumă proprietățile specifice:
$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:
- 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…)
Lansarea în execuție poate fi realizată:
- prin accesarea butonului Start… corespunzător unui dispozitiv virtual
- prin intermediul utilitarului
emulator
aflat în subdirectorultools
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
emulator
trebuie rulat cu opțiunea -force-32bit
.
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
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).
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
.