
Um garfo de chuck

Chucker simplifica a inspeção de solicitações/respostas HTTP (s) demitidas pelo seu aplicativo Android. Chucker trabalha como um interceptador OKHTTP, persistindo todos esses eventos dentro do seu aplicativo e fornecendo uma interface do usuário para inspecionar e compartilhar seu conteúdo.
Os aplicativos que usam Chucker exibirão uma notificação mostrando um resumo da atividade HTTP em andamento. Tocar na notificação lança a interface do usuário de Chucker completa. Os aplicativos podem opcionalmente suprimir a notificação e iniciar a interface do usuário do Chucker diretamente de dentro de sua própria interface.

Chucker é distribuído pelo Maven Central. Para usá -lo, você precisa adicionar a seguinte dependência gradle ao arquivo build.gradle do seu módulo de aplicativo Android (não o arquivo root).
Observe que você deve adicionar a library e a variante da library-no-op para isolar o Chucker das construções de liberação da seguinte forma:
dependencies {
debugImplementation " com.github.chuckerteam.chucker:library:4.1.0 "
releaseImplementation " com.github.chuckerteam.chucker:library-no-op:4.1.0 "
} Para começar a usar o Chucker, basta conectar um novo ChuckerInterceptor ao seu Okhttp Client Builder:
val client = OkHttpClient . Builder ()
.addInterceptor( ChuckerInterceptor (context))
.build()É isso! ? Chucker agora registrará todas as interações HTTP feitas pelo seu cliente OKHTTP.
Historicamente, Chucker foi distribuído através de Jitpack. Você pode encontrar a versão mais antiga do Chucker aqui :.
Não se esqueça de verificar o Changelog para dar uma olhada em todas as mudanças na versão mais recente do Chucker.
implementation gradle).A atividade principal do Chucker é lançada em sua própria tarefa, permitindo que ela seja exibida ao lado da interface do usuário do aplicativo host usando o suporte Android 7.x Multi-Window.

Você pode personalizar Chucker fornecendo uma instância de um ChuckerCollector :
// Create the Collector
val chuckerCollector = ChuckerCollector (
context = this ,
// Toggles visibility of the notification
showNotification = true ,
// Allows to customize the retention period of collected data
retentionPeriod = RetentionManager . Period . ONE_HOUR
)
// Create the Interceptor
val chuckerInterceptor = ChuckerInterceptor . Builder (context)
// The previously created Collector
.collector(chuckerCollector)
// The max body content length in bytes, after this responses will be truncated.
.maxContentLength( 250_000L )
// List of headers to replace with ** in the Chucker UI
.redactHeaders( " Auth-Token " , " Bearer " )
// Read the whole response body even when the client does not consume the response completely.
// This is useful in case of parsing errors or when the response body
// is closed before being read like in Retrofit with Void and Unit types.
.alwaysReadResponseBody( true )
// Use decoder when processing request and response bodies. When multiple decoders are installed they
// are applied in an order they were added.
.addBodyDecoder(decoder)
// Controls Android shortcut creation.
.createShortcut( true )
.build()
// Don't forget to plug the ChuckerInterceptor inside the OkHttpClient
val client = OkHttpClient . Builder ()
.addInterceptor(chuckerInterceptor)
.build()AVISO Os dados gerados e armazenados ao usar Chucker podem conter informações confidenciais, como autorização ou cabeçalhos de cookies, e o conteúdo dos órgãos de solicitação e resposta.
Destina -se ao uso durante o desenvolvimento , e não em construções de liberação ou outras implantações de produção.
Você pode redigir cabeçalhos que contêm informações confidenciais chamando redactHeader(String) no ChuckerInterceptor .
interceptor.redactHeader( " Auth-Token " , " User-Session " );Chucker, por padrão, alça apenas o texto simples, o GZIP comprimido ou o Brotli comprimido. Se você usar um formato binário como, por exemplo, protobuf ou Thrift, ele não será tratado automaticamente por Chucker. Você pode, no entanto, instalar um decodificador personalizado capaz de ler dados de diferentes codificações.
object ProtoDecoder : BodyDecoder {
fun decodeRequest ( request : Request , body : ByteString ): String? = if (request.isExpectedProtoRequest) {
decodeProtoBody(body)
} else {
null
}
fun decodeResponse ( request : Response , body : ByteString ): String? = if (request.isExpectedProtoResponse) {
decodeProtoBody(body)
} else {
null
}
}
interceptorBuilder.addBodyDecoder( ProtoDecoder ).build() Começando com o Android 13, seus aplicativos precisam solicitar a permissão android.permission.POST_NOTIFICATIONS ao usuário para mostrar notificações. Como Chucker também mostra notificações para mostrar a atividade de rede, você precisa lidar com a solicitação de permissão, dependendo dos recursos do seu aplicativo. Sem essa permissão, Chucker rastreará a atividade da rede, mas não haverá notificações em dispositivos com o Android 13 e mais recentes.
Existem 2 casos possíveis:
android.permission.POST_NOTIFICATIONS a permissão será concedida ao seu aplicativo.Allow na caixa de diálogo com solicitação de permissão. Caso você não permita essa permissão ou descarte essa caixa de diálogo por engano, em todos os lançamentos de Chucker, haverá um Snackbar com um botão para abrir as configurações do seu aplicativo, onde você pode alterar as configurações de permissões. Observe que você precisa conceder android.permission.POST_NOTIFICATIONS ao seu aplicativo nas configurações, pois não haverá aplicativos separados na lista de aplicativos nas configurações. Se você estiver migrando de Chuck para Chucker , consulte este guia de migração.
Se você estiver migrando de Chucker v2.0 para v3.0 , espere várias mudanças de ruptura. Você pode encontrar documentação sobre como atualizar seu código neste outro guia de migração.
O desenvolvimento de Chucker acontece no ramo main . Cada empurrão para main desencadeará uma publicação de um artefato SNAPSHOT para a próxima versão. Você pode obter esses artefatos de instantâneos diretamente do Sonatype com:
repositories {
maven { url " https://oss.sonatype.org/content/repositories/snapshots/ " }
}
dependencies {
debugImplementation " com.github.chuckerteam.chucker:library:4.2.0-SNAPSHOT "
releaseImplementation " com.github.chuckerteam.chucker:library-no-op:4.2.0-SNAPSHOT "
} Além disso, você ainda pode usar o Jitpack, pois ele constrói todas as ramificações. Portanto, o topo do main está disponível aqui:
repositories {
maven { url " https://jitpack.io " }
}
dependencies {
debugImplementation " com.github.chuckerteam.chucker:library:main-SNAPSHOT "
releaseImplementation " com.github.chuckerteam.chucker:library-no-op:main-SNAPSHOT "
} Se você está procurando a versão estável mais recente , sempre pode encontrá -la na seção Releases .
Content-Encoding ou Accept-Encoding ) estão faltando?Consulte esta seção da documentação OKHTTP. Você pode optar por usar o Chucker como um aplicativo ou interceptador de rede, dependendo dos seus requisitos.
Para acompanhar as alterações no OKHTTP, decidimos aumentar sua versão na versão 4.x O Chucker 3.5.x suporta o Android 16+, mas seu desenvolvimento ativo parou e apenas as correções de bugs e pequenas melhorias chegarão a 3.x ramo até março de 2021.
Chucker é mantido e melhorado durante as noites, fins de semana e sempre que a equipe tem tempo livre. Se você usar o Chucker em seu projeto, considere nos patrocinar. Isso nos ajudará a comprar um domínio para um site que teremos em breve e também gastará algum dinheiro com caridade. Além disso, o patrocínio também nos ajudará a entender melhor o quão valioso Chucker é para o trabalho cotidiano das pessoas.
Você pode nos patrocinar clicando no botão Sponsor .
Estamos oferecendo suporte ao Chucker no canal #Chucker em kotlinlang.slack.com. Venha e junte -se à conversa lá.
Estamos procurando contribuidores! Não seja tímido. ? Sinta -se à vontade para abrir problemas/puxar solicitações para nos ajudar a melhorar este projeto.
Lista TODO para novos colaboradores:
Help wantedPara começar a trabalhar em Chucker, você precisa espalhar o projeto e abri -lo no Android Studio/Intellij Idea.
Antes de cometer, sugerimos que você instale os ganchos de pré-compromisso com o seguinte comando:
./gradlew installGitHook
Isso garantirá que seu código seja validado contra o KTLINT e o Detekt antes de cada compromisso. O comando será executado automaticamente antes da tarefa clean , portanto, você deve ter o gancho de pré-compromisso instalado até então.
Antes de enviar um PR, corra:
./gradlew build
Isso construirá a biblioteca e executará todas as tarefas de verificação (KTLINT, DetEkt, Testes de unidade) localmente. Isso garantirá que seus cheques de CI passem.
Chucker é atualmente desenvolvido e mantido pelo ChuckerTeam. Ao enviar um novo PR, por favor, ping em um de:
Muito obrigado aos nossos colaboradores ❤️
Chucker usa as seguintes bibliotecas de código aberto:
Copyright (C) 2018-2021 Chucker Team.
Copyright (C) 2017 Jeff Gilfelt.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.