MojAndroid

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 :

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ViewServer.get(this).addWindow(this);
    }
    @Override
    public void onDestroy() {
     super.onDestroy();
     ViewServer.get(this).removeWindow(this);
    }
    @Override
    public void onResume() {
     super.onResume();
     ViewServer.get(this).setFocusedWindow(this);
    }

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.

22.11.2012

Pravidlá diskusie

Portál MojAndroid.sk si vyhradzuje právo zmazať neslušné, rasistické a vulgárne príspevky, ako aj osobné útoky na redakciu, či diskutérov v komentároch pod článkom bez ďalšieho upozornenia. V prípade uverejňovania odkazov na externé stránky, je komentár automaticky preposlaný do redakcie na schválenie.

+