Ako je zname tak Android SDK skryva kvantum nastrojov, ktore su pre vyvojara zaujimave a je na skodu, ze niektore z nich zostavaju v uzadi napriek tomu, ze aj pre zaciatocnikov mozu byt uzitocne.
Jednym z nich je HierarchyViewer – nastroj, ktory umoznuje vizualnu prezentaciu hierarchie layoutov a komponentov prezentujucich aktualnu obrazovku a druhou vlastnostou je pixel perfect pohlad na aplikaciu.
Na rozdiel od nejakeho vizualneho dizaneru z Eclipse ci Preview z IntelliJ Idei, v pripade HierarchyVIewer-u ide o ladenie v ramci beziacej aplikacie a to bud na emulatore alebo na telefone.
Na http://developer.android.com/tools/debugging/debugging-ui.html najdete podrobnejsi popis.
Potialto je vsetko skvele a nejeden z nas po precitani tutorialu spustil na svojom telefone vlastnu aplikaciu, pripojil usb, nastartoval hierarchyviewer a ….nic.
HierarchyViewer sa nedokazal k telefonu pripojit a to napriek tomu, ze tento telefon k vyvoju bezne pouzivate, ci dokonca ho mate rootnuty. HierarchyViewer tvrdosijne opakuje do cierneho ticha terminalu:
09:54:33 E/hierarchyviewer: Unable to debug device Medfield2E90D3DA
09:55:14 E/hierarchyviewer: Unable to debug device Medfield2E90D3DA
09:57:29 E/hierarchyviewer: Unable to debug device Medfield2E90D3DA
V com je problem? Jednoducho Google pouzil vlastnu logiku ci nelogiku a tak tento nastroj je plne podporovany len telefonmi, ktore su vyvojarske. Samozrejme nie tymi, ktore si ako vyvojarske oznacite sami.
Existuje vsak moznost ako sa k informaciam dostat.
Prvym krokom je stiahnut si projekt Romana Guy-a z Gitu https://github.com/romainguy/ViewServer
Z celeho projektu je pre vas zaujimava trieda ViewServer, ktora dokaze vyvorit a ohandlovat spojenie medzi vasou aplikaciou a HierarchyViewerom.
Tuto triedu zahrnte do svojich zdrojakov a vo svojich triedach (aktivitach, fragmentoch) len zaimplementujete nasledovne :
Po kompilacii a instalacii vasej app do telefonu uz mozete veselo HierarchyViewer k aplikacii pripojit a ladit.
Samozrejme nie je potrebne toto implementovat do kazdej aktivity zvlast bohato postaci vytvorit nejaku tu BaseActivity s implementaciou a vlastne aktivity od tejto uz len extendovat. Rovnako je vhodne obalit tento kod blok, ktory skontroluje ci je aplikacia v produkcnom alebo dev stave.