pátek 22. listopadu 2013

Android Emulátor II

Přesun Emulátoru na jiný stroj

Jak jsem již zmiňoval ve svém minulém příspěvku, Android emulátor nesmí být provozován ve virtualizovaném prostředí. To že se Android Emulátor nesnáší s virtuálními stroji ale neznamená, že musíte nutně reinstalovat Delphi a všechny používané komponenty. Na "fyzický" stroj stačí přesunout pouze SDK Manager s Emulátorem a následně zprovoznit vzdálené ladění.


Co je PuTTY

PuTTY je nenáročný klient, který umožňuje připojit se ke vzdálenému počítači a předávat mu příkazy ke zpracování. Komunikace může probíhat prostřednictvím protokolů Telnet (Telecommunication Network), RLogin (Remote Login) nebo SSH(Secure Shell). Protože Delphi využívá toho, že Android simulátor lze plnohodnotně ovládat z příkazové řádky, můžeme za pomoci PuTTY "přesměrovat" tyto příkazy mimo virtuální stroj. Následující návod je převzat z
Delphi.org, kde byl ovšem jako vzdálený stroj použit Mac.



1)Konfigurace SSH Host

Na vzdálený stroj nainstalujte SSH server. Některé zdroje doporučují neinstalovat FreeSSHd jako službu, ale spouštět jej jako aplikaci. Po instalaci a spuštění se FreeSSHd zobrazí v oznamovací oblasti hlavního panelu:



Kliknutím pravým tlačítkem myši na ikonu FreeSSHd otevřeme dialog umožňující upravit jednotlivá nastavení. Nejprve v záložce "Tunneling" povolíme přesměrování (forwarding) lokálních portů:



Dále v záložce "Users" přidáme uživatelský účet, kterým se budeme k počítači přihlašovat:



Pokud byla instalace úspěšná, v záložce "Server status" by mělo být u SSH serveru zobrazeno zelené zatržení a informace, že SSH server běží:


2)Instalace Android SDK na vzdálený stroj

Stáhněte Android SDK a rozbalte jej do zvoleného adresáře. Nakonfigurujte a spusťte AVD (viz Anroid Emulátor I).


3)Instalace a konfigurace PuTTY

Nyní stáhneme aplikaci PuTTY. Protože se jedná o přímo spustitelný soubor, není jej třeba instalovat. Po spuštění je třeba provést konfiguraci připojení. V sekci "Session" vyplníme jméno nebo IP adresu vzdáleného stroje. Port pro SSH je typicky 22, nezapomeňte si ale ověřit, zda je zvolený port povolen v nastavení Vašeho firewallu.



V sekci "SSH ->Tunnels" je třeba nastavit přesměrování portů 5554 a 5555, které používá Android emulátor, z lokálního na vzdálený počítač:



Tato nastavení by měla být dostatečná a je tedy možné PuTTY spustit kliknutím na tlačítko "Open". Otevře se příkazový řádek s požadavkem na zadání uživatelského jména a hesla (viz nastavení FreeSSHd):



Po úspěšném přihlášení můžeme PuTTY minimalizovat. Okno však nezavírejte, připojení je aktivní jen po dobu, kdy je PuTTY spuštěné.


4)Otestování přístupu z Delphi

Na počítači (v mém případě ve virtuálním prostředí VMWare) spustíme Delphi a otevřeme nový nebo existující Fire Monkey Mobile Application projekt. Dále otevřeme příkazový řádek (CMD) a spustíme následující příkazy (viz ADB dokumentace):
  • adb kill-server
  • adb devices
Tip: ADB (Android Debug Bridge) se standardně nachází v adresáři "C:\Users\Public\Documents\RADStudio\12.0\PlatformSDKs\adt-bundle-windows-x86-20130522\sdk\platform-tools". CMD je tak nutné spustit z tohoto umístění, nebo uvedenou cestu přidat do PATH.



Nyní v Delphi v okně "Project Manager" klikneme pravým tlačítkem myši na uzel "Target" a aktualizujeme jej pomocí volby "Refresh". Pokud se vše podařilo, nabídka se rozšíří o zařízení emulované na vzdáleném stroji:



Z pohledu Delphi je práce se "vzdáleným" emulátorem zcela totožná, jako kdyby běžel na stejném stroji, jako vlastní vývojové prostředí.

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.