Stetho: Uma “ponte de depuração” para aplicações Android

Igor Silva
Quick Mobile Labs
Published in
4 min readJul 20, 2016

Durante o desenvolvimento de aplicações Android, às vezes passamos por algumas dificuldades como, por exemplo, ter que verificar se os dados estão realmente sendo salvos no banco de dados SQLite, checar quais prefêrencias estão no SharedPreferences, verificar as requisições HTTP que estão sendo executadas e confirmar qual é a hierarquia de Views na Activity atual. É para essas e outras dificuldades que temos o Stetho, uma biblioteca de depuração OpenSource desenvolvida pela equipe do Facebook. Quando habilitada, os desenvolvedores ganham acesso ao Chrome Developers Tools, tendo assim uma experiência de “debugging” rica e interativa.

Como funciona?

Quando iniciamos o Stetho é aberto um servidor WebSockets HTTP que envia todas as informações de depuração através da conexão USB ao navegador. Essas informações podem ser acessadas pelo endereço chrome://inspect , conforme imagem abaixo.

Chrome Inspect Tools

Ao clicar em inspect temos acesso as Developer Tools.

Chrome Developer Tools

Agora basta utilizar as ferramentas disponíveis para depurar a sua aplicação.

Como utilizar?

O processo é bem simples para utilizar o Stetho na sua applicação . Primeiro é necessário adicioná-lo como depêndência do projeto:

// Gradle dependency on Stetho 
dependencies {
compile 'com.facebook.stetho:stetho:1.3.1'
}

Ou

<dependency>
<groupid>com.facebook.stetho</groupid>
<artifactid>stetho</artifactid>
<version>1.3.1</version>
</dependency>

Somente a biblioteca principal do Stetho é requerida, entretanto caso queira depurar as conexões de rede será necessário adicionar um dos interceptadores:

// Para OkHttp3dependencies { 
compile 'com.facebook.stetho:stetho-okhttp3:1.3.1'
}
// Para OkHttpdependencies {
compile 'com.facebook.stetho:stetho-okhttp:1.3.1'
}
// Para UrlConnectiondependencies {
compile 'com.facebook.stetho:stetho-urlconnection:1.3.1'
}

Agora precisamos iniciar o Stetho, isso deve ser feito em uma classe que herde a classe Application do android. Segue abaixo duas gists, uma da classe e outra do Manifesto da aplicação. As mesmas são da aplicação de demonstração desenvolvida para esse artigo.

Na aplicação de exemplo iremos utilizar a biblioteca de rede OkHttp e a de imagens Picasso. Para o melhor entendimento e acompanhamento do artigo recomendo clonar o projeto que está em https://github.com/jsilvaigor/stethosample .

Inspecionando conexões de rede

Na aplicação de exemplo possuímos três exemplos de requisições HTTP sendo um GET de JSON, um POST de JSON e um GET de arquivo binário.

Botões de ação, correspondentes as ações de rede

Cada um dos botões te levará a uma Activity onde será executada a ação. A seguir seguem imagens de como ficam as Activities e o Developer Tools, na aba Network, após a execução das três requisições.

Inspecionando o Shared Preferences

Na aplicação de exemplo possuímos uma Activity de configurações que salva as mesmas no Shared Preferences. Através do Developer Tools na aba Resources, sub-item Local Storage podemos visualizar e editar todas as preferências da aplicação.

Inspecionando o banco de dados da aplicação

Na aplicação possuímos uma Activity que efetua operações de escrita e leitura em um banco de dados SQLite local. Através do Developer Tools na aba Resources, sub-item Web SQL temos acesso a todos os bancos de dados da aplicação e é possível expandir os mesmos e visualizar suas tabelas. Como demonstrado nas imagens abaixo também é possível executar queries através do console a direita.

Conclusão

Durante este artigo foram apresentadas as mais importantes features, mas ainda temos outras disponíveis, como: integração com o JavaScript Console (possibilitando a execução de código JavaScript que consegue interagir com a aplicação), a visualização da hierarquia de views (similar a visualização hierarquica do HTML) e o Dumpapp que permite uma integração maior que o Developer Tools, possibilitando o desenvolvimento de plugins personalizados.

Portanto concluimos que a biblioteca Stetho possui diversas ferramentas que nos auxiliam bastante durante o desenvolvimento de aplicações Android.

Mais informações:

http://facebook.github.io/stetho/

https://code.facebook.com/posts/393927910787513/stetho-a-new-debugging-platform-for-android/

--

--