Chucker para Kotlin: guia completo com exemplos
1. O que é e para que serve
Chucker é uma biblioteca poderosa para depuração de requisições HTTP em aplicativos Android, escrita em Kotlin. Ela permite que desenvolvedores interceptem, registrem e inspecionem todo o tráfego de rede que passa pelo cliente OkHttp diretamente no dispositivo. Diferente do registro padrão no Logcat, o Chucker oferece uma interface gráfica intuitiva em uma tela separada (Activity), onde é possível visualizar cabeçalhos, corpos de requisições e respostas, códigos de status, tempo de execução e tamanho dos dados.
O principal objetivo do Chucker é simplificar o processo de depuração da comunicação de rede. Em vez de conectar o dispositivo ao computador e filtrar logs, o desenvolvedor pode abrir o aplicativo e ver imediatamente todas as transações HTTP. Isso é especialmente útil ao testar em dispositivos reais, quando o acesso ao ADB é limitado, ou ao trabalhar com equipes de QA, que podem fornecer capturas de tela de erros com informações detalhadas sobre a requisição.
O Chucker também oferece suporte a filtros por tipo de conteúdo (JSON, XML, imagens), busca por URL, visualização de erros e exceções, além de exportação de logs para arquivo. A biblioteca coleta automaticamente informações sobre erros de SSL, timeouts e outros problemas de rede, tornando-se uma ferramenta indispensável para qualquer desenvolvedor Android que trabalhe com APIs REST.
2. Instalação
O Chucker é distribuído via Maven Central. Para instalá-lo, é necessário adicionar as dependências no arquivo build.gradle.kts (ou build.gradle) do módulo do seu aplicativo.
Importante: A biblioteca não foi projetada para instalação via pip, npm ou cargo. Ela é uma biblioteca Android e é adicionada através do sistema de build Gradle.
Comando para adicionar no build.gradle.kts (Module: app):
// build.gradle.kts (Module: app)
dependencies {
// Biblioteca principal do Chucker (apenas para builds debug)
debugImplementation("com.github.chuckerteam.chucker:library:4.0.0")
// Biblioteca No-Op (vazia) para builds release
releaseImplementation("com.github.chuckerteam.chucker:library-no-op:4.0.0")
}
Para Groovy (build.gradle):
// build.gradle (Module: app)
dependencies {
debugImplementation 'com.github.chuckerteam.chucker:library:4.0.0'
releaseImplementation 'com.github.chuckerteam.chucker:library-no-op:4.0.0'
}
Explicação: O uso de debugImplementation garante que o Chucker estará disponível apenas em builds de depuração. Já o releaseImplementation com a versão library-no-op substitui todas as chamadas do Chucker por funções vazias, evitando vazamento de dados em produção e sem aumentar o tamanho do APK.
3. Início rápido — exemplo mínimo funcional
Após instalar a biblioteca, é necessário criar um OkHttpClient e adicionar o interceptador do Chucker a ele. Em seguida, esse cliente é usado para criar o Retrofit ou qualquer outro cliente HTTP.
// MainActivity.kt
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.chuckerteam.chucker.api.ChuckerCollector
import com.chuckerteam.chucker.api.ChuckerInterceptor
import okhttp3.OkHttpClient
import okhttp3.Request
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 1. Cria o coletor para armazenar os logs
val collector = ChuckerCollector(this)
// 2. Cria o interceptador
val chuckerInterceptor = ChuckerInterceptor.Builder(this)