Google+ Followers

sobota 9. listopadu 2013

Android Emulátor I.


Android Virtual Device

Přes maximální snahu společnosti Embarcadero, aby byli programátoři a vývojáři co nejméně zatěžováni odlišnostmi jednotlivých cílových platforem, je přece jen vývoj pro mobilní zařízení v řadě ohledů specifický. Především zde není možné vyvíjenou aplikaci jednoduše spouštět a ladit na stejném stroji, na kterém je vytvářena. Pro účely ladění je potřeba použít buď fyzické zařízení nebo jej simulovat/emulovat. Při vývoji aplikací pro iOS je využíván simulátor, pro Android pak emulátor. Zatímco simulátor je standardní Wintel aplikace, Android emulátor skutečně "emuluje" procesor ARM.

Emulátor PRO a PROTI

Pro
  • Vyzkoušení reálného vzhledu aplikace na zařízeních s různou uhlopříčkou a rozlišením
Proti
  • V některých případech komplikovaná konfigurace
  • Emulátor je "opravdu, ale opravdu" velmi pomalý


Když emulátor nefunguje

Mnoho vývojářů má problém se zprovozněním emulátoru. I když lze emulátor spustit, po nasazení aplikace zůstane obrazovka emulátoru černá, aplikace se nezobrazí vůbec, nebo se po často velmi dlouhé době zobrazí hlášení "Application isn't responding". Příčin, proč není emulátor funkční, může být celá řada. Zde jsou ty nejčastější:
  • Emulátor není správně nakonfigurován
  • Emulátor je instalován ve virtuálním prostředí (VMWare, VirtualPC,…)
  • V počítači není vhodná grafická karta nebo ovladače


Konfigurace Emulátoru

Spolu s Delphi XE5 instalovaný Android SDK již obsahuje nakonfigurované AVD (Android Virtual Device) pojmenované "rsex5_android". Pro vytvoření vlastní konfigurace je třeba otevřít Android SDK Manager (např. prostřednictvím zástupce "Android Tools" z nabídky "Start").




V aplikaci "Android SDK Manager" následně otevřeme správce virtuálních zařízení (nabídka "Tools->Manage AVDs…“).




AVD Manager slouží ke správě a přímému spouštění existujících virtuálních zařízení. U každého ze zařízení je také ikona, která indikuje jeho stav.



Pro vytvoření nového zařízení je vhodné nepoužít přímo tlačítko "New…", ale přepnout se do záložky "Device Definitions". Zde naleznete připravené definice nejběžnějších zařízení, ale není problém vytvořit definici vlastní.




Při definování vlastního zařízení je třeba zadat odpovídající fyzické parametry jako je úhlopříčka, rozlišení nebo paměť. Dále lze určit, které senzory a další hardwarové prostředky má zařízení k dispozici a mají být emulovány.



Po zadání všech požadovaných hodnot je zpřístupněno tlačítko "Create Device". To otevře dialog, kde je možné ještě upřesnit některá nastavení.



Z pohledu vývojových nástrojů Embarcadero je zásadní nastavení následujících parametrů:

Target - Určuje verzi Android SDK Platform API, s kterým má být emulované zařízení kompatibilní. 
CPU/ABI - zde lze vybrat platformu, která má být emulována. Možnosti jsou dvě a to buď ARM nebo Intel Atom. V našem případě je třeba zvolit emulaci procesoru ARM.
Emulation Options - Pro ladění aplikací vytvořených v Delphi a v budoucnu také v C++ Builderu musí být zapnuta HW akcelerace (volba "Use Host GPU"). Tento požadavek vyplývá z nároků aplikačního rámce FireMonkey. Grafické operace tak nebude zpracovávat emulátor, ale budou přesměrovány na GPU grafické karty. Zároveň nelze použít volbu "Snapshot", která ukládá obsah emulované RAM a následně ji používá místo "bootování" Androidu pro rychlejší start emulátoru. Podmínkou pro použití HW akcelerace jsou:
  • Android SDK Tools, Revize 17 nebo vyšší
  • Android SDK Platform API 15, Revize 3 nebo vyšší
  • Grafická karta s podporou OpenGL
Provedená nastavení nakonec potvrdíme tlačítkem "OK". Tím je virtuální zařízení připraveno k použití. Během startu vypisuje emulátor informace o průběhu inicializace jednotlivých modulů. V případě, že bude obsahovat hlášení "Could not initialize OpenglES emulation", znamená to, že s nejvyšší pravděpodobností nemáte instalovanou vhodnou kartu nebo ovladače k ní. Stejné hlášení obdržíte při spuštění emulátoru ve virtuálním stroji.



V příštím příspěvku si popíšeme, jak zpřístupnit emulátor z vývojového prostředí instalovaného ve virtuálním stroji.